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

SSDM-2497 : V3 AS API - improve performance of searchDataSets - test DataSet...

SSDM-2497 : V3 AS API - improve performance of searchDataSets - test DataSet base fields, type base fields, move external data to map executor

SVN: 34755
parent 1644d83f
No related branches found
No related tags found
No related merge requests found
...@@ -17,6 +17,8 @@ ...@@ -17,6 +17,8 @@
package ch.ethz.sis.openbis.systemtest.api.v3; package ch.ethz.sis.openbis.systemtest.api.v3;
import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertTrue;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
...@@ -27,17 +29,27 @@ import java.util.Set; ...@@ -27,17 +29,27 @@ import java.util.Set;
import org.testng.annotations.Test; import org.testng.annotations.Test;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.dataset.ArchivingStatus;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.dataset.Complete;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.dataset.DataSet; import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.dataset.DataSet;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.dataset.DataSetKind; import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.dataset.DataSetKind;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.dataset.DataSetUpdate; import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.dataset.DataSetUpdate;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.dataset.ExternalData;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.dataset.FileFormatType;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.dataset.LocatorType;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.history.DataSetRelationType; import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.history.DataSetRelationType;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.history.HistoryEntry; import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.history.HistoryEntry;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.history.PropertyHistoryEntry; import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.history.PropertyHistoryEntry;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.history.RelationHistoryEntry; import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.history.RelationHistoryEntry;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.material.Material; import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.material.Material;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.tag.Tag; import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.tag.Tag;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.vocabulary.Vocabulary;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.vocabulary.VocabularyTerm;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.fetchoptions.dataset.DataSetFetchOptions; import ch.ethz.sis.openbis.generic.shared.api.v3.dto.fetchoptions.dataset.DataSetFetchOptions;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.fetchoptions.dataset.ExternalDataFetchOptions;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.fetchoptions.tag.TagFetchOptions; import ch.ethz.sis.openbis.generic.shared.api.v3.dto.fetchoptions.tag.TagFetchOptions;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.fetchoptions.vocabulary.VocabularyFetchOptions;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.fetchoptions.vocabulary.VocabularyTermFetchOptions;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.id.dataset.DataSetPermId; import ch.ethz.sis.openbis.generic.shared.api.v3.dto.id.dataset.DataSetPermId;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.id.dataset.IDataSetId; import ch.ethz.sis.openbis.generic.shared.api.v3.dto.id.dataset.IDataSetId;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.id.experiment.ExperimentIdentifier; import ch.ethz.sis.openbis.generic.shared.api.v3.dto.id.experiment.ExperimentIdentifier;
...@@ -163,6 +175,9 @@ public class MapDataSetTest extends AbstractDataSetTest ...@@ -163,6 +175,9 @@ public class MapDataSetTest extends AbstractDataSetTest
assertEqualsDate(dataSet.getAccessDate(), "2011-04-01 09:56:25"); assertEqualsDate(dataSet.getAccessDate(), "2011-04-01 09:56:25");
assertEqualsDate(dataSet.getModificationDate(), "2009-03-23 15:34:44"); assertEqualsDate(dataSet.getModificationDate(), "2009-03-23 15:34:44");
assertEqualsDate(dataSet.getRegistrationDate(), "2009-02-09 12:20:21"); assertEqualsDate(dataSet.getRegistrationDate(), "2009-02-09 12:20:21");
assertEquals(dataSet.isDerived(), Boolean.FALSE);
assertEquals(dataSet.isPlaceholder(), Boolean.FALSE);
assertEquals(dataSet.isPostRegistered(), Boolean.TRUE);
assertTypeNotFetched(dataSet); assertTypeNotFetched(dataSet);
assertExternalDataNotFetched(dataSet); assertExternalDataNotFetched(dataSet);
...@@ -202,6 +217,7 @@ public class MapDataSetTest extends AbstractDataSetTest ...@@ -202,6 +217,7 @@ public class MapDataSetTest extends AbstractDataSetTest
assertEquals(dataSet.getType().getPermId().getPermId(), "HCS_IMAGE"); assertEquals(dataSet.getType().getPermId().getPermId(), "HCS_IMAGE");
assertEquals(dataSet.getType().getDescription(), "High Content Screening Image"); assertEquals(dataSet.getType().getDescription(), "High Content Screening Image");
assertEquals(dataSet.getType().getKind(), DataSetKind.PHYSICAL); assertEquals(dataSet.getType().getKind(), DataSetKind.PHYSICAL);
assertEqualsDate(dataSet.getType().getModificationDate(), "2009-03-23 15:34:44");
assertExternalDataNotFetched(dataSet); assertExternalDataNotFetched(dataSet);
assertExperimentNotFetched(dataSet); assertExperimentNotFetched(dataSet);
...@@ -221,6 +237,7 @@ public class MapDataSetTest extends AbstractDataSetTest ...@@ -221,6 +237,7 @@ public class MapDataSetTest extends AbstractDataSetTest
assertEquals(dataSet2.getType().getPermId().getPermId(), "CONTAINER_TYPE"); assertEquals(dataSet2.getType().getPermId().getPermId(), "CONTAINER_TYPE");
assertEquals(dataSet2.getType().getDescription(), "A container (virtual) data set type"); assertEquals(dataSet2.getType().getDescription(), "A container (virtual) data set type");
assertEquals(dataSet2.getType().getKind(), DataSetKind.CONTAINER); assertEquals(dataSet2.getType().getKind(), DataSetKind.CONTAINER);
assertEqualsDate(dataSet2.getType().getModificationDate(), "2011-05-09 12:24:44");
assertExternalDataNotFetched(dataSet2); assertExternalDataNotFetched(dataSet2);
assertExperimentNotFetched(dataSet2); assertExperimentNotFetched(dataSet2);
...@@ -498,27 +515,63 @@ public class MapDataSetTest extends AbstractDataSetTest ...@@ -498,27 +515,63 @@ public class MapDataSetTest extends AbstractDataSetTest
} }
@Test @Test
public void testMapWithExternalData() public void testMapWithExternalDataForPhysicalDataSet()
{ {
String sessionToken = v3api.login(TEST_USER, PASSWORD); String sessionToken = v3api.login(TEST_USER, PASSWORD);
DataSetPermId permId = new DataSetPermId("20081105092159111-1"); DataSetPermId permId = new DataSetPermId("20081105092159111-1");
DataSetFetchOptions fetchOptions = new DataSetFetchOptions(); DataSetFetchOptions fetchOptions = new DataSetFetchOptions();
fetchOptions.withExternalData();
Map<IDataSetId, DataSet> map = ExternalDataFetchOptions externalDataFetchOptions = fetchOptions.withExternalData();
v3api.mapDataSets(sessionToken, Arrays.asList(permId), externalDataFetchOptions.withFileFormatType();
fetchOptions); externalDataFetchOptions.withLocatorType();
assertEquals(1, map.size()); VocabularyTermFetchOptions storageFormatTermFetchOptions = externalDataFetchOptions.withStorageFormat();
storageFormatTermFetchOptions.withRegistrator();
DataSet dataSet = map.get(permId); VocabularyFetchOptions storageFormatVocabularyFetchOptions = storageFormatTermFetchOptions.withVocabulary();
storageFormatVocabularyFetchOptions.withRegistrator();
Map<IDataSetId, DataSet> dataSets = v3api.mapDataSets(sessionToken, Arrays.asList(permId), fetchOptions);
assertEquals(dataSets.size(), 1);
DataSet dataSet = dataSets.get(permId);
assertEquals(dataSet.getCode(), "20081105092159111-1");
assertEquals(dataSet.getExternalData().getLocation(), "a/1"); ExternalData externalData = dataSet.getExternalData();
assertEquals(dataSet.getExternalData().getShareId(), "42"); assertEquals(externalData.getShareId(), "42");
assertEquals(dataSet.getExternalData().getSize(), Long.valueOf(4711)); assertEquals(externalData.getLocation(), "a/1");
assertEquals(dataSet.getExternalData().getSpeedHint(), Integer.valueOf(42)); assertEquals(externalData.getSize(), Long.valueOf(4711));
assertEquals(externalData.getComplete(), Complete.UNKNOWN);
assertEquals(externalData.getStatus(), ArchivingStatus.AVAILABLE);
assertFalse(externalData.isPresentInArchive());
assertFalse(externalData.isStorageConfirmation());
FileFormatType fileFormatType = externalData.getFileFormatType();
assertEquals(fileFormatType.getCode(), "TIFF");
assertEquals(fileFormatType.getDescription(), "TIFF File");
LocatorType locatorType = externalData.getLocatorType();
assertEquals(locatorType.getCode(), "RELATIVE_LOCATION");
assertEquals(locatorType.getDescription(), "Relative Location");
VocabularyTerm storageFormatTerm = externalData.getStorageFormat();
assertEquals(storageFormatTerm.getCode(), "PROPRIETARY");
assertEquals(storageFormatTerm.getLabel(), "proprietary label");
assertEquals(storageFormatTerm.getDescription(), "proprietary description");
assertEquals(storageFormatTerm.getOrdinal(), Long.valueOf(1));
assertTrue(storageFormatTerm.isOfficial());
assertEquals(storageFormatTerm.getRegistrator().getUserId(), "system");
assertEqualsDate(storageFormatTerm.getRegistrationDate(), "2008-11-05 09:18:00");
assertEqualsDate(storageFormatTerm.getModificationDate(), "2008-11-05 09:18:00");
Vocabulary storageFormatVocabulary = storageFormatTerm.getVocabulary();
assertEquals(storageFormatVocabulary.getCode(), "$STORAGE_FORMAT");
assertEquals(storageFormatVocabulary.getDescription(), "The on-disk storage format of a data set");
assertEquals(storageFormatVocabulary.getRegistrator().getUserId(), "system");
assertEqualsDate(storageFormatVocabulary.getRegistrationDate(), "2008-11-05 09:18:00");
assertEqualsDate(storageFormatVocabulary.getModificationDate(), "2009-03-23 15:34:44");
assertTypeNotFetched(dataSet); assertTypeNotFetched(dataSet);
assertExperimentNotFetched(dataSet); assertExperimentNotFetched(dataSet);
...@@ -531,7 +584,24 @@ public class MapDataSetTest extends AbstractDataSetTest ...@@ -531,7 +584,24 @@ public class MapDataSetTest extends AbstractDataSetTest
assertModifierNotFetched(dataSet); assertModifierNotFetched(dataSet);
assertRegistratorNotFetched(dataSet); assertRegistratorNotFetched(dataSet);
assertTagsNotFetched(dataSet); assertTagsNotFetched(dataSet);
v3api.logout(sessionToken); }
@Test
public void testMapWithExternalDataForContainerDataSet()
{
String sessionToken = v3api.login(TEST_USER, PASSWORD);
DataSetPermId permId = new DataSetPermId("ROOT_CONTAINER");
DataSetFetchOptions fetchOptions = new DataSetFetchOptions();
fetchOptions.withExternalData();
Map<IDataSetId, DataSet> dataSets = v3api.mapDataSets(sessionToken, Arrays.asList(permId), fetchOptions);
assertEquals(dataSets.size(), 1);
DataSet dataSet = dataSets.get(permId);
assertEquals(dataSet.getCode(), "ROOT_CONTAINER");
assertEquals(dataSet.getExternalData(), null);
} }
@Test @Test
......
...@@ -17,27 +17,13 @@ ...@@ -17,27 +17,13 @@
package ch.ethz.sis.openbis.systemtest.api.v3; package ch.ethz.sis.openbis.systemtest.api.v3;
import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertFalse;
import static org.testng.Assert.assertTrue;
import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.TreeMap;
import org.testng.annotations.Test; import org.testng.annotations.Test;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.dataset.ArchivingStatus;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.dataset.Complete;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.dataset.DataSet; import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.dataset.DataSet;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.dataset.ExternalData;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.dataset.FileFormatType;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.dataset.LocatorType;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.vocabulary.Vocabulary;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.entity.vocabulary.VocabularyTerm;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.fetchoptions.dataset.DataSetFetchOptions; import ch.ethz.sis.openbis.generic.shared.api.v3.dto.fetchoptions.dataset.DataSetFetchOptions;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.fetchoptions.dataset.ExternalDataFetchOptions;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.fetchoptions.vocabulary.VocabularyFetchOptions;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.fetchoptions.vocabulary.VocabularyTermFetchOptions;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.id.dataset.DataSetPermId; import ch.ethz.sis.openbis.generic.shared.api.v3.dto.id.dataset.DataSetPermId;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.id.entitytype.EntityTypePermId; import ch.ethz.sis.openbis.generic.shared.api.v3.dto.id.entitytype.EntityTypePermId;
import ch.ethz.sis.openbis.generic.shared.api.v3.dto.id.tag.TagPermId; import ch.ethz.sis.openbis.generic.shared.api.v3.dto.id.tag.TagPermId;
...@@ -219,112 +205,6 @@ public class SearchDataSetTest extends AbstractDataSetTest ...@@ -219,112 +205,6 @@ public class SearchDataSetTest extends AbstractDataSetTest
testSearch(TEST_USER, criteria, "20081105092159111-1", "20081105092159333-3", "20110805092359990-17"); testSearch(TEST_USER, criteria, "20081105092159111-1", "20081105092159333-3", "20110805092359990-17");
} }
@Test
public void testSearchWithFetchOptionExperiment()
{
DataSetSearchCriteria criteria = new DataSetSearchCriteria();
criteria.withPermId().thatEquals("20110805092359990-17");
DataSetFetchOptions fetchOptions = new DataSetFetchOptions();
fetchOptions.withExperiment().withProperties();
List<DataSet> dataSets = searchDataSets(TEST_USER, criteria, fetchOptions);
Collections.sort(dataSets, DATA_SET_COMPARATOR);
assertEquals(dataSets.get(0).getCode(), "20110805092359990-17");
assertEquals(dataSets.get(0).getPermId().toString(), "20110805092359990-17");
assertEqualsDate(dataSets.get(0).getAccessDate(), "2014-04-01 09:56:25");
assertEqualsDate(dataSets.get(0).getModificationDate(), "2009-03-23 15:34:44");
assertEqualsDate(dataSets.get(0).getRegistrationDate(), "2009-02-09 12:21:47");
assertEquals(dataSets.get(0).isDerived(), Boolean.FALSE);
assertEquals(dataSets.get(0).isPlaceholder(), Boolean.FALSE);
assertEquals(dataSets.get(0).isPostRegistered(), Boolean.TRUE);
assertParentsNotFetched(dataSets.get(0));
assertChildrenNotFetched(dataSets.get(0));
assertContainersNotFetched(dataSets.get(0));
assertContainedNotFetched(dataSets.get(0));
assertEquals(dataSets.get(0).getExperiment().getIdentifier().toString(), "/CISD/NEMO/EXP-TEST-2");
assertEquals(new TreeMap<String, String>(dataSets.get(0).getExperiment().getProperties()).toString(),
"{DESCRIPTION=very important expertiment, GENDER=FEMALE, PURCHASE_DATE=2009-02-09 10:00:00 +0100}");
assertEquals(dataSets.size(), 1);
}
@Test
public void testSearchWithFetchOptionExternalDataForPhysicalDataSet()
{
DataSetSearchCriteria criteria = new DataSetSearchCriteria();
criteria.withPermId().thatEquals("20081105092159111-1");
DataSetFetchOptions fetchOptions = new DataSetFetchOptions();
ExternalDataFetchOptions externalDataFetchOptions = fetchOptions.withExternalData();
externalDataFetchOptions.withFileFormatType();
externalDataFetchOptions.withLocatorType();
VocabularyTermFetchOptions storageFormatTermFetchOptions = externalDataFetchOptions.withStorageFormat();
storageFormatTermFetchOptions.withRegistrator();
VocabularyFetchOptions storageFormatVocabularyFetchOptions = storageFormatTermFetchOptions.withVocabulary();
storageFormatVocabularyFetchOptions.withRegistrator();
List<DataSet> dataSets = searchDataSets(TEST_USER, criteria, fetchOptions);
assertEquals(dataSets.size(), 1);
DataSet dataSet = dataSets.get(0);
assertEquals(dataSet.getCode(), "20081105092159111-1");
ExternalData externalData = dataSet.getExternalData();
assertEquals(externalData.getShareId(), "42");
assertEquals(externalData.getLocation(), "a/1");
assertEquals(externalData.getSize(), Long.valueOf(4711));
assertEquals(externalData.getComplete(), Complete.UNKNOWN);
assertEquals(externalData.getStatus(), ArchivingStatus.AVAILABLE);
assertFalse(externalData.isPresentInArchive());
assertFalse(externalData.isStorageConfirmation());
FileFormatType fileFormatType = externalData.getFileFormatType();
assertEquals(fileFormatType.getCode(), "TIFF");
assertEquals(fileFormatType.getDescription(), "TIFF File");
LocatorType locatorType = externalData.getLocatorType();
assertEquals(locatorType.getCode(), "RELATIVE_LOCATION");
assertEquals(locatorType.getDescription(), "Relative Location");
VocabularyTerm storageFormatTerm = externalData.getStorageFormat();
assertEquals(storageFormatTerm.getCode(), "PROPRIETARY");
assertEquals(storageFormatTerm.getLabel(), null);
assertEquals(storageFormatTerm.getDescription(), null);
assertEquals(storageFormatTerm.getOrdinal(), Long.valueOf(1));
assertTrue(storageFormatTerm.isOfficial());
assertEquals(storageFormatTerm.getRegistrator().getUserId(), "system");
assertEqualsDate(storageFormatTerm.getRegistrationDate(), "2008-11-05 09:18:00");
assertEqualsDate(storageFormatTerm.getModificationDate(), "2008-11-05 09:18:00");
Vocabulary storageFormatVocabulary = storageFormatTerm.getVocabulary();
assertEquals(storageFormatVocabulary.getCode(), "$STORAGE_FORMAT");
assertEquals(storageFormatVocabulary.getDescription(), "The on-disk storage format of a data set");
assertEquals(storageFormatVocabulary.getRegistrator().getUserId(), "system");
assertEqualsDate(storageFormatVocabulary.getRegistrationDate(), "2008-11-05 09:18:00");
assertEqualsDate(storageFormatVocabulary.getModificationDate(), "2009-03-23 15:34:44");
}
@Test
public void testSearchWithFetchOptionExternalDataForContainerDataSet()
{
DataSetSearchCriteria criteria = new DataSetSearchCriteria();
criteria.withPermId().thatEquals("ROOT_CONTAINER");
DataSetFetchOptions fetchOptions = new DataSetFetchOptions();
fetchOptions.withExternalData();
List<DataSet> dataSets = searchDataSets(TEST_USER, criteria, fetchOptions);
assertEquals(dataSets.size(), 1);
DataSet dataSet = dataSets.get(0);
assertEquals(dataSet.getCode(), "ROOT_CONTAINER");
assertEquals(dataSet.getExternalData(), null);
}
@Test @Test
public void testSearchWithTypeWithIdSetToPermId() public void testSearchWithTypeWithIdSetToPermId()
{ {
......
1 96_WELLS_8X12 2008-11-05 09:18:00.622+01 1 1 \N \N 1 t 1 96_WELLS_8X12 2008-11-05 09:18:00.622+01 1 1 \N \N 1 t
2 384_WELLS_16X24 2008-11-05 09:18:00.622+01 1 1 \N \N 2 t 2 384_WELLS_16X24 2008-11-05 09:18:00.622+01 1 1 \N \N 2 t
3 1536_WELLS_32X48 2008-11-05 09:18:00.622+01 1 1 \N \N 3 t 3 1536_WELLS_32X48 2008-11-05 09:18:00.622+01 1 1 \N \N 3 t
4 PROPRIETARY 2008-11-05 09:18:00.622+01 2 1 \N \N 1 t 4 PROPRIETARY 2008-11-05 09:18:00.622+01 2 1 proprietary label proprietary description 1 t
5 BDS_DIRECTORY 2008-11-05 09:18:00.622+01 2 1 \N \N 2 t 5 BDS_DIRECTORY 2008-11-05 09:18:00.622+01 2 1 \N \N 2 t
6 RAT 2008-11-05 09:18:30.327+01 3 2 \N the rat 1 t 6 RAT 2008-11-05 09:18:30.327+01 3 2 \N the rat 1 t
7 DOG 2008-11-05 09:18:30.327+01 3 2 \N doggy 2 t 7 DOG 2008-11-05 09:18:30.327+01 3 2 \N doggy 2 t
......
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