Skip to content
Snippets Groups Projects
Commit 1ef85ee7 authored by buczekp's avatar buczekp
Browse files

[LMS-1644] more tests for sample listing

SVN: 17192
parent 1920b763
No related branches found
No related tags found
No related merge requests found
...@@ -29,8 +29,6 @@ import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SpaceWithProjectsAndRo ...@@ -29,8 +29,6 @@ import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.SpaceWithProjectsAndRo
import ch.systemsx.cisd.openbis.generic.shared.dto.Session; import ch.systemsx.cisd.openbis.generic.shared.dto.Session;
/** /**
*
*
* @author Franz-Josef Elmer * @author Franz-Josef Elmer
*/ */
class GeneralInformationServiceLogger extends AbstractServerLogger implements class GeneralInformationServiceLogger extends AbstractServerLogger implements
...@@ -46,7 +44,7 @@ class GeneralInformationServiceLogger extends AbstractServerLogger implements ...@@ -46,7 +44,7 @@ class GeneralInformationServiceLogger extends AbstractServerLogger implements
{ {
return null; return null;
} }
public Map<String, Set<Role>> listNamedRoleSets(String sessionToken) public Map<String, Set<Role>> listNamedRoleSets(String sessionToken)
{ {
logAccess(sessionToken, "list-role-sets"); logAccess(sessionToken, "list-role-sets");
......
...@@ -96,7 +96,7 @@ public interface ISampleListingQuery extends TransactionQuery, IPropertyListingQ ...@@ -96,7 +96,7 @@ public interface ISampleListingQuery extends TransactionQuery, IPropertyListingQ
/** /**
* Returns the parent sample ids of the specified children sample ids in specified relationship. * Returns the parent sample ids of the specified children sample ids in specified relationship.
*/ */
@Select(sql = "SELECT sample_id_child, sample_id_parent FROM sample_relationships " @Select(sql = "SELECT * FROM sample_relationships "
+ " WHERE relationship_id=?{1} AND sample_id_child = any(?{2})", parameterBindings = + " WHERE relationship_id=?{1} AND sample_id_child = any(?{2})", parameterBindings =
{ TypeMapper.class/* default */, LongSetMapper.class }, fetchSize = FETCH_SIZE) { TypeMapper.class/* default */, LongSetMapper.class }, fetchSize = FETCH_SIZE)
public DataIterator<SampleRelationRecord> getParentRelations(long relationshipId, public DataIterator<SampleRelationRecord> getParentRelations(long relationshipId,
......
...@@ -26,6 +26,8 @@ import ch.rinn.restrictions.Private; ...@@ -26,6 +26,8 @@ import ch.rinn.restrictions.Private;
@Private @Private
public class SampleRelationRecord public class SampleRelationRecord
{ {
public long relationship_id;
public long sample_id_parent; public long sample_id_parent;
public long sample_id_child; public long sample_id_child;
......
...@@ -22,6 +22,9 @@ import static org.testng.AssertJUnit.assertEquals; ...@@ -22,6 +22,9 @@ import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertNotNull; import static org.testng.AssertJUnit.assertNotNull;
import static org.testng.AssertJUnit.assertNull; import static org.testng.AssertJUnit.assertNull;
import static org.testng.AssertJUnit.assertTrue; import static org.testng.AssertJUnit.assertTrue;
import static org.testng.AssertJUnit.fail;
import it.unimi.dsi.fastutil.longs.LongOpenHashSet;
import it.unimi.dsi.fastutil.longs.LongSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.Arrays; import java.util.Arrays;
...@@ -71,6 +74,12 @@ public class SampleListingQueryTest extends AbstractDAOTest ...@@ -71,6 +74,12 @@ public class SampleListingQueryTest extends AbstractDAOTest
private static final String SAMPLE_TYPE_CODE_CELL_PLATE = "CELL_PLATE"; private static final String SAMPLE_TYPE_CODE_CELL_PLATE = "CELL_PLATE";
private static final String DEFAULT_SPACE_CODE = "CISD";
private static final String DILUTION_PLATE_CODE_1 = "3V-123";
private static final String DILUTION_PLATE_CODE_2 = "3V-125";
private long dbInstanceId; private long dbInstanceId;
private DatabaseInstancePE dbInstance; private DatabaseInstancePE dbInstance;
...@@ -85,6 +94,12 @@ public class SampleListingQueryTest extends AbstractDAOTest ...@@ -85,6 +94,12 @@ public class SampleListingQueryTest extends AbstractDAOTest
private SamplePE sharedMasterPlate; private SamplePE sharedMasterPlate;
private SamplePE dilutionPlate1;
private SamplePE dilutionPlate2;
private long parentChildRelationshipTypeId;
private ISampleListingQuery query; private ISampleListingQuery query;
@BeforeClass(alwaysRun = true) @BeforeClass(alwaysRun = true)
...@@ -93,7 +108,9 @@ public class SampleListingQueryTest extends AbstractDAOTest ...@@ -93,7 +108,9 @@ public class SampleListingQueryTest extends AbstractDAOTest
SampleListerDAO sampleListerDAO = createSampleListerDAO(daoFactory); SampleListerDAO sampleListerDAO = createSampleListerDAO(daoFactory);
dbInstanceId = sampleListerDAO.getDatabaseInstanceId(); dbInstanceId = sampleListerDAO.getDatabaseInstanceId();
dbInstance = daoFactory.getDatabaseInstanceDAO().getByTechId(new TechId(dbInstanceId)); dbInstance = daoFactory.getDatabaseInstanceDAO().getByTechId(new TechId(dbInstanceId));
group = daoFactory.getGroupDAO().tryFindGroupByCodeAndDatabaseInstance("CISD", dbInstance); group =
daoFactory.getGroupDAO().tryFindGroupByCodeAndDatabaseInstance(DEFAULT_SPACE_CODE,
dbInstance);
groupId = group.getId(); groupId = group.getId();
groupCode = group.getCode(); groupCode = group.getCode();
masterPlateType = masterPlateType =
...@@ -102,7 +119,9 @@ public class SampleListingQueryTest extends AbstractDAOTest ...@@ -102,7 +119,9 @@ public class SampleListingQueryTest extends AbstractDAOTest
sharedMasterPlate = sharedMasterPlate =
daoFactory.getSampleDAO().tryFindByCodeAndDatabaseInstance( daoFactory.getSampleDAO().tryFindByCodeAndDatabaseInstance(
SHARED_MASTER_PLATE_CODE, dbInstance); SHARED_MASTER_PLATE_CODE, dbInstance);
assertEquals(SHARED_MASTER_PLATE_ID, sharedMasterPlate.getId().longValue());
query = sampleListerDAO.getQuery(); query = sampleListerDAO.getQuery();
parentChildRelationshipTypeId = query.getRelationshipTypeId("PARENT_CHILD", true);
} }
@AfterClass(alwaysRun = true) @AfterClass(alwaysRun = true)
...@@ -121,6 +140,74 @@ public class SampleListingQueryTest extends AbstractDAOTest ...@@ -121,6 +140,74 @@ public class SampleListingQueryTest extends AbstractDAOTest
return SampleListerDAO.create(daoFactory, query); return SampleListerDAO.create(daoFactory, query);
} }
@Test
public void testSampleCount()
{
assertEquals(1020, query.getSampleCount(dbInstanceId));
}
@Test
public void testGetRelationshipTypeId()
{
assertEquals(1, query.getRelationshipTypeId("PARENT_CHILD", true));
assertEquals(2, query.getRelationshipTypeId("PLATE_CONTROL_LAYOUT", true));
assertRelationshipTypeNotExists("FAKE_RELATIONSHIP", true);
assertRelationshipTypeNotExists("PARENT_CHILD", false);
assertRelationshipTypeNotExists("PLATE_CONTROL_LAYOUT", false);
assertRelationshipTypeNotExists("FAKE_RELATIONSHIP", false);
}
private void assertRelationshipTypeNotExists(String code, boolean internalNamespace)
{
try
{
long id = query.getRelationshipTypeId(code, internalNamespace);
fail("unexpected " + (internalNamespace ? "internal" : "user defined")
+ " relationship found with code " + code + " and id " + id);
} catch (NullPointerException e)
{
}
}
@Test
public void testGetParentRelations()
{
dilutionPlate1 =
daoFactory.getSampleDAO().tryFindByCodeAndGroup(DILUTION_PLATE_CODE_1, group);
dilutionPlate2 =
daoFactory.getSampleDAO().tryFindByCodeAndGroup(DILUTION_PLATE_CODE_2, group);
final int children1 = 2;
final int children2 = 6;
assertEquals(children1, dilutionPlate1.getGenerated().size());
assertEquals(children2, dilutionPlate2.getGenerated().size());
LongSet dilutionPlateIdSet = new LongOpenHashSet(new long[]
{ dilutionPlate1.getId(), dilutionPlate2.getId() });
LongSet childrenIds =
new LongOpenHashSet(query.getChildrenIds(parentChildRelationshipTypeId,
dilutionPlateIdSet));
assertEquals(8, childrenIds.size());
int sampleCount1 = 0;
int sampleCount2 = 0;
for (SampleRelationRecord sample : query.getParentRelations(parentChildRelationshipTypeId,
childrenIds))
{
assertEquals(parentChildRelationshipTypeId, sample.relationship_id);
if (dilutionPlate1.getId().equals(sample.sample_id_parent))
{
sampleCount1++;
} else if (dilutionPlate2.getId().equals(sample.sample_id_parent))
{
sampleCount2++;
} else
{
fail("unexpected sample parent id: " + sample.sample_id_parent + " for child id: "
+ sample.sample_id_child);
}
}
assertEquals(children1, sampleCount1);
assertEquals(children2, sampleCount2);
}
@Test(groups = "slow") @Test(groups = "slow")
public void testQuerySamples() public void testQuerySamples()
{ {
...@@ -153,20 +240,6 @@ public class SampleListingQueryTest extends AbstractDAOTest ...@@ -153,20 +240,6 @@ public class SampleListingQueryTest extends AbstractDAOTest
{ {
assertEquals(msg, samplePE.getInvalidation().getId(), sample.inva_id); assertEquals(msg, samplePE.getInvalidation().getId(), sample.inva_id);
} }
// FIXME
// if (samplePE.getGeneratedFrom() == null)
// {
// assertNull(msg, sample.samp_id_generated_from);
// } else
// {
// // Work around Hibernate peculiarity
// Long idGeneratedFrom = samplePE.getGeneratedFrom().getId();
// if (idGeneratedFrom == null)
// {
// idGeneratedFrom = HibernateUtils.getId(samplePE.getGeneratedFrom());
// }
// assertEquals(msg, idGeneratedFrom, sample.samp_id_generated_from);
// }
if (samplePE.getContainer() == null) if (samplePE.getContainer() == null)
{ {
assertNull(msg, sample.samp_id_part_of); assertNull(msg, sample.samp_id_part_of);
...@@ -208,11 +281,9 @@ public class SampleListingQueryTest extends AbstractDAOTest ...@@ -208,11 +281,9 @@ public class SampleListingQueryTest extends AbstractDAOTest
assertEquals(2, sample.pers_id_registerer); assertEquals(2, sample.pers_id_registerer);
assertEquals(sampleTypeId, sample.saty_id); assertEquals(sampleTypeId, sample.saty_id);
assertNotNull(sample.perm_id); assertNotNull(sample.perm_id);
// assertNull(sample.samp_id_generated_from); FIXME
assertNull(sample.samp_id_part_of); assertNull(sample.samp_id_part_of);
SampleRecord sample2 = findCode(samples, "3VCP1"); SampleRecord sample2 = findCode(samples, "3VCP1");
// assertNotNull(sample2.samp_id_generated_from); FIXME
assertNull(sample2.samp_id_part_of); assertNull(sample2.samp_id_part_of);
} }
......
...@@ -16,7 +16,9 @@ ...@@ -16,7 +16,9 @@
package ch.systemsx.cisd.openbis.generic.server.business.bo.samplelister; package ch.systemsx.cisd.openbis.generic.server.business.bo.samplelister;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertNotNull; import static org.testng.AssertJUnit.assertNotNull;
import static org.testng.AssertJUnit.assertNull;
import static org.testng.AssertJUnit.assertTrue; import static org.testng.AssertJUnit.assertTrue;
import it.unimi.dsi.fastutil.longs.LongOpenHashSet; import it.unimi.dsi.fastutil.longs.LongOpenHashSet;
import it.unimi.dsi.fastutil.longs.LongSet; import it.unimi.dsi.fastutil.longs.LongSet;
...@@ -38,12 +40,22 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample; ...@@ -38,12 +40,22 @@ import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Sample;
* Test cases for the {@link SampleListingWorker}. * Test cases for the {@link SampleListingWorker}.
* *
* @author Bernd Rinn * @author Bernd Rinn
* @author Piotr Buczek
*/ */
public class SampleListingWorkerTest extends AbstractDAOTest public class SampleListingWorkerTest extends AbstractDAOTest
{ {
private final String BASE_INDEX_URL = "baseIndexURL"; private final String BASE_INDEX_URL = "baseIndexURL";
private final String SPACE_CODE = "CISD";
private final long CONTAINER_ID = 997L;
private final long PARENT_ID = 979L;
private final Long[] CHILDREN_IDS =
{ 984L, 985L, 986L, 987L, 988L, 989L };
private SampleListerDAO sampleListerDAO; private SampleListerDAO sampleListerDAO;
private SecondaryEntityDAO secondaryDAO; private SecondaryEntityDAO secondaryDAO;
...@@ -56,27 +68,49 @@ public class SampleListingWorkerTest extends AbstractDAOTest ...@@ -56,27 +68,49 @@ public class SampleListingWorkerTest extends AbstractDAOTest
} }
@Test @Test
public void testListSamplesByIdGroupNotNull() public void testListSamplesBySpace()
{
final ListSampleCriteria baseCriteria = new ListSampleCriteria();
baseCriteria.setSpaceCode(SPACE_CODE);
baseCriteria.setIncludeSpace(true);
final ListOrSearchSampleCriteria criteria = new ListOrSearchSampleCriteria(baseCriteria);
final SampleListingWorker worker =
SampleListingWorker.create(criteria, BASE_INDEX_URL, sampleListerDAO, secondaryDAO);
final List<Sample> list = worker.load();
assertTrue(list.size() > 0);
for (Sample s : list)
{
checkSpace(s);
if (Arrays.binarySearch(CHILDREN_IDS, s.getId()) >= 0)
{
checkGeneratedFrom(s);
}
}
}
@Test
public void testListSamplesById()
{ {
final LongSet sampleIds = new LongOpenHashSet(); final LongSet sampleIds = new LongOpenHashSet();
sampleIds.addAll(Arrays.asList(1L, 2L, 3L)); sampleIds.addAll(Arrays.asList(CHILDREN_IDS));
final ListOrSearchSampleCriteria criteria = new ListOrSearchSampleCriteria(sampleIds); final ListOrSearchSampleCriteria criteria = new ListOrSearchSampleCriteria(sampleIds);
final SampleListingWorker worker = final SampleListingWorker worker =
SampleListingWorker.create(criteria, BASE_INDEX_URL, sampleListerDAO, secondaryDAO); SampleListingWorker.create(criteria, BASE_INDEX_URL, sampleListerDAO, secondaryDAO);
final List<Sample> list = worker.load(); final List<Sample> list = worker.load();
assertTrue(list.size() > 0); assertEquals(CHILDREN_IDS.length, list.size());
for (Sample s : list) for (Sample s : list)
{ {
assertNotNull("ID:" + s.getId(), s.getSpace()); assertTrue(Arrays.binarySearch(CHILDREN_IDS, s.getId()) >= 0);
assertNotNull("ID:" + s.getId(), s.getSpace().getInstance()); checkSpace(s);
checkGeneratedFrom(s);
} }
} }
@Test @Test
public void testListSamplesForContainerGroupNotNull() public void testListSamplesForContainer()
{ {
final ListSampleCriteria baseCriteria = final ListSampleCriteria baseCriteria =
ListSampleCriteria.createForContainer(new TechId(997L)); ListSampleCriteria.createForContainer(new TechId(CONTAINER_ID));
final ListOrSearchSampleCriteria criteria = new ListOrSearchSampleCriteria(baseCriteria); final ListOrSearchSampleCriteria criteria = new ListOrSearchSampleCriteria(baseCriteria);
final SampleListingWorker worker = final SampleListingWorker worker =
SampleListingWorker.create(criteria, BASE_INDEX_URL, sampleListerDAO, secondaryDAO); SampleListingWorker.create(criteria, BASE_INDEX_URL, sampleListerDAO, secondaryDAO);
...@@ -84,16 +118,36 @@ public class SampleListingWorkerTest extends AbstractDAOTest ...@@ -84,16 +118,36 @@ public class SampleListingWorkerTest extends AbstractDAOTest
assertTrue(list.size() > 0); assertTrue(list.size() > 0);
for (Sample s : list) for (Sample s : list)
{ {
assertNotNull("ID:" + s.getId(), s.getSpace()); checkSpace(s);
assertNotNull("ID:" + s.getId(), s.getSpace().getInstance()); assertNotNull("ID:" + s.getId(), s.getContainer());
assertEquals("ID:" + s.getId(), CONTAINER_ID, s.getContainer().getId().longValue());
} }
} }
@Test @Test
public void testListSamplesForExperimentGroupNotNull() public void testListSamplesForParent()
{ {
final ListSampleCriteria baseCriteria = final ListSampleCriteria baseCriteria =
ListSampleCriteria.createForExperiment(new TechId(2L)); ListSampleCriteria.createForParent(new TechId(PARENT_ID));
final ListOrSearchSampleCriteria criteria = new ListOrSearchSampleCriteria(baseCriteria);
final SampleListingWorker worker =
SampleListingWorker.create(criteria, BASE_INDEX_URL, sampleListerDAO, secondaryDAO);
final List<Sample> list = worker.load();
assertEquals(CHILDREN_IDS.length, list.size());
for (Sample s : list)
{
assertTrue(Arrays.binarySearch(CHILDREN_IDS, s.getId()) >= 0);
checkSpace(s);
checkGeneratedFrom(s);
}
}
@Test
public void testListSamplesForExperiment()
{
final long expId = 2L;
final ListSampleCriteria baseCriteria =
ListSampleCriteria.createForExperiment(new TechId(expId));
final ListOrSearchSampleCriteria criteria = new ListOrSearchSampleCriteria(baseCriteria); final ListOrSearchSampleCriteria criteria = new ListOrSearchSampleCriteria(baseCriteria);
final SampleListingWorker worker = final SampleListingWorker worker =
SampleListingWorker.create(criteria, BASE_INDEX_URL, sampleListerDAO, secondaryDAO); SampleListingWorker.create(criteria, BASE_INDEX_URL, sampleListerDAO, secondaryDAO);
...@@ -101,8 +155,24 @@ public class SampleListingWorkerTest extends AbstractDAOTest ...@@ -101,8 +155,24 @@ public class SampleListingWorkerTest extends AbstractDAOTest
assertTrue(list.size() > 0); assertTrue(list.size() > 0);
for (Sample s : list) for (Sample s : list)
{ {
assertNotNull("ID:" + s.getId(), s.getSpace()); checkSpace(s);
assertNotNull("ID:" + s.getId(), s.getSpace().getInstance()); assertNotNull("ID:" + s.getId(), s.getExperiment());
assertEquals("ID:" + s.getId(), expId, s.getExperiment().getId().longValue());
} }
} }
private void checkSpace(Sample s)
{
assertNotNull("ID:" + s.getId(), s.getSpace());
assertNotNull("ID:" + s.getId(), s.getSpace().getInstance());
assertEquals("ID:" + s.getId(), SPACE_CODE, s.getSpace().getCode());
}
private void checkGeneratedFrom(Sample s)
{
assertNotNull("ID:" + s.getId(), s.getGeneratedFrom());
assertEquals("ID:" + s.getId(), PARENT_ID, s.getGeneratedFrom().getId().longValue());
assertNotNull("ID:" + s.getId(), s.getGeneratedFrom().getGeneratedFrom());
assertNull("ID:" + s.getId(), s.getGeneratedFrom().getGeneratedFrom().getGeneratedFrom());
}
} }
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