diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/EntityAdaptorRelationsLoader.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/EntityAdaptorRelationsLoader.java index 5a8353eb409470bf48e05e1edfd7680c7b8fbb08..39dd0d0fea6452b72caedbf6557041a99e6ac8d4 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/EntityAdaptorRelationsLoader.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/EntityAdaptorRelationsLoader.java @@ -72,14 +72,14 @@ public class EntityAdaptorRelationsLoader return Collections.emptyList(); } else { - List<Long> parentIds = + List<Long> entityIds = entityIdsOfTypesLoader.loadEntityIdsOfTypes(entityId, matchingTypeIds); - if (parentIds != null && parentIds.size() > 0) + if (entityIds != null && entityIds.size() > 0) { Criteria criteria = session.createCriteria(entityClass); criteria.setFetchSize(10); - criteria.add(Restrictions.in("id", parentIds)); + criteria.add(Restrictions.in("id", entityIds)); ScrollableResults results = criteria.scroll(ScrollMode.FORWARD_ONLY); return new EntityAdaptorIterator<T>(results, evaluator, session); } else diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTest.java b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTest.java index e483c2e9e0be8826cfc66d0b1a9beb6ace6abb86..da8cab248d9aba64774c40a8c43c437a43e2e7cc 100644 --- a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTest.java +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTest.java @@ -16,6 +16,8 @@ package ch.systemsx.cisd.openbis.systemtest.server; +import java.lang.reflect.Method; + import junit.framework.Assert; import org.apache.log4j.Level; @@ -28,7 +30,6 @@ import org.testng.annotations.Test; import ch.systemsx.cisd.common.filesystem.FileUtilities; import ch.systemsx.cisd.common.logging.BufferedAppender; -import ch.systemsx.cisd.common.test.AssertionUtil; import ch.systemsx.cisd.common.utilities.TestResources; import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.ExperimentAdaptor; import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.ExternalDataAdaptor; @@ -63,17 +64,19 @@ public class CommonServerTest extends SystemTestCase } @BeforeMethod - public void beforeMethod() + public void beforeMethod(Method method) { sessionToken = commonServer.tryAuthenticate("test", "a").getSessionToken(); logRecorder = new BufferedAppender("%-5p %c - %m%n", Level.DEBUG); + System.out.println(">>>>>>>>> BEFORE METHOD: " + method.getName()); } @AfterMethod - public void afterMethod() + public void afterMethod(Method method) { logRecorder.reset(); commonServer.logout(sessionToken); + System.out.println("<<<<<<<<< AFTER METHOD: " + method.getName()); } @Test @@ -81,7 +84,7 @@ public class CommonServerTest extends SystemTestCase { testAdaptorCommon(EntityKind.EXPERIMENT, "/CISD/DEFAULT/EXP-REUSE", "experiment_adaptor_test.py"); - assertEntitiesReleased(EntityKind.EXPERIMENT, "EXP-REUSE"); + assertEntitiesReleased(EntityKind.EXPERIMENT, 1); } @Test @@ -89,8 +92,8 @@ public class CommonServerTest extends SystemTestCase { testAdaptorCommon(EntityKind.EXPERIMENT, "/CISD/DEFAULT/EXP-REUSE", "experiment_adaptor_test__samples.py"); - assertEntitiesReleased(EntityKind.EXPERIMENT, "EXP-REUSE"); - assertEntitiesReleased(EntityKind.SAMPLE, "CP1-A1", "CP1-A2", "CP1-B1", "CP2-A1", "RP1-A2X", "RP1-B1X", "RP2-A1X"); + assertEntitiesReleased(EntityKind.EXPERIMENT, 1); + assertEntitiesReleased(EntityKind.SAMPLE, 14); assertScrollableResultsReleased(3); } @@ -99,54 +102,73 @@ public class CommonServerTest extends SystemTestCase { testAdaptorCommon(EntityKind.EXPERIMENT, "/CISD/DEFAULT/EXP-REUSE", "experiment_adaptor_test__datasets.py"); + assertEntitiesReleased(EntityKind.EXPERIMENT, 1); + assertEntitiesReleased(EntityKind.DATA_SET, 23); + assertScrollableResultsReleased(2); } @Test public void testSampleAdaptor() { testAdaptorCommon(EntityKind.SAMPLE, "/CISD/CP-TEST-1", "sample_adaptor_test.py"); + assertEntitiesReleased(EntityKind.SAMPLE, 1); } @Test public void testSampleAdaptorExperiment() { testAdaptorCommon(EntityKind.SAMPLE, "/CISD/3VCP6", "sample_adaptor_test__experiment.py"); + assertEntitiesReleased(EntityKind.SAMPLE, 1); + assertEntitiesReleased(EntityKind.EXPERIMENT, 1); } @Test public void testSampleAdaptorParents() { testAdaptorCommon(EntityKind.SAMPLE, "/CISD/3VCP6", "sample_adaptor_test__parents.py"); + assertEntitiesReleased(EntityKind.SAMPLE, 5); + // scrollable result is not created for empty result + assertScrollableResultsReleased(3); } @Test public void testSampleAdaptorChildren() { testAdaptorCommon(EntityKind.SAMPLE, "/CISD/DP1-A", "sample_adaptor_test__children.py"); + assertEntitiesReleased(EntityKind.SAMPLE, 5); + // scrollable result is not created for empty result + assertScrollableResultsReleased(2); } @Test public void testSampleAdaptorDataSets() { testAdaptorCommon(EntityKind.SAMPLE, "/CISD/CP-TEST-3", "sample_adaptor_test__datasets.py"); + assertEntitiesReleased(EntityKind.SAMPLE, 1); + assertEntitiesReleased(EntityKind.DATA_SET, 4); + assertScrollableResultsReleased(3); } @Test public void testSampleAdaptorContainer() { testAdaptorCommon(EntityKind.SAMPLE, "/CISD/CL1:A01", "sample_adaptor_test__container.py"); + assertEntitiesReleased(EntityKind.SAMPLE, 2); } @Test public void testSampleAdaptorContained() { testAdaptorCommon(EntityKind.SAMPLE, "/CISD/CL1", "sample_adaptor_test__contained.py"); + assertEntitiesReleased(EntityKind.SAMPLE, 5); + assertScrollableResultsReleased(3); } @Test public void testDataSetAdaptor() { testAdaptorCommon(EntityKind.DATA_SET, "20081105092159111-1", "dataset_adaptor_test.py"); + assertEntitiesReleased(EntityKind.DATA_SET, 1); } @Test @@ -154,6 +176,8 @@ public class CommonServerTest extends SystemTestCase { testAdaptorCommon(EntityKind.DATA_SET, "20081105092159188-3", "dataset_adaptor_test__experiment.py"); + assertEntitiesReleased(EntityKind.DATA_SET, 1); + assertEntitiesReleased(EntityKind.EXPERIMENT, 1); } @Test @@ -161,6 +185,8 @@ public class CommonServerTest extends SystemTestCase { testAdaptorCommon(EntityKind.DATA_SET, "20081105092159222-2", "dataset_adaptor_test__sample.py"); + assertEntitiesReleased(EntityKind.DATA_SET, 1); + assertEntitiesReleased(EntityKind.SAMPLE, 1); } @Test @@ -168,6 +194,9 @@ public class CommonServerTest extends SystemTestCase { testAdaptorCommon(EntityKind.DATA_SET, "20081105092259000-9", "dataset_adaptor_test__parents.py"); + assertEntitiesReleased(EntityKind.DATA_SET, 7); + // scrollable result is not created for empty result + assertScrollableResultsReleased(2); } @Test @@ -175,6 +204,9 @@ public class CommonServerTest extends SystemTestCase { testAdaptorCommon(EntityKind.DATA_SET, "20081105092259000-9", "dataset_adaptor_test__children.py"); + assertEntitiesReleased(EntityKind.DATA_SET, 5); + // scrollable result is not created for empty result + assertScrollableResultsReleased(2); } @Test @@ -182,6 +214,7 @@ public class CommonServerTest extends SystemTestCase { testAdaptorCommon(EntityKind.DATA_SET, "20110509092359990-11", "dataset_adaptor_test__container.py"); + assertEntitiesReleased(EntityKind.DATA_SET, 2); } @Test @@ -189,12 +222,15 @@ public class CommonServerTest extends SystemTestCase { testAdaptorCommon(EntityKind.DATA_SET, "20110509092359990-10", "dataset_adaptor_test__contained.py"); + assertEntitiesReleased(EntityKind.DATA_SET, 5); + assertScrollableResultsReleased(3); } @Test public void testMaterialAdaptor() { testAdaptorCommon(EntityKind.MATERIAL, "C-NO-TIME (CONTROL)", "material_adaptor_test.py"); + assertEntitiesReleased(EntityKind.MATERIAL, 1); } private void testAdaptorCommon(EntityKind entityKind, String entityIdentifier, String scriptName) @@ -212,7 +248,7 @@ public class CommonServerTest extends SystemTestCase Assert.assertEquals("Validation OK", result); } - private void assertEntitiesReleased(EntityKind kind, String... codes) + private void assertEntitiesReleased(EntityKind kind, int count) { Class<?> adaptorClass = null; @@ -233,23 +269,34 @@ public class CommonServerTest extends SystemTestCase throw new RuntimeException("Unsupported entity kind: " + kind); } - for (String code : codes) + String[] lines = logRecorder.getLogContent().split("\n"); + int actualCount = 0; + + for (String line : lines) { - AssertionUtil.assertContainsLines("DEBUG OPERATION.Resources - Successfully released a resource: " + adaptorClass.getSimpleName() - + "{code=" - + code + "}", - logRecorder.getLogContent()); + if (line.startsWith("DEBUG OPERATION.Resources - Successfully released a resource: " + adaptorClass.getSimpleName())) + { + actualCount++; + } } + + Assert.assertEquals(count, actualCount); } private void assertScrollableResultsReleased(int count) { - StringBuilder expected = new StringBuilder(); - for (int i = 0; i < count; i++) + String[] lines = logRecorder.getLogContent().split("\n"); + int actualCount = 0; + + for (String line : lines) { - expected.append("DEBUG OPERATION.Resources - Successfully released a resource: ScrollableResultsIterator.ScrollableResultReleasable{}\n"); + if (line.equals("DEBUG OPERATION.Resources - Successfully released a resource: ScrollableResultsIterator.ScrollableResultReleasable{}")) + { + actualCount++; + } } - AssertionUtil.assertContainsLines(expected.toString(), logRecorder.getLogContent()); + + Assert.assertEquals(count, actualCount); } } \ No newline at end of file