[ARVADOS] updated: 39f461e6b1a1cecdcc3bea2d6af0bece2162ef88
git at public.curoverse.com
git at public.curoverse.com
Wed Aug 19 18:01:45 EDT 2015
Summary of changes:
sdk/python/arvados/__init__.py | 8 +++--
sdk/python/tests/test_init.py | 79 +++++++++++++++++++++++++++++++++++-------
2 files changed, 71 insertions(+), 16 deletions(-)
via 39f461e6b1a1cecdcc3bea2d6af0bece2162ef88 (commit)
from 9cfdca66cebc02c84269d5a1c5f4abbe7878683c (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
commit 39f461e6b1a1cecdcc3bea2d6af0bece2162ef88
Author: Bryan Cosca <bcosc at curoverse.com>
Date: Wed Aug 19 18:01:38 2015 -0400
more flailing, I think I figured out how to mock the methods in job_setup, by copying test_collections.py but ran into a super issue
diff --git a/sdk/python/arvados/__init__.py b/sdk/python/arvados/__init__.py
index 0074c43..953c073 100644
--- a/sdk/python/arvados/__init__.py
+++ b/sdk/python/arvados/__init__.py
@@ -40,13 +40,15 @@ logger.addHandler(log_handler)
logger.setLevel(logging.DEBUG if config.get('ARVADOS_DEBUG')
else logging.WARNING)
-def task_set_output(self,s,api_client=None):
+def task_set_output(self,s,api_client=None,num_retries=None):
if not api_client:
api_client = api('v1')
- ok = False
- output_retry_loop = RetryLoop(num_retries=2, backoff_start=0)
+ if not num_retries:
+ num_retries = 0
+
+ output_retry_loop = RetryLoop(num_retries=num_retries, backoff_start=0)
for tries_left in output_retry_loop:
try:
result = api_client.job_tasks().update(uuid=self['uuid'],
diff --git a/sdk/python/tests/test_init.py b/sdk/python/tests/test_init.py
index bc56ca3..b180e1c 100644
--- a/sdk/python/tests/test_init.py
+++ b/sdk/python/tests/test_init.py
@@ -1,4 +1,4 @@
- #!/usr/bin/env python
+#!/usr/bin/env python
import mock
import os
@@ -6,23 +6,76 @@ import unittest
import arvados
import arvados.collection
+import arvados_testutil as tutil
+import run_test_server
-class TestSDK(unittest.TestCase):
+class CollectionTestMixin(tutil.ApiClientMock):
+ API_COLLECTIONS = run_test_server.fixture('collections')
+ DEFAULT_COLLECTION = API_COLLECTIONS['foo_file']
+ DEFAULT_DATA_HASH = DEFAULT_COLLECTION['portable_data_hash']
+ DEFAULT_MANIFEST = DEFAULT_COLLECTION['manifest_text']
+ DEFAULT_UUID = DEFAULT_COLLECTION['uuid']
+ ALT_COLLECTION = API_COLLECTIONS['bar_file']
+ ALT_DATA_HASH = ALT_COLLECTION['portable_data_hash']
+ ALT_MANIFEST = ALT_COLLECTION['manifest_text']
- FAKE_HASH = '7idummyhashb0b1f1f03e4e6f69c4a4e+28243'
+ def api_client_mock(self, status=200):
+ client = super(CollectionTestMixin, self).api_client_mock()
+ self.mock_keep_services(client, status=status, service_type='proxy', count=1)
+ return client
- mock_api = mock.MagicMock()
+class JobSetupTestCase(unittest.TestCase, CollectionTestMixin):
+ def mock_get_collection(self, api_mock, code, body):
+ body = self.API_COLLECTIONS.get(body)
+ self._mock_api_call(api_mock.collections().get, code, body)
- def test_task_set_output_success(self, mock_input=FAKE_HASH, api_client=mock_api):
- api_client.job_tasks().update().execute.side_effect = arvados.errors.HttpError(status_code=200,reason="Mock 200")
- arvados.task_set_output({'uuid':'zzzzz-zzzzz-zzzzzzzzzzzzzzz'},s=mock_input,api_client=api_client)
+ def api_client_mock(self, status=200):
+ client = super(SDKTestCase, self).api_client_mock()
+ self.mock_get_collection(client, status, 'foo_file')
+ return client
+
+ def test_one_task_per_input_file_no_default_retries(self):
+ client = self.api_client_mock(200)
+ test = arvados.job_setup.one_task_per_input_file(api_client=client,num_retries=0)
+ client.job_tasks().update().execute.assert_called_with(num_retries=0)
+
+class SDKTestCase(unittest.TestCase, CollectionTestMixin):
+ def mock_get_collection(self, api_mock, code, body):
+ body = self.API_COLLECTIONS.get(body)
+ self._mock_api_call(api_mock.collections().get, code, body)
+
+ def api_client_mock(self, status=200):
+ client = super(SDKTestCase, self).api_client_mock()
+ self.mock_get_collection(client, status, 'foo_file')
+ return client
+
+ def test_init_no_default_retries(self):
+ client = self.api_client_mock(200)
+ test = arvados.task_set_output({'uuid':'zzzzz-zzzzz-zzzzzzzzzzzzzzz'}, s=self.DEFAULT_DATA_HASH, api_client=client)
+ #client.job_tasks().update().execute.assert_called_with(num_retries=0)
+
+#### tests for functions, not methods ####
+
+#class TestSDK(unittest.TestCase, tutil.ApiClientMock):
+
+# FAKE_HASH = '7idummyhashb0b1f1f03e4e6f69c4a4e+28243'
+
+ #mock_api = mock.MagicMock()
+ #mock_instance = arvados_testutil.ApiClientMock
+ #mock_api = mock_instance.api_client_mock()
+
+# def test_task_set_output_success(self, mock_input=FAKE_HASH, api_client=mock_api):
+# api_client.job_tasks().update().execute.side_effect = arvados.errors.HttpError(status_code=200,reason="Mock 200")
+# arvados.task_set_output({'uuid':'zzzzz-zzzzz-zzzzzzzzzzzzzzz'},s=mock_input,api_client=api_client)
- def test_task_set_output_failure(self, mock_input=FAKE_HASH, api_client=mock_api):
- api_client.job_tasks().update().execute.side_effect = arvados.errors.HttpError(status_code=404,reason="Mock 404")
- arvados.task_set_output({'uuid':'zzzzz-zzzzz-zzzzzzzzzzzzzzz'},s=mock_input,api_client=api_client)
+ #arvados_testutil.ApiClientMock.api_client_mock()
+
+# def test_task_set_output_failure(self, mock_input=FAKE_HASH, api_client=mock_api):
+# api_client.job_tasks().update().execute.side_effect = arvados.errors.HttpError(status_code=404,reason="Mock 404")
+# arvados.task_set_output({'uuid':'zzzzz-zzzzz-zzzzzzzzzzzzzzz'},s=mock_input,api_client=api_client)
- def test_task_set_output_retryable(self, mock_input=FAKE_HASH, api_client=mock_api):
- api_client.job_tasks().update().execute.side_effect = arvados.errors.HttpError(status_code=408,reason="Mock 500")
- arvados.task_set_output({'uuid':'zzzzz-zzzzz-zzzzzzzzzzzzzzz'},s=mock_input,api_client=api_client)
+# def test_task_set_output_retryable(self, mock_input=FAKE_HASH, api_client=mock_api):
+# api_client.job_tasks().update().execute.side_effect = arvados.errors.HttpError(status_code=408,reason="Mock 500")
+# arvados.task_set_output({'uuid':'zzzzz-zzzzz-zzzzzzzzzzzzzzz'},s=mock_input,api_client=api_client)
# need a spy to make mock_api return down if retry_num = 1 and mock_api return up if retry_num = 2
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list