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_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_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_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_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_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)