3147: Move PySDK HTTP test infrastructure to testutil.
[arvados.git] / sdk / python / tests / arvados_testutil.py
index cd86d80dc0d863f48b4fa692426e9ca4c0a24534..48fb013891564f04fdb69e19d71c6c648b01e97d 100644 (file)
@@ -1,11 +1,29 @@
 #!/usr/bin/env python
 
 import errno
+import httplib
+import httplib2
+import mock
 import os
 import shutil
 import tempfile
 import unittest
 
+# Use this hostname when you want to make sure the traffic will be
+# instantly refused.  100::/64 is a dedicated black hole.
+TEST_HOST = '100::'
+
+skip_sleep = mock.patch('time.sleep', lambda n: None)  # clown'll eat me
+
+def fake_httplib2_response(code, **headers):
+    headers.update(status=str(code),
+                   reason=httplib.responses.get(code, "Unknown Response"))
+    return httplib2.Response(headers)
+
+def mock_responses(body, *codes):
+    return mock.patch('httplib2.Http.request', side_effect=(
+            (fake_httplib2_response(code), body) for code in codes))
+
 class ArvadosBaseTestCase(unittest.TestCase):
     # This class provides common utility functions for our tests.
 
@@ -27,20 +45,6 @@ class ArvadosBaseTestCase(unittest.TestCase):
             basedir = '.'
         return open(os.path.join(basedir, 'data', filename))
 
-
-class ArvadosKeepLocalStoreTestCase(ArvadosBaseTestCase):
-    def setUp(self):
-        super(ArvadosKeepLocalStoreTestCase, self).setUp()
-        self._orig_keep_local_store = os.environ.get('KEEP_LOCAL_STORE')
-        os.environ['KEEP_LOCAL_STORE'] = self.make_tmpdir()
-
-    def tearDown(self):
-        if self._orig_keep_local_store is None:
-            del os.environ['KEEP_LOCAL_STORE']
-        else:
-            os.environ['KEEP_LOCAL_STORE'] = self._orig_keep_local_store
-        super(ArvadosKeepLocalStoreTestCase, self).tearDown()
-
     def build_directory_tree(self, tree):
         tree_root = self.make_tmpdir()
         for leaf in tree: