Пример #1
0
 def test_create_retry_handler_with_socket_errors(self):
     handler = retryhandler.create_retry_handler(
         self.retry_config, operation_name='OperationBar')
     with self.assertRaises(ConnectionError):
         handler(response=None, attempts=10,
                 caught_exception=ConnectionError())
     # No connection error raised because attempts < max_attempts.
     sleep_time = handler(response=None, attempts=1,
                          caught_exception=ConnectionError())
     self.assertEqual(sleep_time, 1)
     # But any other exception should be raised even if
     # attempts < max_attempts.
     with self.assertRaises(ValueError):
         sleep_time = handler(response=None, attempts=1,
                             caught_exception=ValueError())
Пример #2
0
 def test_make_request_injects_better_dns_error_msg(self):
     fake_request = Mock(url='https://ec2.us-west-2.amazonaws.com')
     self.http_session.send.side_effect = ConnectionError(
         "Fake gaierror(8, node or host not known)", request=fake_request)
     with self.assertRaisesRegexp(EndpointConnectionError,
                                  'Could not connect'):
         self.endpoint.make_request(self.op, request_dict())
Пример #3
0
 def test_retry_on_socket_errors(self):
     op = self._operation
     op.name = 'DescribeInstances'
     op.has_event_stream_output = False
     self.event_emitter.emit.side_effect = [
         [(None, None)],  # Request created.
         [(None, None)],  # Request sent.
         [(None, 0)],  # Check if retry needed. Retry needed.
         [(None, None)],  # Request created
         [(None, None)],  # Request sent.
         [(None, None)]  # Check if retry needed. Retry not needed.
     ]
     self.http_session.send.side_effect = ConnectionError()
     with self.assertRaises(ConnectionError):
         self.endpoint.make_request(op, request_dict())
     call_args = self.event_emitter.emit.call_args_list
     self.assertEqual(self.event_emitter.emit.call_count, 6)
     # Check that all of the events are as expected.
     self.assertEqual(call_args[0][0][0],
                      'request-created.ec2.DescribeInstances')
     self.assertEqual(call_args[1][0][0],
                      'before-send.ec2.DescribeInstances')
     self.assertEqual(call_args[2][0][0],
                      'needs-retry.ec2.DescribeInstances')
     self.assertEqual(call_args[3][0][0],
                      'request-created.ec2.DescribeInstances')
     self.assertEqual(call_args[4][0][0],
                      'before-send.ec2.DescribeInstances')
     self.assertEqual(call_args[5][0][0],
                      'needs-retry.ec2.DescribeInstances')
Пример #4
0
 def test_make_request_injects_better_bad_status_line_error_msg(self):
     fake_request = Mock(url='https://ec2.us-west-2.amazonaws.com')
     self.http_session.send.side_effect = ConnectionError(
         """'Connection aborted.', BadStatusLine("''",)""",
         request=fake_request)
     with self.assertRaisesRegexp(ConnectionClosedError,
                                  'Connection was closed'):
         self.endpoint.make_request(self.op, request_dict())
Пример #5
0
 def test_retry_on_socket_errors(self):
     self.session.register('needs-retry.ec2.DescribeInstances',
                           self.connection_error_handler)
     op = Mock()
     op.name = 'DescribeInstances'
     self.http_session.send.side_effect = ConnectionError()
     self.endpoint.make_request(op, {})
     self.assertEqual(self.total_calls, 3)
Пример #6
0
 def test_make_request_injects_better_dns_error_msg(self):
     self.endpoint = Endpoint('us-west-2',
                              'https://ec2.us-west-2.amazonaws.com/',
                              user_agent='botoore',
                              endpoint_prefix='ec2',
                              event_emitter=self.event_emitter)
     self.endpoint.http_session = self.http_session
     fake_request = Mock(url='https://ec2.us-west-2.amazonaws.com')
     self.http_session.send.side_effect = ConnectionError(
         "Fake gaierror(8, node or host not known)", request=fake_request)
     with self.assertRaisesRegexp(EndpointConnectionError,
                                  'Could not connect'):
         self.endpoint.make_request(self.op, request_dict())
Пример #7
0
 def test_retry_on_socket_errors(self):
     self.event_emitter.emit.side_effect = self.get_emitter_responses(
         num_retries=1)
     self.http_session.send.side_effect = ConnectionError()
     with self.assertRaises(ConnectionError):
         self.endpoint.make_request(self._operation, request_dict())
     self.assert_events_emitted(
         self.event_emitter,
         expected_events=[
             'request-created.ec2.DescribeInstances',
             'before-send.ec2.DescribeInstances',
             'response-received.ec2.DescribeInstances',
             'needs-retry.ec2.DescribeInstances',
         ] * 2)
Пример #8
0
 def test_retry_on_socket_errors(self):
     op = Mock()
     op.name = 'DescribeInstances'
     self.event_emitter.emit.side_effect = [
         [],  # For initially preparing request
         [(None, 0)],  # Check if retry needed. Retry needed.
         [],  # For preparing the request again
         [(None, None)]  # Check if retry needed. Retry not needed.
     ]
     self.http_session.send.side_effect = ConnectionError()
     self.endpoint.make_request(op, request_dict())
     call_args = self.event_emitter.emit.call_args_list
     self.assertEqual(self.event_emitter.emit.call_count, 4)
     # Check that all of the events are as expected.
     self.assertEqual(call_args[0][0][0], 'before-auth.ec2')
     self.assertEqual(call_args[1][0][0],
                      'needs-retry.ec2.DescribeInstances')
     self.assertEqual(call_args[2][0][0], 'before-auth.ec2')
     self.assertEqual(call_args[3][0][0],
                      'needs-retry.ec2.DescribeInstances')