[arvados] updated: 2.1.0-3094-g1913b4edc
git repository hosting
git at public.arvados.org
Mon Nov 28 22:29:47 UTC 2022
Summary of changes:
sdk/python/tests/test_keep_client.py | 47 ++++++++++++++++++++++++++++++++++++
1 file changed, 47 insertions(+)
via 1913b4edcb176909e8cf7ef3272c41bf8f2c7e1a (commit)
from 650265966e83fca4ce8e9a416e9b5e358e82be98 (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 1913b4edcb176909e8cf7ef3272c41bf8f2c7e1a
Author: Peter Amstutz <peter.amstutz at curii.com>
Date: Mon Nov 28 17:29:34 2022 -0500
18842: Add a couple of error handling tests
Arvados-DCO-1.1-Signed-off-by: Peter Amstutz <peter.amstutz at curii.com>
diff --git a/sdk/python/tests/test_keep_client.py b/sdk/python/tests/test_keep_client.py
index 5a7cf2c2a..0fe396113 100644
--- a/sdk/python/tests/test_keep_client.py
+++ b/sdk/python/tests/test_keep_client.py
@@ -12,6 +12,7 @@ from builtins import object
import hashlib
import mock
import os
+import errno
import pycurl
import random
import re
@@ -1707,3 +1708,49 @@ class KeepDiskCacheTestCase(unittest.TestCase, tutil.ApiClientMock):
with self.assertRaises(arvados.errors.KeepCacheError):
with tutil.mock_keep_responses(self.data, 200) as mock:
keep_client.get(self.locator)
+
+
+ @mock.patch('mmap.mmap')
+ def test_disk_cache_retry_write_error(self, mockmmap):
+ block_cache = arvados.keep.KeepBlockCache(disk_cache=True,
+ disk_cache_dir=self.disk_cache_dir)
+
+ keep_client = arvados.KeepClient(api_client=self.api_client, block_cache=block_cache)
+
+ mockmmap.side_effect = (OSError(errno.ENOSPC, "no space"), self.data)
+
+ cache_max_before = block_cache.cache_max
+
+ with tutil.mock_keep_responses(self.data, 200) as mock:
+ self.assertTrue(tutil.binary_compare(keep_client.get(self.locator), self.data))
+
+ self.assertIsNotNone(keep_client.get_from_cache(self.locator))
+
+ with open(os.path.join(self.disk_cache_dir, self.locator[0:3], self.locator+".keepcacheblock"), "rb") as f:
+ self.assertTrue(tutil.binary_compare(f.read(), self.data))
+
+ # shrank the cache in response to ENOSPC
+ self.assertTrue(cache_max_before > block_cache.cache_max)
+
+
+ @mock.patch('mmap.mmap')
+ def test_disk_cache_retry_write_error2(self, mockmmap):
+ block_cache = arvados.keep.KeepBlockCache(disk_cache=True,
+ disk_cache_dir=self.disk_cache_dir)
+
+ keep_client = arvados.KeepClient(api_client=self.api_client, block_cache=block_cache)
+
+ mockmmap.side_effect = (OSError(errno.ENOMEM, "no memory"), self.data)
+
+ slots_before = block_cache._max_slots
+
+ with tutil.mock_keep_responses(self.data, 200) as mock:
+ self.assertTrue(tutil.binary_compare(keep_client.get(self.locator), self.data))
+
+ self.assertIsNotNone(keep_client.get_from_cache(self.locator))
+
+ with open(os.path.join(self.disk_cache_dir, self.locator[0:3], self.locator+".keepcacheblock"), "rb") as f:
+ self.assertTrue(tutil.binary_compare(f.read(), self.data))
+
+ # shrank the cache in response to ENOMEM
+ self.assertTrue(slots_before > block_cache._max_slots)
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list