def test_io_simple_ssl_receive(self): connection = FakeConnection() connection.parameters['ssl'] = True io = IO(connection.parameters) self.assertTrue(io.use_ssl) if hasattr(ssl, 'SSLObject'): io.socket = Mock(name='socket', spec=ssl.SSLObject) elif hasattr(ssl, 'SSLSocket'): io.socket = Mock(name='socket', spec=ssl.SSLSocket) io.socket.read.return_value = '12345' self.assertEqual(io._receive(), '12345')
def test_io_socket_close(self): connection = FakeConnection() io = IO(connection.parameters) io.socket = Mock(name='socket', spec=socket.socket) io.close() self.assertIsNone(io.socket)
def test_io_receive_raises_socket_timeout(self): connection = FakeConnection() io = IO(connection.parameters) io.socket = mock.Mock(name='socket', spec=socket.socket) io.socket.recv.side_effect = socket.timeout('timeout') io._receive() self.assertIsNone(connection.check_for_errors())
def test_connection_close(self): connection = Connection('127.0.0.1', 'guest', 'guest', lazy=True) connection.set_state(connection.OPEN) io = IO(connection.parameters, []) io.socket = Mock(name='socket', spec=socket.socket) connection._io = io # Create some fake channels. for index in range(10): connection._channels[index + 1] = Channel( index + 1, connection, 360) def on_write(frame_out): self.assertIsInstance(frame_out, specification.Connection.Close) connection._channel0._close_connection_ok() connection._channel0._write_frame = on_write self.assertFalse(connection.is_closed) connection.close() # Make sure all the fake channels were closed as well. for index in range(10): self.assertNotIn(index + 1, connection._channels) self.assertTrue(connection.is_closed)
def test_connection_close_when_already_closed(self): connection = Connection('127.0.0.1', 'guest', 'guest', lazy=True) connection.set_state(connection.OPEN) io = IO(connection.parameters, []) io.socket = Mock(name='socket', spec=socket.socket) connection._io = io connection.set_state(connection.CLOSED) # Create some fake channels. for index in range(10): connection._channels[index + 1] = Channel( index + 1, connection, 360) def state_set(state): self.assertEqual(state, connection.CLOSED) connection.set_state = state_set self.assertTrue(connection.is_closed) connection.close() # Make sure all the fake channels were closed as well. for index in range(10): self.assertNotIn(index + 1, connection._channels) self.assertFalse(connection._channels) self.assertTrue(connection.is_closed)
def test_connection_close_handles_raise_on_write(self): connection = Connection('127.0.0.1', 'guest', 'guest', lazy=True) connection.set_state(connection.OPEN) io = IO(connection.parameters, []) io.socket = Mock(name='socket', spec=socket.socket) connection._io = io # Create some fake channels. for index in range(10): connection._channels[index + 1] = Channel( index + 1, connection, 360) def raise_on_write(_): raise AMQPConnectionError('travis-ci') connection._channel0._write_frame = raise_on_write self.assertFalse(connection.is_closed) connection.close() # Make sure all the fake channels were closed as well. for index in range(10): self.assertNotIn(index + 1, connection._channels) self.assertFalse(connection._channels) self.assertTrue(connection.is_closed)
def test_io_simple_receive(self): connection = FakeConnection() io = IO(connection.parameters) io.socket = MagicMock(name='socket', spec=socket.socket) io.socket.recv.return_value = '12345' self.assertEqual(io._receive(), '12345')
def test_io_shutdown_with_io_error(self): connection = FakeConnection() io = IO(connection.parameters) io._exceptions = [] io.socket = mock.Mock(name='socket', spec=socket.socket) io.socket.shutdown.side_effect = OSError() io._close_socket()
def test_io_receive_does_not_raise_on_block(self): connection = FakeConnection() io = IO(connection.parameters, exceptions=connection.exceptions) io.socket = mock.Mock(name='socket', spec=socket.socket) io.socket.recv.side_effect = socket.error(EWOULDBLOCK) io._receive() self.assertIsNone(connection.check_for_errors())
def test_io_receive_raises_ssl_want_read_error(self): connection = FakeConnection() io = IO(connection.parameters, exceptions=connection.exceptions) io.socket = mock.Mock(name='socket', spec=socket.socket) io.socket.recv.side_effect = compatibility.SSLWantReadError() io._receive() self.assertIsNone(connection.check_for_errors())
def test_connection_fileno_property(self): connection = Connection('127.0.0.1', 'guest', 'guest', lazy=True) connection.set_state(connection.OPENING) io = IO(connection.parameters, []) io.socket = Mock(name='socket', spec=socket.socket) connection._io = io io.socket.fileno.return_value = 5 self.assertEqual(connection.fileno, 5)
def test_io_simple_send_with_io_error(self): connection = FakeConnection() io = IO(connection.parameters) io._exceptions = [] io.socket = None io.write_to_socket(self.message) self.assertTrue(io._exceptions)
def test_io_receive_raises_socket_error(self): connection = FakeConnection() io = IO(connection.parameters, exceptions=connection.exceptions) io.socket = mock.Mock(name='socket', spec=socket.socket) io.socket.recv.side_effect = socket.error('travis-ci') io._receive() self.assertRaisesRegexp(AMQPConnectionError, 'travis-ci', connection.check_for_errors)
def test_io_receive_raises_socket_error(self): connection = FakeConnection() io = IO(connection.parameters) io._exceptions = [] io.socket = MagicMock(name='socket', spec=socket.socket) io.socket.recv.side_effect = socket.error('error') io._receive() self.assertIsInstance(io._exceptions[0], AMQPConnectionError)
def test_io_simple_send_with_error(self): connection = FakeConnection() io = IO(connection.parameters) io._exceptions = [] io.socket = mock.Mock(name='socket', spec=socket.socket) io.socket.send.side_effect = socket.error('error') io.write_to_socket(self.message) self.assertIsInstance(io._exceptions[0], AMQPConnectionError)
def test_connection_wait_for_connection_raises_on_timeout(self): connection = Connection('127.0.0.1', 'guest', 'guest', timeout=1, lazy=True) connection.set_state(connection.OPENING) io = IO(connection.parameters, []) io.socket = MagicMock(name='socket', spec=socket.socket) connection._io = io self.assertRaises(AMQPConnectionError, connection._wait_for_connection_to_open)
def test_connection_wait_for_connection_raises_on_timeout(self): connection = Connection('127.0.0.1', 'guest', 'guest', timeout=0.1, lazy=True) connection.set_state(connection.OPENING) io = IO(connection.parameters, []) io.socket = MagicMock(name='socket', spec=socket.socket) connection._io = io self.assertRaises(AMQPConnectionError, connection._wait_for_connection_to_open)
def test_io_simple_send_zero_bytes_sent(self): connection = FakeConnection() io = IO(connection.parameters, exceptions=connection.exceptions) io.socket = Mock(name='socket', spec=socket.socket) io.socket.send.return_value = 0 io.write_to_socket(self.message) self.assertRaisesRegexp(AMQPConnectionError, 'connection/socket error', connection.check_for_errors)
def test_io_simple_send_with_error(self): connection = FakeConnection() io = IO(connection.parameters) io._exceptions = [] io.socket = MagicMock(name='socket', spec=socket.socket) io.poller = MagicMock(name='poller', spec=amqpstorm.io.Poller) io.socket.send.side_effect = socket.error('error') io.write_to_socket('12345') self.assertIsInstance(io._exceptions[0], AMQPConnectionError)
def test_io_simple_send_zero_bytes_sent(self): connection = FakeConnection() io = IO(connection.parameters) io._exceptions = [] io.socket = MagicMock(name='socket', spec=socket.socket) io.poller = MagicMock(name='poller', spec=amqpstorm.io.Poller) io.socket.send.return_value = 0 io.write_to_socket('afasffa') self.assertIsInstance(io._exceptions[0], AMQPConnectionError)
def test_io_receive_raises_socket_error(self): connection = FakeConnection() io = IO(connection.parameters, exceptions=connection.exceptions) io.socket = mock.Mock(name='socket', spec=socket.socket) io.socket.recv.side_effect = socket.error('travis-ci') io._receive() self.assertRaisesRegexp( AMQPConnectionError, 'travis-ci', connection.check_for_errors )
def test_io_simple_send_zero_bytes_sent(self): connection = FakeConnection() io = IO(connection.parameters, exceptions=connection.exceptions) io.socket = Mock(name='socket', spec=socket.socket) io.socket.send.return_value = 0 io.write_to_socket(self.message) self.assertRaisesRegexp( AMQPConnectionError, 'connection/socket error', connection.check_for_errors )
def test_connection_wait_for_connection(self): connection = Connection('127.0.0.1', 'guest', 'guest', lazy=True) connection.set_state(connection.OPENING) io = IO(connection.parameters, []) io.socket = Mock(name='socket', spec=socket.socket) connection._io = io self.assertFalse(connection.is_open) def set_state_to_open(conn): conn.set_state(conn.OPEN) threading.Timer(function=set_state_to_open, interval=0.1, args=(connection,)).start() connection._wait_for_connection_state(connection.OPEN) self.assertTrue(connection.is_open)
def test_io_simple_send_with_timeout_error(self): connection = FakeConnection() self.raised = False def custom_raise(*_): if self.raised: return 1 self.raised = True raise socket.timeout() io = IO(connection.parameters) io._exceptions = [] io.socket = mock.Mock(name='socket', spec=socket.socket) io.socket.send.side_effect = custom_raise io.write_to_socket(self.message) self.assertTrue(self.raised) self.assertFalse(io._exceptions)
def test_io_simple_send_with_timeout_error(self): connection = FakeConnection() self.raised = False def custom_raise(*args, **kwargs): if self.raised: return 1 self.raised = True raise socket.timeout() io = IO(connection.parameters) io._exceptions = [] io.socket = MagicMock(name='socket', spec=socket.socket) io.poller = MagicMock(name='poller', spec=amqpstorm.io.Poller) io.socket.send.side_effect = custom_raise io.write_to_socket('12345') self.assertTrue(self.raised) self.assertFalse(io._exceptions)
def test_connection_open(self): connection = Connection('127.0.0.1', 'guest', 'guest', lazy=True) io = IO(connection.parameters, []) io.socket = Mock(name='socket', spec=socket.socket) connection._io = io def open(): pass def on_write_to_socket(_): connection.set_state(connection.OPEN) connection._io.open = open connection._io.write_to_socket = on_write_to_socket self.assertTrue(connection.is_closed) connection.open() self.assertTrue(connection.is_open)
def test_io_receive_raises_socket_timeout(self): connection = FakeConnection() io = IO(connection.parameters) io.socket = mock.Mock(name='socket', spec=socket.socket) io.socket.recv.side_effect = socket.timeout('timeout') io._receive()
def test_io_receive_raises_socket_timeout(self): connection = FakeConnection() io = IO(connection.parameters) io.socket = MagicMock(name='socket', spec=socket.socket) io.socket.recv.side_effect = socket.timeout('timeout') io._receive()