Fix failing tests. refs #9776
[arvados.git] / sdk / cwl / tests / test_job.py
index 4351b1abfef5f9a7c24c8d6649c3b54ab88c3287..21b72d17db40853c89ab397a8b00ba893f1a4f01 100644 (file)
@@ -1,6 +1,15 @@
-import unittest
-import mock
 import arvados_cwl
+import logging
+import mock
+import unittest
+import os
+import functools
+import cwltool.process
+
+if not os.getenv('ARVADOS_DEBUG'):
+    logging.getLogger('arvados.cwl-runner').setLevel(logging.WARN)
+    logging.getLogger('arvados.arv-run').setLevel(logging.WARN)
+
 
 class TestJob(unittest.TestCase):
 
@@ -9,41 +18,56 @@ class TestJob(unittest.TestCase):
     def test_run(self):
         runner = mock.MagicMock()
         runner.project_uuid = "zzzzz-8i9sb-zzzzzzzzzzzzzzz"
+        runner.ignore_docker_for_reuse = False
+        document_loader, avsc_names, schema_metadata, metaschema_loader = cwltool.process.get_schema("draft-3")
+
         tool = {
             "inputs": [],
             "outputs": [],
-            "baseCommand": "ls"
+            "baseCommand": "ls",
+            "arguments": [{"valueFrom": "$(runtime.outdir)"}]
         }
-        arvtool = arvados_cwl.ArvadosCommandTool(runner, tool)
+        make_fs_access=functools.partial(arvados_cwl.CollectionFsAccess, api_client=runner.api)
+        arvtool = arvados_cwl.ArvadosCommandTool(runner, tool, work_api="jobs", avsc_names=avsc_names, basedir="", make_fs_access=make_fs_access)
         arvtool.formatgraph = None
-        for j in arvtool.job({}, "", mock.MagicMock()):
+        for j in arvtool.job({}, mock.MagicMock(), basedir="", make_fs_access=make_fs_access):
             j.run()
-        runner.api.jobs().create.assert_called_with(body={
-            'owner_uuid': 'zzzzz-8i9sb-zzzzzzzzzzzzzzz',
-            'runtime_constraints': {},
-            'script_parameters': {
-                'tasks': [{
-                    'task.env': {'TMPDIR': '$(task.tmpdir)'},
-                    'command': ['ls']
-                }],
-                'crunchrunner': arvados_cwl.crunchrunner_pdh + '/crunchrunner'
-            },
-            'script_version': 'master',
-            'minimum_script_version': '9e5b98e8f5f4727856b53447191f9c06e3da2ba6',
-            'repository': 'arvados',
-            'script': 'crunchrunner',
-            'runtime_constraints': {
-                'min_cores_per_node': 1,
-                'min_ram_mb_per_node': 1024,
-                'min_scratch_mb_per_node': 2048 # tmpdirSize + outdirSize
-            }
-        }, find_or_create=True)
+            runner.api.jobs().create.assert_called_with(
+                body={
+                    'owner_uuid': 'zzzzz-8i9sb-zzzzzzzzzzzzzzz',
+                    'runtime_constraints': {},
+                    'script_parameters': {
+                        'tasks': [{
+                            'task.env': {'HOME': '$(task.outdir)', 'TMPDIR': '$(task.tmpdir)'},
+                            'command': ['ls', '$(task.outdir)']
+                        }],
+                    },
+                    'script_version': 'master',
+                    'minimum_script_version': '9e5b98e8f5f4727856b53447191f9c06e3da2ba6',
+                    'repository': 'arvados',
+                    'script': 'crunchrunner',
+                    'runtime_constraints': {
+                        'docker_image': 'arvados/jobs',
+                        'min_cores_per_node': 1,
+                        'min_ram_mb_per_node': 1024,
+                        'min_scratch_mb_per_node': 2048 # tmpdirSize + outdirSize
+                    }
+                },
+                find_or_create=True,
+                filters=[['repository', '=', 'arvados'],
+                         ['script', '=', 'crunchrunner'],
+                         ['script_version', 'in git', '9e5b98e8f5f4727856b53447191f9c06e3da2ba6'],
+                         ['docker_image_locator', 'in docker', 'arvados/jobs']]
+            )
 
     # The test passes some fields in builder.resources
     # For the remaining fields, the defaults will apply: {'cores': 1, 'ram': 1024, 'outdirSize': 1024, 'tmpdirSize': 1024}
     def test_resource_requirements(self):
         runner = mock.MagicMock()
         runner.project_uuid = "zzzzz-8i9sb-zzzzzzzzzzzzzzz"
