def test_connection_handle_value_error(self): """This test covers an unlikely issue triggered by network corruption. pamqp.decode._embedded_value raises: ValueError: Unknown type: b'\x13' The goal here is not to fix issues caused by network corruption, but rather to make sure that the exceptions raised when connections do fail are always predictable. Fail fast and reliably! :return: """ connection = Connection('127.0.0.1', 'guest', 'guest', lazy=True) def throw_error(_): raise ValueError("Unknown type: b'\x13'") restore_func = pamqp_frame.unmarshal try: pamqp_frame.unmarshal = throw_error result = connection._handle_amqp_frame('travis-ci') self.assertEqual(result[0], 'travis-ci') self.assertIsNone(result[1]) self.assertIsNone(result[2]) finally: pamqp_frame.unmarshal = restore_func self.assertEqual(self.get_last_log(), "Unknown type: b'\x13'")
def test_connection_handle_amqp_frame_none_returns_none(self): connection = Connection('127.0.0.1', 'guest', 'guest', lazy=True) result = connection._handle_amqp_frame('') self.assertEqual(result[0], '') self.assertIsNone(result[1]) self.assertIsNone(result[2])
def test_connection_handle_unicode_error(self): """This test covers an unlikely issue triggered by network corruption. pamqp.decode._maybe_utf8 raises: UnicodeDecodeError: 'utf8' codec can't decode byte 0xc5 in position 1: invalid continuation byte The goal here is not to fix issues caused by network corruption, but rather to make sure that the exceptions raised when connections do fail are always predictable. Fail fast and reliably! :return: """ connection = Connection('127.0.0.1', 'guest', 'guest', lazy=True) def throw_error(_): raise UnicodeDecodeError(str(), bytes(), 1, 1, str()) restore_func = pamqp_frame.unmarshal try: pamqp_frame.unmarshal = throw_error result = connection._handle_amqp_frame('travis-ci') self.assertEqual(result[0], 'travis-ci') self.assertIsNone(result[1]) self.assertIsNone(result[2]) finally: pamqp_frame.unmarshal = restore_func self.assertEqual(self.get_last_log(), "'' codec can't decode bytes in position 1-0: ")
def test_connection_basic_handle_amqp_frame(self): connection = Connection('127.0.0.1', 'guest', 'guest', lazy=True) payload = (b'\x01\x00\x00\x00\x00\x00\x0c\x00\n\x00\x1e\x00\x00\x00' b'\x02\x00\x00\x00<\xce') data_in, channel_id, frame_in = connection._handle_amqp_frame(payload) self.assertEqual(data_in, b'') self.assertEqual(channel_id, 0) self.assertIsInstance(frame_in, specification.Connection.Tune)
def test_connection_basic_handle_amqp_frame(self): connection = Connection('127.0.0.1', 'guest', 'guest', lazy=True) payload = ( b'\x01\x00\x00\x00\x00\x00\x0c\x00\n\x00\x1e\x00\x00\x00' b'\x02\x00\x00\x00<\xce' ) data_in, channel_id, frame_in = connection._handle_amqp_frame(payload) self.assertEqual(data_in, b'') self.assertEqual(channel_id, 0) self.assertIsInstance(frame_in, specification.Connection.Tune)
def test_connection_handle_amqp_frame_error(self): connection = Connection('127.0.0.1', 'guest', 'guest', lazy=True) def throw_error(*_): raise pamqp_spec.AMQPFrameError() restore_func = pamqp_frame.unmarshal try: pamqp_frame.unmarshal = throw_error result = connection._handle_amqp_frame('error') self.assertEqual(result[0], 'error') self.assertIsNone(result[1]) self.assertIsNone(result[2]) finally: pamqp_frame.unmarshal = restore_func
def test_connection_handle_amqp_frame_error(self): connection = Connection('127.0.0.1', 'guest', 'guest', lazy=True) def throw_error(*_): raise pamqp_spec.AMQPFrameError() restore_func = pamqp_frame.unmarshal try: pamqp_frame.unmarshal = throw_error result = connection._handle_amqp_frame('error') self.assertEqual(result[0], 'error') self.assertIsNone(result[1]) self.assertIsNone(result[2]) finally: pamqp_frame.unmarshal = restore_func
def test_connection_handle_amqp_frame_error(self): connection = Connection('127.0.0.1', 'guest', 'guest', lazy=True) def throw_error(*_): raise specification.AMQPFrameError() restore_func = pamqp_frame.unmarshal try: pamqp_frame.unmarshal = throw_error result = connection._handle_amqp_frame('travis-ci') self.assertEqual(result[0], 'travis-ci') self.assertIsNone(result[1]) self.assertIsNone(result[2]) finally: pamqp_frame.unmarshal = restore_func self.assertEqual(self.get_last_log(), 'AMQPFrameError: AMQPFrameError()')
def test_connection_basic_handle_amqp_frame(self): connection = Connection('127.0.0.1', 'guest', 'guest', lazy=True) cancel_ok_frame = spec_basic.CancelOk().marshal() self.assertEqual(connection._handle_amqp_frame(cancel_ok_frame), (b'\x00', None, None))
def test_connection_basic_handle_amqp_frame(self): connection = Connection('127.0.0.1', 'guest', 'guest', lazy=True) cancel_ok_frame = spec_basic.CancelOk().marshal() self.assertEqual(connection._handle_amqp_frame(cancel_ok_frame), (b'\x00', None, None))