X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/7cd03709ba594237b9cf88afac76d39f28011b35..e68177bfa8de36bd54f705e16e5c4854eafb29a2:/sdk/cwl/tests/test_container.py diff --git a/sdk/cwl/tests/test_container.py b/sdk/cwl/tests/test_container.py index df7d1424db..455aa286e8 100644 --- a/sdk/cwl/tests/test_container.py +++ b/sdk/cwl/tests/test_container.py @@ -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,20 +28,25 @@ 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": [], "outputs": [], - "baseCommand": "ls" + "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', @@ -52,7 +61,7 @@ class TestContainer(unittest.TestCase): 'owner_uuid': 'zzzzz-8i9sb-zzzzzzzzzzzzzzz', 'output_path': '/var/spool/cwl', 'container_image': '99999999999999999999999999999993+99', - 'command': ['ls'], + 'command': ['ls', '/var/spool/cwl'], 'cwd': '/var/spool/cwl' }) @@ -63,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 = { @@ -77,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'} @@ -126,6 +146,7 @@ class TestContainer(unittest.TestCase): arvjob.output_callback = mock.MagicMock() arvjob.collect_outputs = mock.MagicMock() arvjob.successCodes = [0] + arvjob.outdir = "/var/spool/cwl" arvjob.done({ "state": "Complete", @@ -170,6 +191,7 @@ class TestContainer(unittest.TestCase): arvjob.output_callback = mock.MagicMock() arvjob.collect_outputs = mock.MagicMock() arvjob.successCodes = [0] + arvjob.outdir = "/var/spool/cwl" arvjob.done({ "state": "Complete",