Skip to content
Snippets Groups Projects
Commit 87554779 authored by pkupczyk's avatar pkupczyk
Browse files

SP-864 / BIS-531 : Novartis, BSSE#1029353 - Too many open files error - unit...

SP-864 / BIS-531 : Novartis, BSSE#1029353 - Too many open files error - unit tests of releasing resources in python scripts

SVN: 29777
parent 0fcf4704
No related branches found
No related tags found
No related merge requests found
......@@ -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
......
......@@ -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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment