X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/e47fe8663303df51081a77646e061b11aa892df1..f4661a02245a35f8d223693a5aecaae87083fb16:/sdk/python/tests/test_cache.py diff --git a/sdk/python/tests/test_cache.py b/sdk/python/tests/test_cache.py index 9697e47708..4d68b401ee 100644 --- a/sdk/python/tests/test_cache.py +++ b/sdk/python/tests/test_cache.py @@ -1,11 +1,18 @@ +from __future__ import print_function + import md5 -import shutil +import mock +import os import random +import shutil +import sys import tempfile import threading import unittest import arvados.cache +import arvados +import run_test_server def _random(n): @@ -20,13 +27,19 @@ class CacheTestThread(threading.Thread): def run(self): c = arvados.cache.SafeHTTPCache(self._dir) url = 'http://example.com/foo' + self.ok = True for x in range(16): - data_in = _random(128) - data_in = md5.new(data_in).hexdigest() + "\n" + str(data_in) - c.set(url, data_in) - data_out = c.get(url) - digest, content = data_out.split("\n", 1) - self.ok = (digest == md5.new(content).hexdigest()) + try: + data_in = _random(128) + data_in = md5.new(data_in).hexdigest() + "\n" + str(data_in) + c.set(url, data_in) + data_out = c.get(url) + digest, content = data_out.split("\n", 1) + if digest != md5.new(content).hexdigest(): + self.ok = False + except Exception as err: + self.ok = False + print("cache failed: {}".format(err), file=sys.stderr) class CacheTest(unittest.TestCase): @@ -36,6 +49,17 @@ class CacheTest(unittest.TestCase): def tearDown(self): shutil.rmtree(self._dir) + def test_cache_create_error(self): + _, filename = tempfile.mkstemp() + home_was = os.environ['HOME'] + os.environ['HOME'] = filename + try: + c = arvados.http_cache('test') + self.assertEqual(None, c) + finally: + os.environ['HOME'] = home_was + os.unlink(filename) + def test_cache_crud(self): c = arvados.cache.SafeHTTPCache(self._dir, max_age=0) url = 'https://example.com/foo?bar=baz' @@ -60,3 +84,12 @@ class CacheTest(unittest.TestCase): for t in threads: t.join() self.assertTrue(t.ok) + + +class CacheIntegrationTest(run_test_server.TestCaseWithServers): + MAIN_SERVER = {} + + def test_cache_used_by_default_client(self): + with mock.patch('arvados.cache.SafeHTTPCache.get') as getter: + arvados.api('v1')._rootDesc.get('foobar') + getter.assert_called()