class OpenMultipleChannelTest(unittest.TestCase): connection = None channel = None def setUp(self): self.connection = Connection(HOST, USERNAME, PASSWORD, lazy=True) def test_functional_open_multiple_channels(self): self.connection.open() self.assertIsNotNone(self.connection._io.socket) self.assertIsNotNone(self.connection._io.poller) self.assertTrue(self.connection.is_open) for index in range(255): channel = self.connection.channel() # Verify that the Channel has been opened properly. self.assertTrue(channel.is_open) self.assertEqual(int(channel), index + 1) self.connection.close() time.sleep(0.1) self.assertTrue(self.connection.is_closed) self.assertIsNone(self.connection._io.socket) self.assertIsNone(self.connection._io.poller) self.assertEqual(threading.activeCount(), 1, msg='Current Active threads: %s' % threading._active) def tearDown(self): self.connection.close()
class OpenCloseChannelLoopTest(unittest.TestCase): connection = None channel = None queue_name = 'test.open.close' def setUp(self): self.connection = Connection(HOST, USERNAME, PASSWORD, lazy=True) def test_functional_open_close_channel_loop(self): for _ in range(100): self.connection.open() self.channel = self.connection.channel() # Verify that the Connection/Channel has been opened properly. self.assertIsNotNone(self.connection._io.socket) self.assertIsNotNone(self.connection._io.poller) self.assertTrue(self.channel.is_open) self.assertTrue(self.connection.is_open) self.channel.queue.declare(self.queue_name) self.channel.basic.publish(body=str(uuid.uuid4()), routing_key=self.queue_name) self.channel.close() self.connection.close() # Verify that the Connection/Channel has been closed properly. self.assertTrue(self.channel.is_closed) self.assertTrue(self.connection.is_closed) self.assertIsNone(self.connection._io.socket) self.assertIsNone(self.connection._io.poller) time.sleep(0.1) self.assertEqual(threading.activeCount(), 1, msg='Current Active threads: %s' % threading._active) def tearDown(self): self.connection = Connection(HOST, USERNAME, PASSWORD) self.channel = self.connection.channel() self.channel.queue.delete(self.queue_name) self.channel.close() self.connection.close()
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)
class Publisher(object): def __init__(self, host, username, password): self.channel = None self.connection = None self.host = host self.username = username self.password = password self.connect() def connect(self): self.connection = Connection(self.host, self.username, self.password) self.channel = self.connection.channel() def close_connection(self): self.channel.close() self.connection.close() def send_message(self, queue, message): if self.connection.is_closed: self.reconnect() try: self.channel.basic.publish(body=message, routing_key=queue) except AMQPError as why: # When handling AMQPError's here, be careful as you may # need to re-send the payload. print(why) self.reconnect() def reconnect(self): """ Re-connect. :return: """ try: if self.connection.is_closed: self.connection.open() if self.channel.is_closed: self.channel.open() except AMQPError: raise
class OpenCloseOpenCloseTest(unittest.TestCase): def setUp(self): self.connection = Connection(HOST, USERNAME, PASSWORD, lazy=True) def test_open_close_loop(self): for _ in range(100): self.connection.open() self.channel = self.connection.channel() # Verify that the Connection/Channel has been opened properly. self.assertIsNotNone(self.connection._io.socket) self.assertIsNotNone(self.connection._io.poller) self.assertTrue(self.channel.is_open) self.assertTrue(self.connection.is_open) self.channel.queue.declare('test.open.close') self.channel.basic.publish(body=str(uuid.uuid4()), routing_key='test.open.close') self.channel.close() self.connection.close() # Verify that the Connection/Channel has been closed properly. self.assertTrue(self.channel.is_closed) self.assertTrue(self.connection.is_closed) self.assertIsNone(self.connection._io.socket) self.assertIsNone(self.connection._io.poller) time.sleep(0.1) self.assertEqual(threading.activeCount(), 1, msg='Current Active threads: %s' % threading._active) def tearDown(self): self.connection = Connection(HOST, USERNAME, PASSWORD) self.channel = self.connection.channel() self.channel.queue.delete('test.open.close') self.channel.close() self.connection.close()