diff --git a/src/DIRAC/TransformationSystem/Client/test/Test_Client_WorkflowTasks.py b/src/DIRAC/TransformationSystem/Client/test/Test_Client_WorkflowTasks.py index f29eea42e01..1f7983bcfb9 100644 --- a/src/DIRAC/TransformationSystem/Client/test/Test_Client_WorkflowTasks.py +++ b/src/DIRAC/TransformationSystem/Client/test/Test_Client_WorkflowTasks.py @@ -39,6 +39,12 @@ taskDictSimpleInputs = {1: {"TransformationID": 1, "InputData": ["a1", "a2", "a3"]}} +taskDictSimpleRuns = {1: {"TransformationID": 1, "RunNumber": ["123", "456", "789"]}} + +taskDictSimpleInputsAndRuns = { + 1: {"TransformationID": 1, "InputData": ["a1", "a2", "a3"], "RunNumber": ["123", "456", "789"]} +} + taskDictNoInputs = { 1: {"TransformationID": 1, "a1": "aa1", "b1": "bb1", "Site": "MySite"}, 2: {"TransformationID": 1, "a2": "aa2", "b2": "bb2"}, @@ -64,11 +70,29 @@ }, } -expectedBulkSimple = { +expectedBulkSimpleInputs = { "OK": True, "Value": {"BulkJobObject": "", 1: {"TransformationID": 1, "InputData": ["a1", "a2", "a3"], "JobType": "User"}}, } +expectedBulkSimpleRuns = { + "OK": True, + "Value": {"BulkJobObject": "", 1: {"TransformationID": 1, "RunNumber": ["123", "456", "789"], "JobType": "User"}}, +} + +expectedBulkSimpleInputsAndRuns = { + "OK": True, + "Value": { + "BulkJobObject": "", + 1: { + "TransformationID": 1, + "InputData": ["a1", "a2", "a3"], + "RunNumber": ["123", "456", "789"], + "JobType": "User", + }, + }, +} + expectedBulk = { "OK": True, "Value": { @@ -86,7 +110,9 @@ (taskDict, False, True, expected), (taskDict, True, False, expectedBulk), (taskDictSimple, True, True, expectedBulk), - (taskDictSimpleInputs, True, True, expectedBulkSimple), + (taskDictSimpleInputs, True, True, expectedBulkSimpleInputs), + (taskDictSimpleRuns, True, True, expectedBulkSimpleRuns), + (taskDictSimpleInputsAndRuns, True, True, expectedBulkSimpleInputsAndRuns), (taskDictNoInputs, True, False, expectedBulk), (taskDictNoInputsNoSite, True, True, expectedBulk), ], diff --git a/src/DIRAC/tests/Utilities/testJobDefinitions.py b/src/DIRAC/tests/Utilities/testJobDefinitions.py index 9fa9c9e47d2..5d9d0bb85bf 100644 --- a/src/DIRAC/tests/Utilities/testJobDefinitions.py +++ b/src/DIRAC/tests/Utilities/testJobDefinitions.py @@ -262,6 +262,47 @@ def parametricJob(): return endOfAllJobs(J) +def parametricJobInputData(): + """Creates a parametric job with 3 subjobs which are simple hello world jobs""" + + J = baseToAllJobs("parametricJobInput") + try: + J.setInputSandbox([find_all("exe-script.py", rootPath, "DIRAC/tests/Workflow")[0]]) + except IndexError: + try: + J.setInputSandbox([find_all("exe-script.py", ".", "DIRAC/tests/Workflow")[0]]) + except IndexError: # we are in Jenkins + J.setInputSandbox([find_all("exe-script.py", os.environ["WORKSPACE"], "DIRAC/tests/Workflow")[0]]) + J.setParameterSequence("args", ["one", "two", "three"]) + J.setParameterSequence("iargs", [1, 2, 3]) + J.setParameterSequence( + "InputData", + ["/lhcb/user/f/fstagni/test/1.txt", "/lhcb/user/f/fstagni/test/2.txt", "/lhcb/user/f/fstagni/test/3.txt"], + ) + J.setInputDataPolicy("download") + J.setExecutable("exe-script.py", arguments=": testing %(args)s %(iargs)s", logFile="helloWorld_%n.log") + return endOfAllJobs(J) + + +def parametricJobRuns(): + """Creates a parametric job with 3 subjobs which are simple hello world jobs (added RunNumber)""" + + J = baseToAllJobs("parametricJobRunNumber") + try: + J.setInputSandbox([find_all("exe-script.py", rootPath, "DIRAC/tests/Workflow")[0]]) + except IndexError: + try: + J.setInputSandbox([find_all("exe-script.py", ".", "DIRAC/tests/Workflow")[0]]) + except IndexError: # we are in Jenkins + J.setInputSandbox([find_all("exe-script.py", os.environ["WORKSPACE"], "DIRAC/tests/Workflow")[0]]) + J.setParameterSequence("args", ["one", "two", "three"]) + J.setParameterSequence("iargs", [1, 2, 3]) + J.setParameterSequence("RunNumber", [123, 456, 789]) + + J.setExecutable("exe-script.py", arguments=": testing %(args)s %(iargs)s", logFile="helloWorld_%n.log") + return endOfAllJobs(J) + + def jobWithOutput(): """Creates a job that uploads an output. The output SE is not set here, so it would use the default /Resources/StorageElementGroups/SE-USER diff --git a/tests/System/unitTestUserJobs.py b/tests/System/unitTestUserJobs.py index c89ae99b058..a3584a74407 100644 --- a/tests/System/unitTestUserJobs.py +++ b/tests/System/unitTestUserJobs.py @@ -77,6 +77,14 @@ def test_submit(self): self.assertTrue(res["OK"]) jobsSubmittedList.append(res["Value"]) + res = parametricJobInputData() + self.assertTrue(res["OK"]) + jobsSubmittedList.append(res["Value"]) + + res = parametricJobRuns() + self.assertTrue(res["OK"]) + jobsSubmittedList.append(res["Value"]) + res = jobWithOutput() self.assertTrue(res["OK"]) jobsSubmittedList.append(res["Value"])