def test_exchange_publish(self): exchange_name = factory.getRandomString() message_content = factory.getRandomString() exchange = RabbitExchange(RabbitSession(), exchange_name) self.addCleanup(exchange._session.disconnect) rabbitbase = RabbitBase(RabbitSession(), exchange_name) self.addCleanup(rabbitbase._session.disconnect) channel = rabbitbase.channel queue_name = channel.queue_declare(auto_delete=True)[0] channel.queue_bind(exchange=exchange_name, queue=queue_name) exchange.publish(message_content) message = self.basic_get(channel, queue_name, timeout=2) self.assertEqual(message_content, message.body)
def test_rabbit_queue_binds_queue(self): exchange_name = factory.getRandomString() message_content = factory.getRandomString() queue = RabbitQueue(RabbitSession(), exchange_name) self.addCleanup(queue._session.disconnect) # Publish to queue.name. base = RabbitBase(RabbitSession(), exchange_name) self.addCleanup(base._session.disconnect) channel = base.channel msg = amqp.Message(message_content) channel.basic_publish( exchange=exchange_name, routing_key='', msg=msg) message = channel.basic_get(queue.name) self.assertEqual(message_content, message.body)
def test_connection_raises_NoRabbit_if_cannot_connect(self): # Attempt to connect to a RabbitMQ on the local "discard" # service. The connection will be refused. self.patch(settings, 'RABBITMQ_HOST', 'localhost:9') session = RabbitSession() with ExpectedException(NoRabbit): session.connection
def test_base_channel_creates_exchange(self): exchange_name = factory.getRandomString() rabbitbase = RabbitBase(RabbitSession(), exchange_name) self.addCleanup(rabbitbase._session.disconnect) rabbitbase.channel self.assertIn( exchange_name, run_rabbit_command(self.rabbit, 'list_exchanges'))
def test_connection_propagates_exceptions(self): def fail(*args, **kwargs): raise socket.error("Connection not refused, but failed anyway.") self.patch(amqp, 'Connection', fail) session = RabbitSession() with ExpectedException(socket.error): session.connection
def test_connection_gets_connection(self): session = RabbitSession() self.addCleanup(session.disconnect) # Referencing the connection property causes a connection to be # created. connection = session.connection self.assertIsNotNone(session._connection) # The same connection is returned every time. self.assertIs(connection, session.connection)
def test_base_channel(self): rabbitbase = RabbitBase(RabbitSession(), factory.getRandomString()) self.addCleanup(rabbitbase._session.disconnect) # Referencing the channel property causes an open channel to be # created. channel = rabbitbase.channel self.assertTrue(channel.is_open) self.assertIsNotNone(rabbitbase._session._connection) # The same channel is returned every time. self.assertIs(channel, rabbitbase.channel)
def test_disconnect(self): session = RabbitSession() session.disconnect() self.assertIsNone(session._connection)
def test_base_has_exchange_name(self): exchange_name = factory.getRandomString() rabbitbase = RabbitBase(RabbitSession(), exchange_name) self.assertEqual(exchange_name, rabbitbase.exchange_name)
def test_rabbitbase_contains_session(self): exchange_name = factory.getRandomString() rabbitbase = RabbitBase(RabbitSession(), exchange_name) self.assertIsInstance(rabbitbase._session, RabbitSession)