+        runner.ignore_docker_for_reuse = False
+        document_loader, avsc_names, schema_metadata, metaschema_loader = cwltool.process.get_schema("draft-3")
+
         tool = {
             "inputs": [],
             "outputs": [],
@@ -55,34 +79,37 @@ class TestJob(unittest.TestCase):
             }],
             "baseCommand": "ls"
         }
-        arvtool = arvados_cwl.ArvadosCommandTool(runner, tool)
+        make_fs_access=functools.partial(arvados_cwl.CollectionFsAccess, api_client=runner.api)
+        arvtool = arvados_cwl.ArvadosCommandTool(runner, tool, work_api="jobs", avsc_names=avsc_names, make_fs_access=make_fs_access)
         arvtool.formatgraph = None
-        for j in arvtool.job({}, "", mock.MagicMock()):
+        for j in arvtool.job({}, mock.MagicMock(), basedir="", make_fs_access=make_fs_access):
             j.run()
-        runner.api.jobs().create.assert_called_with(body={
-            'owner_uuid': 'zzzzz-8i9sb-zzzzzzzzzzzzzzz',
-            'runtime_constraints': {},
-            'script_parameters': {
-                'tasks': [{
-                    'task.env': {'TMPDIR': '$(task.tmpdir)'},
-                    'command': ['ls']
-                }],
-<<<<<<< HEAD
-                'crunchrunner': arvados_cwl.crunchrunner_pdh + '/crunchrunner'
-=======
-                'crunchrunner': 'ff6fc71e593081ef9733afacaeee15ea+140/crunchrunner'
->>>>>>> master
+        runner.api.jobs().create.assert_called_with(
+            body={
+                'owner_uuid': 'zzzzz-8i9sb-zzzzzzzzzzzzzzz',
+                'runtime_constraints': {},
+                'script_parameters': {
+                    'tasks': [{
+                        'task.env': {'HOME': '$(task.outdir)', 'TMPDIR': '$(task.tmpdir)'},
+                        'command': ['ls']
+                    }]
             },
             'script_version': 'master',
-            'minimum_script_version': '9e5b98e8f5f4727856b53447191f9c06e3da2ba6',
-            'repository': 'arvados',
-            'script': 'crunchrunner',
-            'runtime_constraints': {
-                'min_cores_per_node': 3,
-                'min_ram_mb_per_node': 3000,
-                'min_scratch_mb_per_node': 5024 # tmpdirSize + outdirSize
-            }
-        }, find_or_create=True)
+                'minimum_script_version': '9e5b98e8f5f4727856b53447191f9c06e3da2ba6',
+                'repository': 'arvados',
+                'script': 'crunchrunner',
+                'runtime_constraints': {
+                    'docker_image': 'arvados/jobs',
+                    'min_cores_per_node': 3,
+                    'min_ram_mb_per_node': 3000,
+                    'min_scratch_mb_per_node': 5024 # tmpdirSize + outdirSize
+                }
+            },
+            find_or_create=True,
+            filters=[['repository', '=', 'arvados'],
+                     ['script', '=', 'crunchrunner'],
+                     ['script_version', 'in git', '9e5b98e8f5f4727856b53447191f9c06e3da2ba6'],
+                     ['docker_image_locator', 'in docker', 'arvados/jobs']])
 
     @mock.patch("arvados.collection.Collection")
     def test_done(self, col):
@@ -92,6 +119,7 @@ class TestJob(unittest.TestCase):
         runner.api = api
         runner.project_uuid = "zzzzz-8i9sb-zzzzzzzzzzzzzzz"
         runner.num_retries = 0
+        runner.ignore_docker_for_reuse = False
 
         col().open.return_value = []
         api.collections().list().execute.side_effect = ({"items": []},