7 import arvados.collection
10 class TestSubmit(unittest.TestCase):
11 @mock.patch("arvados.commands.keepdocker.list_images_in_arv")
12 @mock.patch("arvados.collection.KeepClient")
13 @mock.patch("arvados.events.subscribe")
14 def test_submit(self, events, keep, keepdocker):
15 api = mock.MagicMock()
16 def putstub(p, **kwargs):
17 return "%s+%i" % (hashlib.md5(p).hexdigest(), len(p))
18 keep().put.side_effect = putstub
19 keepdocker.return_value = True
20 api.users().current().execute.return_value = {"uuid": "zzzzz-tpzed-zzzzzzzzzzzzzzz"}
21 api.collections().list().execute.return_value = {"items": []}
22 api.collections().create().execute.side_effect = ({"uuid": "zzzzz-4zz18-zzzzzzzzzzzzzz1",
23 "portable_data_hash": "99999999999999999999999999999991+99"},
24 {"uuid": "zzzzz-4zz18-zzzzzzzzzzzzzz2",
25 "portable_data_hash": "99999999999999999999999999999992+99"})
26 api.jobs().create().execute.return_value = {"uuid": "zzzzz-8i9sb-zzzzzzzzzzzzzzz", "state": "Queued"}
28 arvados_cwl.main(["--debug", "--submit", "--no-wait", "tests/wf/submit_wf.cwl", "tests/submit_test_job.json"],
29 sys.stdout, sys.stderr, api_client=api)
31 api.collections().create.assert_has_calls([
33 mock.call(body={'manifest_text': './tool 84ec4df683711de31b782505389a8843+429 0:16:blub.txt 16:413:submit_tool.cwl\n./wf 81d977a245a41b8e79859fbe00623fd0+344 0:344:submit_wf.cwl\n',
34 'owner_uuid': 'zzzzz-tpzed-zzzzzzzzzzzzzzz',
35 'name': 'submit_wf.cwl'
36 }, ensure_unique_name=True),
37 mock.call().execute(),
38 mock.call(body={'manifest_text': '. 979af1245a12a1fed634d4222473bfdc+16 0:16:blorp.txt\n',
39 'owner_uuid': 'zzzzz-tpzed-zzzzzzzzzzzzzzz',
41 }, ensure_unique_name=True),
42 mock.call().execute()])
44 api.jobs().create.assert_called_with(
46 'runtime_constraints': {
47 'docker_image': 'arvados/jobs'
49 'script_parameters': {
51 'path': '99999999999999999999999999999992+99/blorp.txt',
54 'cwl:tool': '99999999999999999999999999999991+99/wf/submit_wf.cwl'
56 'repository': 'arvados',
57 'script_version': 'master',
58 'script': 'cwl-runner'