X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/d8e3a67d508e9a5f5c01884259c0e75a140f64e9..f560aa12166357b3cd10194024f1556631f27587:/sdk/python/tests/arvados_testutil.py diff --git a/sdk/python/tests/arvados_testutil.py b/sdk/python/tests/arvados_testutil.py index d9b3ca86c4..6d58b23360 100644 --- a/sdk/python/tests/arvados_testutil.py +++ b/sdk/python/tests/arvados_testutil.py @@ -4,9 +4,6 @@ from future import standard_library standard_library.install_aliases() -from builtins import str -from builtins import range -from builtins import object import arvados import contextlib import errno @@ -14,7 +11,6 @@ import hashlib import http.client import httplib2 import io -import mock import os import pycurl import queue @@ -23,11 +19,8 @@ import sys import tempfile import unittest -if sys.version_info >= (3, 0): - from io import StringIO, BytesIO -else: - from cStringIO import StringIO - BytesIO = StringIO +from io import StringIO, BytesIO +from unittest import mock # Use this hostname when you want to make sure the traffic will be # instantly refused. 100::/64 is a dedicated black hole. @@ -60,10 +53,10 @@ def mock_responses(body, *codes, **headers): return mock.patch('httplib2.Http.request', side_effect=queue_with(( (fake_httplib2_response(code, **headers), body) for code in codes))) -def mock_api_responses(api_client, body, codes, headers={}): +def mock_api_responses(api_client, body, codes, headers={}, method='request'): if not isinstance(body, bytes) and hasattr(body, 'encode'): body = body.encode() - return mock.patch.object(api_client._http, 'request', side_effect=queue_with(( + return mock.patch.object(api_client._http, method, side_effect=queue_with(( (fake_httplib2_response(code, **headers), body) for code in codes))) def str_keep_locator(s): @@ -280,3 +273,30 @@ if sys.version_info < (3, 0): return self.assertNotRegexpMatches(*args, **kwargs) unittest.TestCase.assertRegex = assertRegex unittest.TestCase.assertNotRegex = assertNotRegex + +def binary_compare(a, b): + if len(a) != len(b): + return False + for i in range(0, len(a)): + if a[i] != b[i]: + return False + return True + +def make_block_cache(disk_cache): + if disk_cache: + disk_cache_dir = os.path.join(os.path.expanduser("~"), ".cache", "arvados", "keep") + shutil.rmtree(disk_cache_dir, ignore_errors=True) + block_cache = arvados.keep.KeepBlockCache(disk_cache=disk_cache) + return block_cache + + +class DiskCacheBase: + def make_block_cache(self, disk_cache): + self.disk_cache_dir = tempfile.mkdtemp() if disk_cache else None + block_cache = arvados.keep.KeepBlockCache(disk_cache=disk_cache, + disk_cache_dir=self.disk_cache_dir) + return block_cache + + def tearDown(self): + if self.disk_cache_dir: + shutil.rmtree(self.disk_cache_dir)