X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/0fa7cd5bfdab924f316046f923aec282b699d8a1..714c555bda26a6a27fad7caef382d1d6705ad215:/sdk/python/tests/test_keep_client.py diff --git a/sdk/python/tests/test_keep_client.py b/sdk/python/tests/test_keep_client.py index 90468924a6..ada0dac80e 100644 --- a/sdk/python/tests/test_keep_client.py +++ b/sdk/python/tests/test_keep_client.py @@ -368,7 +368,7 @@ class KeepClientServiceTestCase(unittest.TestCase, tutil.ApiClientMock): def test_put_error_does_not_include_successful_puts(self): data = 'partial failure test' - data_loc = '{}+{}'.format(hashlib.md5(data).hexdigest(), len(data)) + data_loc = tutil.str_keep_locator(data) api_client = self.mock_keep_services(count=3) with tutil.mock_keep_responses(data_loc, 200, 500, 500) as req_mock, \ self.assertRaises(arvados.errors.KeepWriteError) as exc_check: @@ -378,7 +378,7 @@ class KeepClientServiceTestCase(unittest.TestCase, tutil.ApiClientMock): def test_proxy_put_with_no_writable_services(self): data = 'test with no writable services' - data_loc = '{}+{}'.format(hashlib.md5(data).hexdigest(), len(data)) + data_loc = tutil.str_keep_locator(data) api_client = self.mock_keep_services(service_type='proxy', read_only=True, count=1) with tutil.mock_keep_responses(data_loc, 200, 500, 500) as req_mock, \ self.assertRaises(arvados.errors.KeepWriteError) as exc_check: @@ -387,6 +387,36 @@ class KeepClientServiceTestCase(unittest.TestCase, tutil.ApiClientMock): self.assertEqual(True, ("no Keep services available" in str(exc_check.exception))) self.assertEqual(0, len(exc_check.exception.request_errors())) + def test_oddball_service_get(self): + body = 'oddball service get' + api_client = self.mock_keep_services(service_type='fancynewblobstore') + with tutil.mock_keep_responses(body, 200): + keep_client = arvados.KeepClient(api_client=api_client) + actual = keep_client.get(tutil.str_keep_locator(body)) + self.assertEqual(body, actual) + + def test_oddball_service_put(self): + body = 'oddball service put' + pdh = tutil.str_keep_locator(body) + api_client = self.mock_keep_services(service_type='fancynewblobstore') + with tutil.mock_keep_responses(pdh, 200): + keep_client = arvados.KeepClient(api_client=api_client) + actual = keep_client.put(body, copies=1) + self.assertEqual(pdh, actual) + + def test_oddball_service_writer_count(self): + body = 'oddball service writer count' + pdh = tutil.str_keep_locator(body) + api_client = self.mock_keep_services(service_type='fancynewblobstore', + count=4) + headers = {'x-keep-replicas-stored': 3} + with tutil.mock_keep_responses(pdh, 200, 418, 418, 418, + **headers) as req_mock: + keep_client = arvados.KeepClient(api_client=api_client) + actual = keep_client.put(body, copies=2) + self.assertEqual(pdh, actual) + self.assertEqual(1, req_mock.call_count) + @tutil.skip_sleep class KeepClientRendezvousTestCase(unittest.TestCase, tutil.ApiClientMock): @@ -518,7 +548,7 @@ class KeepClientRendezvousTestCase(unittest.TestCase, tutil.ApiClientMock): def check_64_zeros_error_order(self, verb, exc_class): data = '0' * 64 if verb == 'get': - data = hashlib.md5(data).hexdigest() + '+1234' + data = tutil.str_keep_locator(data) # Arbitrary port number: aport = random.randint(1024,65535) api_client = self.mock_keep_services(service_port=aport, count=self.services)