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