Example #1
0
 def test_locator_init(self):
     client = self.api_client_mock(200)
     # Ensure Keep will not return anything if asked.
     with tutil.mock_responses(None, 404):
         reader = arvados.CollectionReader(self.DEFAULT_DATA_HASH,
                                           api_client=client)
         self.assertEqual(self.DEFAULT_MANIFEST, reader.manifest_text())
Example #2
0
 def test_init_num_retries_propagated(self):
     # More of an integration test...
     client = self.api_client_mock(200)
     reader = arvados.CollectionReader(self.DEFAULT_UUID, api_client=client,
                                       num_retries=3)
     with tutil.mock_responses('foo', 500, 500, 200):
         self.assertEqual('foo',
                          ''.join(f.read(9) for f in reader.all_files()))
Example #3
0
 def test_locator_init_falls_back_to_keep(self):
     # Reading manifests from Keep is deprecated.  Feel free to
     # remove this test when we remove the fallback.
     client = self.api_client_mock(200)
     self.mock_get_collection(client, 404, None)
     with tutil.mock_responses(self.DEFAULT_MANIFEST, 200):
         reader = arvados.CollectionReader(self.DEFAULT_DATA_HASH,
                                           api_client=client, num_retries=3)
         self.assertEqual(self.DEFAULT_MANIFEST, reader.manifest_text())
Example #4
0
 def test_general_exception_with_mixed_errors(self):
     # get should raise a NotFoundError if no server returns the block,
     # and a high threshold of servers report that it's not found.
     # This test rigs up 50/50 disagreement between two servers, and
     # checks that it does not become a NotFoundError.
     client = self.new_client()
     with tutil.mock_responses(self.DEFAULT_EXPECT, 404, 500):
         with self.assertRaises(arvados.errors.KeepReadError) as exc_check:
             client.get(self.HINTED_LOCATOR)
         self.assertNotIsInstance(
             exc_check.exception, arvados.errors.NotFoundError,
             "mixed errors raised NotFoundError")
Example #5
0
 def test_general_exception_with_mixed_errors(self):
     # get should raise a NotFoundError if no server returns the block,
     # and a high threshold of servers report that it's not found.
     # This test rigs up 50/50 disagreement between two servers, and
     # checks that it does not become a NotFoundError.
     client = self.new_client()
     with tutil.mock_responses(self.DEFAULT_EXPECT, 404, 500):
         with self.assertRaises(arvados.errors.KeepReadError) as exc_check:
             client.get(self.HINTED_LOCATOR)
         self.assertNotIsInstance(exc_check.exception,
                                  arvados.errors.NotFoundError,
                                  "mixed errors raised NotFoundError")
Example #6
0
 def test_immediate_success(self):
     with tutil.mock_responses(self.DEFAULT_EXPECT, 200):
         self.check_success()
Example #7
0
 def test_method_retries_take_precedence(self):
     reader = self.reader_for('user_agreement', num_retries=10)
     with tutil.mock_responses('', 500, 500, 500, 200):
         with self.assertRaises(arvados.errors.KeepReadError):
             self.read_for_test(reader, 10, num_retries=1)
Example #8
0
 def mock_keep(self, body, *codes, **headers):
     headers.setdefault('x-keep-replicas-stored', 2)
     return tutil.mock_responses(body, *codes, **headers)
Example #9
0
 def test_read_method_retries_exhausted(self):
     reader = self.reader_for('bar_file')
     with tutil.mock_responses('bar', 500, 500, 500, 500, 200):
         with self.assertRaises(arvados.errors.KeepReadError):
             self.read_for_test(reader, 3, num_retries=3)
Example #10
0
 def test_read_no_default_retry(self):
     reader = self.reader_for('user_agreement')
     with tutil.mock_responses('', 500):
         with self.assertRaises(arvados.errors.KeepReadError):
             self.read_for_test(reader, 10)
Example #11
0
 def test_do_not_send_multiple_copies_to_same_server(self):
     with tutil.mock_responses(self.DEFAULT_EXPECT, 200):
         self.check_exception(copies=2, num_retries=3)
Example #12
0
 def test_retry_then_success(self):
     with tutil.mock_responses(self.DEFAULT_EXPECT, 500, 200):
         self.check_success(num_retries=3)
Example #13
0
 def test_num_retries_instance_fallback(self):
     self.client_kwargs['num_retries'] = 3
     with tutil.mock_responses(self.DEFAULT_EXPECT, 500, 200):
         self.check_success()
