From 63dc68d41eaa88af4843ca3f72c949baf57a060e Mon Sep 17 00:00:00 2001 From: jakubs <jakubs> Date: Wed, 16 May 2012 15:19:45 +0000 Subject: [PATCH] SP-45, BIS-21 split v1 and v2 scripts SVN: 25290 --- .../JythonTopLevelDataSetRegistratorTest.java | 7 +++ .../etlserver/registrator/file-not-found.py | 3 -- .../etlserver/registrator/v2-dying-script.py | 16 ++++++ .../registrator/v2-file-not-found.py | 6 +++ .../registrator/v2-rollback-dying-script.py | 16 ++++++ .../registrator/v2-simple-testcase.py | 3 ++ .../v2-testcase-double-transaction.py | 17 +++++++ ...2-testcase-postregistration-hook-failed.py | 12 +++++ ...e-postregistration-hook-wrong-signature.py | 8 +++ ...v2-testcase-preregistration-hook-failed.py | 12 +++++ .../v2-testcase-registration-context.py | 49 +++++++++++++++++++ .../registrator/v2-testcase-rollback.py | 4 ++ .../v2-testcase-without-post-storage.py | 4 ++ 13 files changed, 154 insertions(+), 3 deletions(-) create mode 100644 datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-dying-script.py create mode 100644 datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-file-not-found.py create mode 100644 datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-rollback-dying-script.py create mode 100644 datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-simple-testcase.py create mode 100644 datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-testcase-double-transaction.py create mode 100644 datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-testcase-postregistration-hook-failed.py create mode 100644 datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-testcase-postregistration-hook-wrong-signature.py create mode 100644 datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-testcase-preregistration-hook-failed.py create mode 100644 datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-testcase-registration-context.py create mode 100644 datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-testcase-rollback.py create mode 100644 datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-testcase-without-post-storage.py diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/JythonTopLevelDataSetRegistratorTest.java b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/JythonTopLevelDataSetRegistratorTest.java index 42be78c44e3..5fa077addc9 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/JythonTopLevelDataSetRegistratorTest.java +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/JythonTopLevelDataSetRegistratorTest.java @@ -103,9 +103,16 @@ public class JythonTopLevelDataSetRegistratorTest extends AbstractJythonDataSetH params.dontCallOldApiJythonHooks = true; params.title += " - V2"; params.shouldUseAutoRecovery = true; + params.dropboxScriptPath = scriptPathV2(other.dropboxScriptPath); return params; } + private static String scriptPathV2(String scriptPath) + { + File script = new File(scriptPath); + return new File(script.getParentFile(), "v2-" + script.getName()).getPath(); + } + @DataProvider(name = "simpleTransactionTestCaseProvider") public Object[][] simpleTransactionCases() { diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/file-not-found.py b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/file-not-found.py index 3bca7f4e4f5..d3ee2dbd6b0 100644 --- a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/file-not-found.py +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/file-not-found.py @@ -1,8 +1,5 @@ execfile("sourceTest/java/ch/systemsx/cisd/etlserver/registrator/all-hooks.py") -# this check is to make the script compatible with V1 and V2 -if transaction is None: - transaction = service.transaction(incoming, factory) dataSet = transaction.createNewDataSet() transaction.moveFile('/non/existent/path', dataSet) dataSet.setDataSetType('O1') diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-dying-script.py b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-dying-script.py new file mode 100644 index 00000000000..6c2caea5811 --- /dev/null +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-dying-script.py @@ -0,0 +1,16 @@ +import ch.systemsx.cisd.openbis.generic.shared.dto.identifier as identifier +import java.io as io +import ch.systemsx.cisd.openbis.generic.shared.basic.dto as dto + +execfile("sourceTest/java/ch/systemsx/cisd/etlserver/registrator/all-hooks.py") + +def process(): + # Create the Experiment Identifier + identifier = identifier.ExperimentIdentifierFactory("/SPACE/PROJECT/EXP-CODE").createIdentifier() + + # Register data set 1 + registrationDetails = factory.createRegistrationDetails() + dataSetInformation = registrationDetails.getDataSetInformation() + dataSetInformation.setExperimentIdentifier(identifier) + registrationDetails.setDataSetType(dto.DataSetType("O1")); + None.non_existant_function() diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-file-not-found.py b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-file-not-found.py new file mode 100644 index 00000000000..1f453f07754 --- /dev/null +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-file-not-found.py @@ -0,0 +1,6 @@ +execfile("sourceTest/java/ch/systemsx/cisd/etlserver/registrator/all-hooks.py") +process(): + dataSet = transaction.createNewDataSet() + transaction.moveFile('/non/existent/path', dataSet) + dataSet.setDataSetType('O1') + dataSet.setExperiment(transaction.getExperiment('/SPACE/PROJECT/EXP')) diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-rollback-dying-script.py b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-rollback-dying-script.py new file mode 100644 index 00000000000..6eb94ca1d05 --- /dev/null +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-rollback-dying-script.py @@ -0,0 +1,16 @@ +import ch.systemsx.cisd.openbis.generic.shared.dto.identifier as identifier +import java.io as io +import ch.systemsx.cisd.openbis.generic.shared.basic.dto as dto + +execfile("sourceTest/java/ch/systemsx/cisd/etlserver/registrator/all-hooks.py") +def process(): + # Create the Experiment Identifier + identifier = identifier.ExperimentIdentifierFactory("/SPACE/PROJECT/EXP-CODE").createIdentifier() + + # Register data set 1 + registrationDetails = factory.createRegistrationDetails() + dataSetInformation = registrationDetails.getDataSetInformation() + dataSetInformation.setExperimentIdentifier(identifier) + registrationDetails.setDataSetType(dto.DataSetType("O1")); + + None.non_existant_function() diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-simple-testcase.py b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-simple-testcase.py new file mode 100644 index 00000000000..38ab1efcddc --- /dev/null +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-simple-testcase.py @@ -0,0 +1,3 @@ +execfile("sourceTest/java/ch/systemsx/cisd/etlserver/registrator/all-hooks.py") +def process(): + execfile("sourceTest/java/ch/systemsx/cisd/etlserver/registrator/simple-transaction.py") \ No newline at end of file diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-testcase-double-transaction.py b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-testcase-double-transaction.py new file mode 100644 index 00000000000..35e8b648cae --- /dev/null +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-testcase-double-transaction.py @@ -0,0 +1,17 @@ +execfile("sourceTest/java/ch/systemsx/cisd/etlserver/registrator/all-hooks.py") +def process(): + transaction = service.transaction(incoming, factory) + transaction1 = service.transaction(incoming, factory) + + dataSet = transaction.createNewDataSet() + dataSet1 = transaction1.createNewDataSet() + + transaction.moveFile(incoming.getPath() + '/sub_data_set_1', dataSet) + transaction1.moveFile(incoming.getPath() + '/sub_data_set_2', dataSet1) + + dataSet.setDataSetType('O1') + dataSet1.setDataSetType('O1') + + dataSet.setExperiment(transaction.getExperiment('/SPACE/PROJECT/EXP')) + dataSet1.setExperiment(transaction1.getExperiment('/SPACE/PROJECT/EXP')) + diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-testcase-postregistration-hook-failed.py b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-testcase-postregistration-hook-failed.py new file mode 100644 index 00000000000..740e4142a03 --- /dev/null +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-testcase-postregistration-hook-failed.py @@ -0,0 +1,12 @@ +from java.lang import IllegalArgumentException + +execfile("sourceTest/java/ch/systemsx/cisd/etlserver/registrator/all-hooks.py") + +def post_metadata_registration(context): + global didPostRegistrationFunctionRunHappen + didPostRegistrationFunctionRunHappen = True + raise IllegalArgumentException("Fail at post_metadata_registration to cancel registration") + +process(): + execfile("sourceTest/java/ch/systemsx/cisd/etlserver/registrator/simple-transaction.py") + diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-testcase-postregistration-hook-wrong-signature.py b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-testcase-postregistration-hook-wrong-signature.py new file mode 100644 index 00000000000..a53ea97cb8b --- /dev/null +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-testcase-postregistration-hook-wrong-signature.py @@ -0,0 +1,8 @@ +execfile("sourceTest/java/ch/systemsx/cisd/etlserver/registrator/all-hooks.py") + +def post_metadata_registration(context, unnecessary_argument): + global didPostRegistrationFunctionRunHappen + didPostRegistrationFunctionRunHappen = True +def process(): + execfile("sourceTest/java/ch/systemsx/cisd/etlserver/registrator/simple-transaction.py") + diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-testcase-preregistration-hook-failed.py b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-testcase-preregistration-hook-failed.py new file mode 100644 index 00000000000..5f9981046cf --- /dev/null +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-testcase-preregistration-hook-failed.py @@ -0,0 +1,12 @@ +from java.lang import IllegalArgumentException + +execfile("sourceTest/java/ch/systemsx/cisd/etlserver/registrator/all-hooks.py") + +def pre_metadata_registration(context): + global didPreRegistrationFunctionRunHappen + didPreRegistrationFunctionRunHappen = True + raise IllegalArgumentException("Fail at pre_metadata_registration to cancel registration") + +process(): + execfile("sourceTest/java/ch/systemsx/cisd/etlserver/registrator/simple-transaction.py"): + diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-testcase-registration-context.py b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-testcase-registration-context.py new file mode 100644 index 00000000000..eaf764eccc8 --- /dev/null +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-testcase-registration-context.py @@ -0,0 +1,49 @@ +def process(): + execfile("sourceTest/java/ch/systemsx/cisd/etlserver/registrator/simple-transaction.py") + transaction.getTransactionPersistentMap().put("body","1") + +global contextTestFailed +contextTestFailed = None + +def rollback_transaction(service, transaction, algorithmRunner, throwable): + global didTransactionRollbackHappen + didTransactionRollbackHappen = True + +def pre_metadata_registration(context): + + assert_context_content(context, "pre_metadata_registration", "body", "1"); + assert_context_content(context, "pre_metadata_registration", "pre_metadata_registration", None); + assert_context_content(context, "pre_metadata_registration", "post_storage", None); + + context.put("pre_metadata_registration", "2") + global didPreRegistrationFunctionRunHappen + didPreRegistrationFunctionRunHappen = True + +def post_metadata_registration(context): + + assert_context_content(context, "post_metadata_registration", "body", "1"); + assert_context_content(context, "post_metadata_registration", "pre_metadata_registration", "2"); + assert_context_content(context, "post_metadata_registration", "post_storage", None); + + context.put("post_metadata_registration", "3") + global didPostRegistrationFunctionRunHappen + didPostRegistrationFunctionRunHappen = True + +def post_storage(context): + + assert_context_content(context, "post_storage", "body", "1"); + assert_context_content(context, "post_storage", "pre_metadata_registration", "2"); + assert_context_content(context, "post_storage", "post_metadata_registration", "3"); + + context.put("post_storage", "4") + global didPostStorageFunctionRunHappen + didPostStorageFunctionRunHappen = True + +def assert_context_content(context, caller, name, expected): + value = context.get(name) + if (value != expected): + global contextTestFailed + if (value != None and expected != None and type(value) != type(expected)): + value = "%s:%s" % (type(value), value) + expected = "%s:%s" % (type(expected), expected) + contextTestFailed = "in %s the value of %s should have been '%s', but was '%s'" % (caller, name, expected, value) diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-testcase-rollback.py b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-testcase-rollback.py new file mode 100644 index 00000000000..fb7a8a58f89 --- /dev/null +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-testcase-rollback.py @@ -0,0 +1,4 @@ +execfile("sourceTest/java/ch/systemsx/cisd/etlserver/registrator/all-hooks.py") +def process(): + execfile("sourceTest/java/ch/systemsx/cisd/etlserver/registrator/simple-transaction.py"): + transaction.rollback() diff --git a/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-testcase-without-post-storage.py b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-testcase-without-post-storage.py new file mode 100644 index 00000000000..749866a8fe4 --- /dev/null +++ b/datastore_server/sourceTest/java/ch/systemsx/cisd/etlserver/registrator/v2-testcase-without-post-storage.py @@ -0,0 +1,4 @@ +execfile("sourceTest/java/ch/systemsx/cisd/etlserver/registrator/all-hooks-without-post-storage.py") +process(): + execfile("sourceTest/java/ch/systemsx/cisd/etlserver/registrator/simple-transaction.py") + -- GitLab