From 5975ddc70d5bc1ccf0ff6e292cea4f731d275b99 Mon Sep 17 00:00:00 2001 From: pkupczyk <pkupczyk> Date: Wed, 12 Dec 2012 15:41:11 +0000 Subject: [PATCH] SP-435 / BIS-219: Make entity retrieval API for validation complete - without parents and children yet as they are not in the Lucene index SVN: 27924 --- .../calculator/AbstractEntityAdaptor.java | 2 + .../calculator/ExperimentAdaptor.java | 4 +- .../calculator/ExternalDataAdaptor.java | 53 +++-- .../calculator/SampleAdaptor.java | 58 ++++-- .../calculator/api/IDataAdaptor.java | 30 ++- .../calculator/api/ISampleAdaptor.java | 37 +++- .../systemtest/server/CommonServerTest.java | 196 ++++++++++++++++++ .../common_adaptor_test.py | 25 +++ .../dataset_adaptor_test.py | 9 + .../dataset_adaptor_test__children.py | 5 + .../dataset_adaptor_test__contained.py | 7 + .../dataset_adaptor_test__container.py | 5 + .../dataset_adaptor_test__experiment.py | 5 + .../dataset_adaptor_test__parents.py | 5 + .../dataset_adaptor_test__sample.py | 5 + .../experiment_adaptor_test.py | 7 + .../experiment_adaptor_test__datasets.py | 6 + .../experiment_adaptor_test__samples.py | 7 + .../material_adaptor_test.py | 8 + .../sample_adaptor_test.py | 9 + .../sample_adaptor_test__children.py | 5 + .../sample_adaptor_test__contained.py | 7 + .../sample_adaptor_test__container.py | 5 + .../sample_adaptor_test__datasets.py | 7 + .../sample_adaptor_test__experiment.py | 5 + .../sample_adaptor_test__parents.py | 5 + 26 files changed, 468 insertions(+), 49 deletions(-) create mode 100644 openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTest.java create mode 100644 openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/common_adaptor_test.py create mode 100644 openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/dataset_adaptor_test.py create mode 100644 openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/dataset_adaptor_test__children.py create mode 100644 openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/dataset_adaptor_test__contained.py create mode 100644 openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/dataset_adaptor_test__container.py create mode 100644 openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/dataset_adaptor_test__experiment.py create mode 100644 openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/dataset_adaptor_test__parents.py create mode 100644 openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/dataset_adaptor_test__sample.py create mode 100644 openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/experiment_adaptor_test.py create mode 100644 openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/experiment_adaptor_test__datasets.py create mode 100644 openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/experiment_adaptor_test__samples.py create mode 100644 openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/material_adaptor_test.py create mode 100644 openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/sample_adaptor_test.py create mode 100644 openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/sample_adaptor_test__children.py create mode 100644 openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/sample_adaptor_test__contained.py create mode 100644 openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/sample_adaptor_test__container.py create mode 100644 openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/sample_adaptor_test__datasets.py create mode 100644 openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/sample_adaptor_test__experiment.py create mode 100644 openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/sample_adaptor_test__parents.py diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/AbstractEntityAdaptor.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/AbstractEntityAdaptor.java index 7c8c5e4df7b..3003430cc7f 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/AbstractEntityAdaptor.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/AbstractEntityAdaptor.java @@ -62,6 +62,8 @@ public class AbstractEntityAdaptor implements IEntityAdaptor protected static String ENTITY_TYPE_CODE_FIELD = SearchFieldConstants.PREFIX_ENTITY_TYPE + SearchFieldConstants.CODE; + protected static String ENTITY_TYPE_ANY_CODE_REGEXP = ".*"; + public AbstractEntityAdaptor(String code, Collection<IEntityPropertyAdaptor> properties) { this.code = code; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/ExperimentAdaptor.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/ExperimentAdaptor.java index 72e245d1c18..87a0286eb24 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/ExperimentAdaptor.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/ExperimentAdaptor.java @@ -64,7 +64,7 @@ public class ExperimentAdaptor extends AbstractEntityAdaptor implements IExperim @Override public Iterable<ISampleAdaptor> samples() { - return samplesOfType(".*"); + return samplesOfType(ENTITY_TYPE_ANY_CODE_REGEXP); } @Override @@ -82,7 +82,7 @@ public class ExperimentAdaptor extends AbstractEntityAdaptor implements IExperim @Override public Iterable<IDataAdaptor> dataSets() { - return dataSetsOfType(".*"); + return dataSetsOfType(ENTITY_TYPE_ANY_CODE_REGEXP); } @Override diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/ExternalDataAdaptor.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/ExternalDataAdaptor.java index d7fecae3714..f88804affb5 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/ExternalDataAdaptor.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/ExternalDataAdaptor.java @@ -19,15 +19,20 @@ package ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calc import java.util.ArrayList; import java.util.List; +import org.apache.lucene.search.Query; +import org.hibernate.ScrollableResults; import org.hibernate.Session; import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.IDynamicPropertyEvaluator; import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.api.IDataAdaptor; import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.api.IEntityAdaptor; import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.api.IExperimentAdaptor; +import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.api.ISampleAdaptor; import ch.systemsx.cisd.openbis.generic.shared.dto.DataPE; import ch.systemsx.cisd.openbis.generic.shared.dto.DataSetRelationshipPE; import ch.systemsx.cisd.openbis.generic.shared.dto.ExternalDataPE; +import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE; +import ch.systemsx.cisd.openbis.generic.shared.dto.hibernate.SearchFieldConstants; /** * {@link IEntityAdaptor} implementation for {@link ExternalDataPE}. @@ -67,36 +72,38 @@ public class ExternalDataAdaptor extends AbstractEntityAdaptor implements IDataA } @Override - public List<IDataAdaptor> parents() + public ISampleAdaptor sample() { - List<IDataAdaptor> list = new ArrayList<IDataAdaptor>(); - for (DataSetRelationshipPE relationship : externalDataPE.getParentRelationships()) + SamplePE sample = externalDataPE.tryGetSample(); + if (sample != null) { - DataPE parent = relationship.getParentDataSet(); - list.add(EntityAdaptorFactory.create(parent, evaluator, session)); + return EntityAdaptorFactory.create(sample, evaluator, session); + } else + { + return null; } - return list; } @Override - public List<IDataAdaptor> children() + public Iterable<IDataAdaptor> parents() { List<IDataAdaptor> list = new ArrayList<IDataAdaptor>(); - for (DataSetRelationshipPE relationship : externalDataPE.getChildRelationships()) + for (DataSetRelationshipPE relationship : externalDataPE.getParentRelationships()) { - DataPE child = relationship.getChildDataSet(); - list.add(EntityAdaptorFactory.create(child, evaluator, session)); + DataPE parent = relationship.getParentDataSet(); + list.add(EntityAdaptorFactory.create(parent, evaluator, session)); } return list; } @Override - public List<IDataAdaptor> contained() + public Iterable<IDataAdaptor> children() { List<IDataAdaptor> list = new ArrayList<IDataAdaptor>(); - for (DataPE contained : externalDataPE.getContainedDataSets()) + for (DataSetRelationshipPE relationship : externalDataPE.getChildRelationships()) { - list.add(EntityAdaptorFactory.create(contained, evaluator, session)); + DataPE child = relationship.getChildDataSet(); + list.add(EntityAdaptorFactory.create(child, evaluator, session)); } return list; } @@ -113,4 +120,24 @@ public class ExternalDataAdaptor extends AbstractEntityAdaptor implements IDataA return null; } } + + @Override + public Iterable<IDataAdaptor> contained() + { + return containedOfType(ENTITY_TYPE_ANY_CODE_REGEXP); + } + + @Override + public Iterable<IDataAdaptor> containedOfType(String typeCodeRegexp) + { + Query typeConstraint = + regexpConstraint(ENTITY_TYPE_CODE_FIELD, typeCodeRegexp.toLowerCase()); + Query containerConstraint = + constraint(SearchFieldConstants.CONTAINER_ID, Long.toString(externalDataPE.getId())); + Query query = and(typeConstraint, containerConstraint); + + ScrollableResults results = execute(query, DataPE.class, session); + return new EntityAdaptorIterator<IDataAdaptor>(results, evaluator, session); + } + } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/SampleAdaptor.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/SampleAdaptor.java index 37e2bb720b7..5eecd5e0dfa 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/SampleAdaptor.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/SampleAdaptor.java @@ -19,14 +19,19 @@ package ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calc import java.util.ArrayList; import java.util.List; +import org.apache.lucene.search.Query; +import org.hibernate.ScrollableResults; import org.hibernate.Session; import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.IDynamicPropertyEvaluator; +import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.api.IDataAdaptor; import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.api.IEntityAdaptor; import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.api.IExperimentAdaptor; import ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.api.ISampleAdaptor; +import ch.systemsx.cisd.openbis.generic.shared.dto.DataPE; import ch.systemsx.cisd.openbis.generic.shared.dto.SamplePE; import ch.systemsx.cisd.openbis.generic.shared.dto.SampleRelationshipPE; +import ch.systemsx.cisd.openbis.generic.shared.dto.hibernate.SearchFieldConstants; /** * {@link IEntityAdaptor} implementation for {@link SamplePE}. @@ -65,7 +70,7 @@ public class SampleAdaptor extends AbstractEntityAdaptor implements ISampleAdapt } @Override - public List<ISampleAdaptor> parents() + public Iterable<ISampleAdaptor> parents() { List<ISampleAdaptor> list = new ArrayList<ISampleAdaptor>(); for (SamplePE parent : samplePE.getParents()) @@ -76,7 +81,7 @@ public class SampleAdaptor extends AbstractEntityAdaptor implements ISampleAdapt } @Override - public List<ISampleAdaptor> children() + public Iterable<ISampleAdaptor> children() { List<ISampleAdaptor> list = new ArrayList<ISampleAdaptor>(); for (SampleRelationshipPE relationship : samplePE.getChildRelationships()) @@ -87,17 +92,6 @@ public class SampleAdaptor extends AbstractEntityAdaptor implements ISampleAdapt return list; } - @Override - public List<ISampleAdaptor> contained() - { - List<ISampleAdaptor> list = new ArrayList<ISampleAdaptor>(); - for (SamplePE contained : samplePE.getContained()) - { - list.add(EntityAdaptorFactory.create(contained, evaluator, session)); - } - return list; - } - @Override public ISampleAdaptor container() { @@ -111,4 +105,42 @@ public class SampleAdaptor extends AbstractEntityAdaptor implements ISampleAdapt } } + @Override + public Iterable<ISampleAdaptor> contained() + { + return containedOfType(ENTITY_TYPE_ANY_CODE_REGEXP); + } + + @Override + public Iterable<ISampleAdaptor> containedOfType(String typeCodeRegexp) + { + Query typeConstraint = + regexpConstraint(ENTITY_TYPE_CODE_FIELD, typeCodeRegexp.toLowerCase()); + Query containerConstraint = + constraint(SearchFieldConstants.CONTAINER_ID, Long.toString(samplePE.getId())); + Query query = and(typeConstraint, containerConstraint); + + ScrollableResults results = execute(query, SamplePE.class, session); + return new EntityAdaptorIterator<ISampleAdaptor>(results, evaluator, session); + } + + @Override + public Iterable<IDataAdaptor> dataSets() + { + return dataSetsOfType(ENTITY_TYPE_ANY_CODE_REGEXP); + } + + @Override + public Iterable<IDataAdaptor> dataSetsOfType(String typeCodeRegexp) + { + Query typeConstraint = + regexpConstraint(ENTITY_TYPE_CODE_FIELD, typeCodeRegexp.toLowerCase()); + Query sampleConstraint = + constraint(SearchFieldConstants.SAMPLE_ID, Long.toString(samplePE.getId())); + Query query = and(typeConstraint, sampleConstraint); + + ScrollableResults results = execute(query, DataPE.class, session); + return new EntityAdaptorIterator<IDataAdaptor>(results, evaluator, session); + } + } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/api/IDataAdaptor.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/api/IDataAdaptor.java index afa771005de..a242641a0db 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/api/IDataAdaptor.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/api/IDataAdaptor.java @@ -16,8 +16,6 @@ package ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.api; -import java.util.List; - /** * @author Jakub Straszewski */ @@ -26,25 +24,37 @@ public interface IDataAdaptor /** * Returns the experiment of this data set, or null if not exists. */ - IExperimentAdaptor experiment(); + public IExperimentAdaptor experiment(); /** - * Returns the list of all parent data sets. + * Returns the sample of this data set, or null if not exists. */ - public List<IDataAdaptor> parents(); + public ISampleAdaptor sample(); /** - * Returns the list of all child data sets. + * Returns all parent data sets. */ - public List<IDataAdaptor> children(); + public Iterable<IDataAdaptor> parents(); /** - * Returns the list of contained data sets. + * Returns all child data sets. */ - public List<IDataAdaptor> contained(); + public Iterable<IDataAdaptor> children(); /** - * Returs the container data set, or null if not exists. + * Returns the container data set, or null if not exists. */ public IDataAdaptor container(); + + /** + * Returns contained data sets of this data set. + */ + public Iterable<IDataAdaptor> contained(); + + /** + * Returns contained data sets of this data set. Types of the returned contained data sets must + * match the specified regular expression. + */ + public Iterable<IDataAdaptor> containedOfType(String typeCodeRegexp); + } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/api/ISampleAdaptor.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/api/ISampleAdaptor.java index ed64afe8b13..c1439cc7d21 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/api/ISampleAdaptor.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/server/dataaccess/dynamic_property/calculator/api/ISampleAdaptor.java @@ -16,8 +16,6 @@ package ch.systemsx.cisd.openbis.generic.server.dataaccess.dynamic_property.calculator.api; -import java.util.List; - /** * @author Jakub Straszewski */ @@ -26,26 +24,43 @@ public interface ISampleAdaptor extends IEntityAdaptor /** * Returns the experiment of this sample, or null if not exists. */ - IExperimentAdaptor experiment(); + public IExperimentAdaptor experiment(); /** - * Returns the list of all parent samples. + * Returns all parent samples. */ - public List<ISampleAdaptor> parents(); + public Iterable<ISampleAdaptor> parents(); /** - * Returns the list of all child samples. + * Returns all child samples. */ - public List<ISampleAdaptor> children(); + public Iterable<ISampleAdaptor> children(); /** - * Returns the list of contained samples. + * Returns the container sample, or null if not exists. */ - public List<ISampleAdaptor> contained(); + public ISampleAdaptor container(); /** - * Returs the container sample, or null if not exists. + * Returns contained samples of this sample. */ - public ISampleAdaptor container(); + public Iterable<ISampleAdaptor> contained(); + + /** + * Returns contained samples of this sample. Types of the returned contained samples must match + * the specified regular expression. + */ + public Iterable<ISampleAdaptor> containedOfType(String typeCodeRegexp); + + /** + * Returns data sets of this sample. + */ + public Iterable<IDataAdaptor> dataSets(); + + /** + * Returns data sets of this sample. Types of the returned data sets must match the specified + * regular expression. + */ + public Iterable<IDataAdaptor> dataSetsOfType(String typeCodeRegexp); } 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 new file mode 100644 index 00000000000..7734ff3160a --- /dev/null +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTest.java @@ -0,0 +1,196 @@ +/* + * Copyright 2011 ETH Zuerich, CISD + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package ch.systemsx.cisd.openbis.systemtest.server; + +import java.io.File; +import java.io.IOException; + +import junit.framework.Assert; + +import org.apache.commons.io.IOUtils; +import org.testng.annotations.AfterMethod; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityValidationEvaluationInfo; +import ch.systemsx.cisd.openbis.systemtest.SystemTestCase; + +/** + * @author pkupczyk + */ +@Test(groups = "system test") +public class CommonServerTest extends SystemTestCase +{ + + private String sessionToken; + + @BeforeMethod + public void beforeMethod() + { + sessionToken = commonServer.tryAuthenticate("test", "a").getSessionToken(); + } + + @AfterMethod + public void afterMethod() + { + commonServer.logout(sessionToken); + } + + @Test + public void testExperimentAdaptor() + { + testAdaptorCommon(EntityKind.EXPERIMENT, "/CISD/DEFAULT/EXP-REUSE", + "experiment_adaptor_test.py"); + } + + @Test + public void testExperimentAdaptorSamples() + { + testAdaptorCommon(EntityKind.EXPERIMENT, "/CISD/DEFAULT/EXP-REUSE", + "experiment_adaptor_test__samples.py"); + } + + @Test + public void testExperimentAdaptorDataSets() + { + testAdaptorCommon(EntityKind.EXPERIMENT, "/CISD/DEFAULT/EXP-REUSE", + "experiment_adaptor_test__datasets.py"); + } + + @Test + public void testSampleAdaptor() + { + testAdaptorCommon(EntityKind.SAMPLE, "/CISD/CP-TEST-1", "sample_adaptor_test.py"); + } + + @Test + public void testSampleAdaptorExperiment() + { + testAdaptorCommon(EntityKind.SAMPLE, "/CISD/3VCP6", "sample_adaptor_test__experiment.py"); + } + + @Test + public void testSampleAdaptorParents() + { + testAdaptorCommon(EntityKind.SAMPLE, "/CISD/3VCP6", "sample_adaptor_test__parents.py"); + } + + @Test + public void testSampleAdaptorChildren() + { + testAdaptorCommon(EntityKind.SAMPLE, "/CISD/DP1-A", "sample_adaptor_test__children.py"); + } + + @Test + public void testSampleAdaptorDataSets() + { + testAdaptorCommon(EntityKind.SAMPLE, "/CISD/CP-TEST-3", "sample_adaptor_test__datasets.py"); + } + + @Test + public void testSampleAdaptorContainer() + { + testAdaptorCommon(EntityKind.SAMPLE, "/CISD/CL1:A01", "sample_adaptor_test__container.py"); + } + + @Test + public void testSampleAdaptorContained() + { + testAdaptorCommon(EntityKind.SAMPLE, "/CISD/CL1", "sample_adaptor_test__contained.py"); + } + + @Test + public void testDataSetAdaptor() + { + testAdaptorCommon(EntityKind.DATA_SET, "20081105092159111-1", "dataset_adaptor_test.py"); + } + + @Test + public void testDataSetAdaptorExperiment() + { + testAdaptorCommon(EntityKind.DATA_SET, "20081105092159188-3", + "dataset_adaptor_test__experiment.py"); + } + + @Test + public void testDataSetAdaptorSample() + { + testAdaptorCommon(EntityKind.DATA_SET, "20081105092159222-2", + "dataset_adaptor_test__sample.py"); + } + + @Test + public void testDataSetAdaptorParents() + { + testAdaptorCommon(EntityKind.DATA_SET, "20081105092259000-9", + "dataset_adaptor_test__parents.py"); + } + + @Test + public void testDataSetAdaptorChildren() + { + testAdaptorCommon(EntityKind.DATA_SET, "20081105092259000-9", + "dataset_adaptor_test__children.py"); + } + + @Test + public void testDataSetAdaptorContainer() + { + testAdaptorCommon(EntityKind.DATA_SET, "20110509092359990-11", + "dataset_adaptor_test__container.py"); + } + + @Test + public void testDataSetAdaptorContained() + { + testAdaptorCommon(EntityKind.DATA_SET, "20110509092359990-10", + "dataset_adaptor_test__contained.py"); + } + + @Test + public void testMaterialAdaptor() + { + testAdaptorCommon(EntityKind.MATERIAL, "C-NO-TIME (CONTROL)", "material_adaptor_test.py"); + } + + private void testAdaptorCommon(EntityKind entityKind, String entityIdentifier, String scriptName) + { + String script = + getResourceAsString("common_adaptor_test.py") + "\n" + + getResourceAsString(scriptName); + + EntityValidationEvaluationInfo info = + new EntityValidationEvaluationInfo(entityKind, entityIdentifier, false, script); + + String result = commonServer.evaluate(sessionToken, info); + Assert.assertEquals("Validation OK", result); + } + + private String getResourceAsString(String fileName) + { + try + { + return IOUtils.toString(getClass().getResourceAsStream( + "CommonServerTestResources" + File.separator + fileName)); + } catch (IOException ex) + { + throw new RuntimeException(ex); + } + } + +} \ No newline at end of file diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/common_adaptor_test.py b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/common_adaptor_test.py new file mode 100644 index 00000000000..45f8f2497f8 --- /dev/null +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/common_adaptor_test.py @@ -0,0 +1,25 @@ +def assertEqual(actual, expected, fieldName): + if(actual != expected): + raise Exception('Expected ' + str(fieldName) + ': "' + str(expected) + '" but was: "' + str(actual) + '"') + +def assertEntity(entity, expectedEntityCode, fieldName): + if(entity.code() != expectedEntityCode): + raise Exception('Expected ' + str(fieldName) + ': "' + str(expectedEntityCode) + '" but was: "' + str(entity.code()) + '"') + +def assertEntities(iterable, expectedEntityCodes, fieldName): + actualEntityCodes = [] + + for entity in iterable: + actualEntityCodes.append(entity.code()) + + if(set(actualEntityCodes) != set(expectedEntityCodes)): + raise Exception('Expected ' + str(fieldName) + ': "' + str(expectedEntityCodes) + '" but were: "' + str(actualEntityCodes) + '"') + +def assertEntitiesCount(iterable, expectedEntityCount, fieldName): + actualEntityCount = 0 + + for entity in iterable: + actualEntityCount += 1 + + if(actualEntityCount != expectedEntityCount): + raise Exception('Expected ' + str(fieldName) + ': "' + str(expectedEntityCount) + '" but were: "' + str(actualEntityCount) + '"') diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/dataset_adaptor_test.py b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/dataset_adaptor_test.py new file mode 100644 index 00000000000..d712ba7d80a --- /dev/null +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/dataset_adaptor_test.py @@ -0,0 +1,9 @@ +def validate(dataset, isNew): + try: + assertEqual(dataset.code(), '20081105092159111-1', 'code') + assertEqual(len(dataset.properties()), 4, 'number of properties') + assertEqual(dataset.propertyValue('COMMENT'), 'no comment', 'comment property') + assertEqual(dataset.propertyValue('GENDER'), 'FEMALE', 'gender property') + assertEqual(dataset.propertyValue('BACTERIUM'), 'BACTERIUM1 (BACTERIUM)', 'bacterium property') + except Exception, ex: + return ex.args[0] diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/dataset_adaptor_test__children.py b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/dataset_adaptor_test__children.py new file mode 100644 index 00000000000..c34f34f777a --- /dev/null +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/dataset_adaptor_test__children.py @@ -0,0 +1,5 @@ +def validate(dataset, isNew): + try: + assertEntities(dataset.children(), ["20081105092259900-0", "20081105092259900-1"], 'children') + except Exception, ex: + return ex.args[0] diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/dataset_adaptor_test__contained.py b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/dataset_adaptor_test__contained.py new file mode 100644 index 00000000000..30c5cb98ed7 --- /dev/null +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/dataset_adaptor_test__contained.py @@ -0,0 +1,7 @@ +def validate(dataset, isNew): + try: + assertEntities(dataset.contained(), ["20110509092359990-11", "20110509092359990-12"], 'contained') + assertEntities(dataset.containedOfType("HCS_IMAGE"), ["20110509092359990-11", "20110509092359990-12"], 'contained of type HCS_IMAGE') + assertEntities(dataset.containedOfType('NOT_EXISTING_TYPE'), [], 'contained of type NOT_EXISTING_TYPE') + except Exception, ex: + return ex.args[0] diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/dataset_adaptor_test__container.py b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/dataset_adaptor_test__container.py new file mode 100644 index 00000000000..8f4fb1abe56 --- /dev/null +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/dataset_adaptor_test__container.py @@ -0,0 +1,5 @@ +def validate(dataset, isNew): + try: + assertEntity(dataset.container(), '20110509092359990-10', 'container') + except Exception, ex: + return ex.args[0] diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/dataset_adaptor_test__experiment.py b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/dataset_adaptor_test__experiment.py new file mode 100644 index 00000000000..d8cd47ba337 --- /dev/null +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/dataset_adaptor_test__experiment.py @@ -0,0 +1,5 @@ +def validate(dataset, isNew): + try: + assertEntity(dataset.experiment(), 'EXP1', 'experiment') + except Exception, ex: + return ex.args[0] diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/dataset_adaptor_test__parents.py b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/dataset_adaptor_test__parents.py new file mode 100644 index 00000000000..1b9f22276c8 --- /dev/null +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/dataset_adaptor_test__parents.py @@ -0,0 +1,5 @@ +def validate(dataset, isNew): + try: + assertEntities(dataset.parents(), ["20081105092159111-1", "20081105092159222-2", "20081105092159333-3"], 'parents') + except Exception, ex: + return ex.args[0] diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/dataset_adaptor_test__sample.py b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/dataset_adaptor_test__sample.py new file mode 100644 index 00000000000..e7c8005e2b9 --- /dev/null +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/dataset_adaptor_test__sample.py @@ -0,0 +1,5 @@ +def validate(dataset, isNew): + try: + assertEntity(dataset.sample(), 'CP-TEST-2', 'sample') + except Exception, ex: + return ex.args[0] diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/experiment_adaptor_test.py b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/experiment_adaptor_test.py new file mode 100644 index 00000000000..1fbc4632a47 --- /dev/null +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/experiment_adaptor_test.py @@ -0,0 +1,7 @@ +def validate(experiment, isNew): + try: + assertEqual(experiment.code(), 'EXP-REUSE', 'code') + assertEqual(len(experiment.properties()), 1, 'number of properties') + assertEqual(experiment.propertyValue('DESCRIPTION'), 'Test of sample reusage from invalidated experiments', 'description property') + except Exception, ex: + return ex.args[0] diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/experiment_adaptor_test__datasets.py b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/experiment_adaptor_test__datasets.py new file mode 100644 index 00000000000..4d23d2b4914 --- /dev/null +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/experiment_adaptor_test__datasets.py @@ -0,0 +1,6 @@ +def validate(experiment, isNew): + try: + assertEntitiesCount(experiment.dataSets(), 18, 'data sets') + assertEntities(experiment.dataSetsOfType('CONTAINER_TYPE'), ['CONTAINER_1', 'CONTAINER_2', 'ROOT_CONTAINER', '20081105092259000-19', '20110509092359990-10'], 'data sets of type CONTAINER_TYPE') + except Exception, ex: + return ex.args[0] diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/experiment_adaptor_test__samples.py b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/experiment_adaptor_test__samples.py new file mode 100644 index 00000000000..aea17450034 --- /dev/null +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/experiment_adaptor_test__samples.py @@ -0,0 +1,7 @@ +def validate(experiment, isNew): + try: + assertEntitiesCount(experiment.samples(), 7, 'samples') + assertEntities(experiment.samplesOfType('CELL_PLATE'), ['CP1-A1','CP1-A2','CP1-B1','CP2-A1'], 'samples of type CELL_PLATE') + assertEntities(experiment.samplesOfType('REINFECT_PLATE'), ['RP1-A2X','RP1-B1X','RP2-A1X'], 'samples of type REINFECT_PLATE') + except Exception, ex: + return ex.args[0] diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/material_adaptor_test.py b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/material_adaptor_test.py new file mode 100644 index 00000000000..d5bc83705b1 --- /dev/null +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/material_adaptor_test.py @@ -0,0 +1,8 @@ +def validate(material, isNew): + try: + assertEqual(material.code(), 'C-NO-TIME', 'code') + assertEqual(len(material.properties()), 4, 'number of properties') + assertEqual(material.propertyValue('DESCRIPTION'), 'neutral control', 'description property') + assertEqual(material.propertyValue('IS_VALID'), 'true', 'is_valid property') + except Exception, ex: + return ex.args[0] diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/sample_adaptor_test.py b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/sample_adaptor_test.py new file mode 100644 index 00000000000..3d22be358a1 --- /dev/null +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/sample_adaptor_test.py @@ -0,0 +1,9 @@ +def validate(sample, isNew): + try: + assertEqual(sample.code(), 'CP-TEST-1', 'code') + assertEqual(len(sample.properties()), 5, 'number of properties') + assertEqual(sample.propertyValue('SIZE'), '123', 'size property') + assertEqual(sample.propertyValue('ORGANISM'), 'HUMAN', 'organism property') + assertEqual(sample.propertyValue('BACTERIUM'), 'BACTERIUM-X (BACTERIUM)', 'bacterium property') + except Exception, ex: + return ex.args[0] diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/sample_adaptor_test__children.py b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/sample_adaptor_test__children.py new file mode 100644 index 00000000000..cd5c79e558f --- /dev/null +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/sample_adaptor_test__children.py @@ -0,0 +1,5 @@ +def validate(sample, isNew): + try: + assertEntities(sample.children(), ['CP1-A1','CP1-A2'], 'children') + except Exception, ex: + return ex.args[0] diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/sample_adaptor_test__contained.py b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/sample_adaptor_test__contained.py new file mode 100644 index 00000000000..1558a8d65e6 --- /dev/null +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/sample_adaptor_test__contained.py @@ -0,0 +1,7 @@ +def validate(sample, isNew): + try: + assertEntities(sample.contained(), ['A01','A03'], 'contained') + assertEntities(sample.containedOfType('WELL'), ['A01','A03'], 'contained of type WELL') + assertEntities(sample.containedOfType('NOT_EXISTING_TYPE'), [], 'contained of type NOT_EXISTING_TYPE') + except Exception, ex: + return ex.args[0] diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/sample_adaptor_test__container.py b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/sample_adaptor_test__container.py new file mode 100644 index 00000000000..f4321f02ed6 --- /dev/null +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/sample_adaptor_test__container.py @@ -0,0 +1,5 @@ +def validate(sample, isNew): + try: + assertEntity(sample.container(), 'CL1', 'container') + except Exception, ex: + return ex.args[0] diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/sample_adaptor_test__datasets.py b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/sample_adaptor_test__datasets.py new file mode 100644 index 00000000000..4298dd2f10e --- /dev/null +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/sample_adaptor_test__datasets.py @@ -0,0 +1,7 @@ +def validate(sample, isNew): + try: + assertEntities(sample.dataSets(), ["20081105092159333-3", "20110805092359990-17"], 'data sets') + assertEntities(sample.dataSetsOfType('HCS_IMAGE'), ["20081105092159333-3", "20110805092359990-17"], 'data sets of type HCS_IMAGE') + assertEntities(sample.dataSetsOfType('NOT_EXISTING_TYPE'), [], 'data sets of type NOT_EXISTING_TYPE') + except Exception, ex: + return ex.args[0] diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/sample_adaptor_test__experiment.py b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/sample_adaptor_test__experiment.py new file mode 100644 index 00000000000..6e63d962883 --- /dev/null +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/sample_adaptor_test__experiment.py @@ -0,0 +1,5 @@ +def validate(sample, isNew): + try: + assertEntity(sample.experiment(), 'EXP11', 'experiment') + except Exception, ex: + return ex.args[0] diff --git a/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/sample_adaptor_test__parents.py b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/sample_adaptor_test__parents.py new file mode 100644 index 00000000000..bf5b4c81a4f --- /dev/null +++ b/openbis/sourceTest/java/ch/systemsx/cisd/openbis/systemtest/server/CommonServerTestResources/sample_adaptor_test__parents.py @@ -0,0 +1,5 @@ +def validate(sample, isNew): + try: + assertEntities(sample.parents(), ['A02','3V-125'], 'parents') + except Exception, ex: + return ex.args[0] -- GitLab