Example #14
0
 def test_no_retry_after_permanent_error(self):
     with tutil.mock_responses(self.DEFAULT_EXPECT, 403, 200):
         self.check_exception(num_retries=3)
Example #15
0
 def test_specific_exception_when_not_found(self):
     with tutil.mock_responses(self.DEFAULT_EXPECT, 404, 200):
         self.check_exception(arvados.errors.NotFoundError, num_retries=3)
Example #16
0
 def test_num_retries_instance_fallback(self):
     self.client_kwargs['num_retries'] = 3
     with tutil.mock_responses(self.DEFAULT_EXPECT, 500, 200):
         self.check_success()
Example #17
0
 def test_error_after_retries_exhausted(self):
     with tutil.mock_responses(self.DEFAULT_EXPECT, 500, 500, 200):
         self.check_exception(num_retries=1)
Example #18
0
 def test_no_retry_after_permanent_error(self):
     with tutil.mock_responses(self.DEFAULT_EXPECT, 403, 200):
         self.check_exception(num_retries=3)
Example #19
0
 def test_no_default_retry(self):
     with tutil.mock_responses(self.DEFAULT_EXPECT, 500, 200):
         self.check_exception()
Example #20
0
 def test_retry_then_success(self):
     with tutil.mock_responses(self.DEFAULT_EXPECT, 500, 200):
         self.check_success(num_retries=3)
Example #21
0
 def test_no_default_retry(self):
     with tutil.mock_responses(self.DEFAULT_EXPECT, 500, 200):
         self.check_exception()
Example #22
0
 def test_immediate_success(self):
     with tutil.mock_responses(self.DEFAULT_EXPECT, 200):
         self.check_success()
Example #23
0
 def test_error_after_retries_exhausted(self):
     with tutil.mock_responses(self.DEFAULT_EXPECT, 500, 500, 200):
         self.check_exception(num_retries=1)
Example #24
0
 def test_hint_server_can_succeed_without_retries(self):
     with tutil.mock_responses(self.DEFAULT_EXPECT, 404, 200, 500):
         self.check_success(locator=self.HINTED_LOCATOR)
Example #25
0
 def test_specific_exception_when_not_found(self):
     with tutil.mock_responses(self.DEFAULT_EXPECT, 404, 200):
         self.check_exception(arvados.errors.NotFoundError, num_retries=3)
Example #26
0
 def test_do_not_send_multiple_copies_to_same_server(self):
     with tutil.mock_responses(self.DEFAULT_EXPECT, 200):
         self.check_exception(copies=2, num_retries=3)
Example #27
0
 def test_hint_server_can_succeed_without_retries(self):
     with tutil.mock_responses(self.DEFAULT_EXPECT, 404, 200, 500):
         self.check_success(locator=self.HINTED_LOCATOR)
Example #28
0
 def test_success_without_retries(self):
     reader = self.reader_for('bar_file')
     with tutil.mock_responses('bar', 200):
         self.assertEqual('bar', self.read_for_test(reader, 3))
Example #29
0
 def test_success_without_retries(self):
     reader = self.reader_for('bar_file')
     with tutil.mock_responses('bar', 200):
         self.assertEqual('bar', self.read_for_test(reader, 3))
Example #30
0
 def test_read_no_default_retry(self):
     reader = self.reader_for('user_agreement')
     with tutil.mock_responses('', 500):
         with self.assertRaises(arvados.errors.KeepReadError):
             self.read_for_test(reader, 10)
Example #31
0
 def test_read_with_method_retries(self):
     reader = self.reader_for('foo_file')
     with tutil.mock_responses('foo', 500, 200):
         self.assertEqual('foo', self.read_for_test(reader,
                                                    3,
                                                    num_retries=3))
Example #32
0
 def test_read_with_method_retries(self):
     reader = self.reader_for('foo_file')
     with tutil.mock_responses('foo', 500, 200):
         self.assertEqual('foo',
                          self.read_for_test(reader, 3, num_retries=3))
Example #33
0
 def test_method_retries_take_precedence(self):
     reader = self.reader_for('user_agreement', num_retries=10)
     with tutil.mock_responses('', 500, 500, 500, 200):
         with self.assertRaises(arvados.errors.KeepReadError):
             self.read_for_test(reader, 10, num_retries=1)
Example #34
0
 def test_read_method_retries_exhausted(self):
     reader = self.reader_for('bar_file')
     with tutil.mock_responses('bar', 500, 500, 500, 500, 200):
         with self.assertRaises(arvados.errors.KeepReadError):
             self.read_for_test(reader, 3, num_retries=3)