import sys
import unittest
import json
+import logging
from .matcher import JsonDiffMatcher
@mock.patch("arvados.commands.keepdocker.list_images_in_arv")
@mock.patch("arvados.collection.KeepClient")
@mock.patch("arvados.events.subscribe")
- def wrapped(self, events, KeepClient, keepdocker, *args, **kwargs):
+ def wrapped(self, events, keep_client, keepdocker, *args, **kwargs):
class Stubs:
pass
stubs = Stubs()
stubs.events = events
- stubs.KeepClient = KeepClient
stubs.keepdocker = keepdocker
+ stubs.keep_client = keep_client
def putstub(p, **kwargs):
return "%s+%i" % (hashlib.md5(p).hexdigest(), len(p))
- stubs.KeepClient().put.side_effect = putstub
+ stubs.keep_client().put.side_effect = putstub
+ stubs.keep_client.put.side_effect = putstub
stubs.keepdocker.return_value = [("zzzzz-4zz18-zzzzzzzzzzzzzz3", "")]
stubs.fake_user_uuid = "zzzzz-tpzed-zzzzzzzzzzzzzzz"
+
stubs.api = mock.MagicMock()
stubs.api.users().current().execute.return_value = {
"uuid": stubs.fake_user_uuid,
'script_parameters': {
'x': {
'basename': 'blorp.txt',
- 'location': '99999999999999999999999999999994+99/blorp.txt',
+ 'location': 'keep:99999999999999999999999999999994+99/blorp.txt',
'class': 'File'
},
+ 'y': {
+ 'basename': '99999999999999999999999999999998+99',
+ 'location': 'keep:99999999999999999999999999999998+99',
+ 'class': 'Directory'
+ },
+ 'z': {
+ 'basename': 'anonymous',
+ "listing": [{
+ "basename": "renamed.txt",
+ "class": "File",
+ "location": "keep:99999999999999999999999999999998+99/file1.txt"
+ }],
+ 'class': 'Directory'
+ },
'cwl:tool':
'99999999999999999999999999999991+99/wf/submit_wf.cwl'
},
'kind': 'file'
},
'/var/lib/cwl/job/cwl.input.json': {
- 'portable_data_hash': '765fda0d9897729ff467a4609879c00a+60/cwl.input.json',
+ 'portable_data_hash': 'd20d7cddd1984f105dd3702c7f125afb+60/cwl.input.json',
'kind': 'collection'
}
},
'manifest_text':
'./tool d51232d96b6116d964a69bfb7e0c73bf+450 '
'0:16:blub.txt 16:434:submit_tool.cwl\n./wf '
- '4d31c5fefd087faf67ca8db0111af36c+353 0:353:submit_wf.cwl\n',
+ 'cc2ffb940e60adf1b2b282c67587e43d+413 0:413:submit_wf.cwl\n',
'owner_uuid': 'zzzzz-tpzed-zzzzzzzzzzzzzzz',
'name': 'submit_wf.cwl',
}, ensure_unique_name=True),
@stubs
def test_submit_container(self, stubs):
capture_stdout = cStringIO.StringIO()
- exited = arvados_cwl.main(
- ["--submit", "--no-wait", "--api=containers", "--debug",
- "tests/wf/submit_wf.cwl", "tests/submit_test_job.json"],
- capture_stdout, sys.stderr, api_client=stubs.api)
- self.assertEqual(exited, 0)
+ try:
+ exited = arvados_cwl.main(
+ ["--submit", "--no-wait", "--api=containers", "--debug",
+ "tests/wf/submit_wf.cwl", "tests/submit_test_job.json"],
+ capture_stdout, sys.stderr, api_client=stubs.api, keep_client=stubs.keep_client)
+ self.assertEqual(exited, 0)
+ except:
+ logging.exception("")
stubs.api.collections().create.assert_has_calls([
mock.call(),
'manifest_text':
'./tool d51232d96b6116d964a69bfb7e0c73bf+450 '
'0:16:blub.txt 16:434:submit_tool.cwl\n./wf '
- '4d31c5fefd087faf67ca8db0111af36c+353 0:353:submit_wf.cwl\n',
+ 'cc2ffb940e60adf1b2b282c67587e43d+413 0:413:submit_wf.cwl\n',
'owner_uuid': 'zzzzz-tpzed-zzzzzzzzzzzzzzz',
'name': 'submit_wf.cwl',
}, ensure_unique_name=True),
'type': 'File',
'value': '99999999999999999999999999999994+99/blorp.txt',
}
+ expect_component['script_parameters']['y'] = {
+ 'dataclass': 'Collection',
+ 'required': True,
+ 'type': 'Directory',
+ 'value': '99999999999999999999999999999998+99',
+ }
+ expect_component['script_parameters']['z'] = {
+ 'dataclass': 'Collection',
+ 'required': True,
+ 'type': 'Directory',
+ }
expect_template = {
"components": {
"submit_wf.cwl": expect_component,
"owner_uuid": project_uuid,
"name": "submit_wf.cwl",
"description": "",
- "workflow": expect_workflow
+ "definition": expect_workflow
}
}
stubs.api.workflows().create.assert_called_with(