[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