3147: Move PySDK HTTP test infrastructure to testutil.
[arvados.git] / sdk / python / tests / arvados_testutil.py
index 369d5618044036c30698bb263a2b1aa188b3621b..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.