Merge branch 'master' into 9307-cwl-use-tmp-output
[arvados.git] / sdk / cwl / tests / test_container.py
index a65c02e735b49eae24f0d21b156e26acb57b12cb..455aa286e8bbb1f9126219933d675359963ca2ce 100644 (file)
@@ -3,7 +3,11 @@ import logging
 import mock
 import unittest
 import os
+import functools
 import cwltool.process
+from schema_salad.ref_resolver import Loader
+
+from schema_salad.ref_resolver import Loader
 
 if not os.getenv('ARVADOS_DEBUG'):
     logging.getLogger('arvados.cwl-runner').setLevel(logging.WARN)
@@ -24,7 +28,7 @@ class TestContainer(unittest.TestCase):
         runner.api.collections().get().execute.return_value = {
             "portable_data_hash": "99999999999999999999999999999993+99"}
 
-        document_loader, avsc_names, schema_metadata, metaschema_loader = cwltool.process.get_schema("draft-3")
+        document_loader, avsc_names, schema_metadata, metaschema_loader = cwltool.process.get_schema("v1.0")
 
         tool = {
             "inputs": [],
@@ -32,13 +36,17 @@ class TestContainer(unittest.TestCase):
             "baseCommand": "ls",
             "arguments": [{"valueFrom": "$(runtime.outdir)"}]
         }
-        arvtool = arvados_cwl.ArvadosCommandTool(runner, tool, work_api="containers", avsc_names=avsc_names, basedir="")
+        make_fs_access=functools.partial(arvados_cwl.CollectionFsAccess, api_client=runner.api)
+        arvtool = arvados_cwl.ArvadosCommandTool(runner, tool, work_api="containers", avsc_names=avsc_names,
+                                                 basedir="", make_fs_access=make_fs_access, loader=Loader({}))
         arvtool.formatgraph = None
-        for j in arvtool.job({}, mock.MagicMock(), basedir="", name="test_run"):
+        for j in arvtool.job({}, mock.MagicMock(), basedir="", name="test_run",
+                             make_fs_access=make_fs_access, tmpdir="/tmp"):
             j.run()
             runner.api.container_requests().create.assert_called_with(
                 body={
                     'environment': {
+                        'HOME': '/var/spool/cwl',
                         'TMPDIR': '/tmp'
                     },
                     'name': 'test_run',
@@ -64,7 +72,7 @@ class TestContainer(unittest.TestCase):
         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")
+        document_loader, avsc_names, schema_metadata, metaschema_loader = cwltool.process.get_schema("v1.0")
 
         keepdocker.return_value = [("zzzzz-4zz18-zzzzzzzzzzzzzz3", "")]
         runner.api.collections().get().execute.return_value = {
@@ -78,23 +86,34 @@ class TestContainer(unittest.TestCase):
                 "coresMin": 3,
                 "ramMin": 3000,
                 "tmpdirMin": 4000
+            }, {
+                "class": "http://arvados.org/cwl#RuntimeConstraints",
+                "keep_cache": 512
+            }, {
+                "class": "http://arvados.org/cwl#APIRequirement",
             }],
             "baseCommand": "ls"
         }
-        arvtool = arvados_cwl.ArvadosCommandTool(runner, tool, work_api="containers", avsc_names=avsc_names)
+        make_fs_access=functools.partial(arvados_cwl.CollectionFsAccess, api_client=runner.api)
+        arvtool = arvados_cwl.ArvadosCommandTool(runner, tool, work_api="containers",
+                                                 avsc_names=avsc_names, make_fs_access=make_fs_access,
+                                                 loader=Loader({}))
         arvtool.formatgraph = None
-        for j in arvtool.job({}, mock.MagicMock(), basedir="", name="test_resource_requirements"):
+        for j in arvtool.job({}, mock.MagicMock(), basedir="", name="test_resource_requirements",
+                             make_fs_access=make_fs_access, tmpdir="/tmp"):
             j.run()
 
         runner.api.container_requests().create.assert_called_with(
             body={
                 'environment': {
+                    'HOME': '/var/spool/cwl',
                     'TMPDIR': '/tmp'
                 },
                 'name': 'test_resource_requirements',
                 'runtime_constraints': {
                     'vcpus': 3,
-                    'ram': 3145728000
+                    'ram': 3145728000,
+                    'API': True
                 }, 'priority': 1,
                 'mounts': {
                     '/var/spool/cwl': {'kind': 'tmp'}