# vim: tabstop=4 shiftwidth=4 softtabstop=4 # Copyright 2011 OpenStack, LLC # All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"); you may # not use this file except in compliance with the License. You may obtain # a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the # License for the specific language governing permissions and limitations # under the License. """Functional test case to check RabbitMQ """ try: import pika except ImportError: pika = None from kong import tests from pprint import pprint #RABBITMQ_HOST = get_config("rabbitmq/host") #RABBITMQ_USERNAME = get_config("rabbitmq/user") #RABBITMQ_PASSWORD = get_config("rabbitmq/password") class TestRabbitMQ(tests.FunctionalTest): @tests.skip_unless(pika, "pika not available") def test_000_ghetto(self): """ This sets the host, user, and pass self variables so they are accessible by all other methods """ self.rabbitmq['host'] = self.config['rabbitmq']['host'] self.rabbitmq['user'] = self.config['rabbitmq']['user'] self.rabbitmq['pass'] = self.config['rabbitmq']['password'] test_000_ghetto.tags = ['rabbitmq'] def _cnx(self): creds = pika.credentials.PlainCredentials( self.rabbitmq['user'], self.rabbitmq['pass']) connection = pika.BlockingConnection(pika.ConnectionParameters( host=self.rabbitmq['host'],credentials=creds)) channel = connection.channel() return (channel, connection) @tests.skip_unless(pika, "pika not available") def test_001_connect(self): channel, connection = self._cnx() self.assert_(channel) connection.close() test_001_connect.tags = ['rabbitmq'] @tests.skip_unless(pika, "pika not available") def test_002_send_receive_msg(self): unitmsg = 'Hello from unittest' channel, connection = self._cnx() channel.queue_declare(queue='u1') channel.basic_publish(exchange='', routing_key='u1', body=unitmsg) connection.close() channel, connection = self._cnx() def callback(ch, method, properties, body): self.assertEquals(body, unitmsg) ch.stop_consuming() channel.basic_consume(callback, queue='u1', no_ack=True) channel.start_consuming() test_002_send_receive_msg.tags = ['rabbitmq'] @tests.skip_unless(pika, "pika not available") def test_003_send_receive_msg_with_persistense(self): unitmsg = 'Hello from unittest with Persistense' channel, connection = self._cnx() channel.queue_declare(queue='u2', durable=True) prop = pika.BasicProperties(delivery_mode=2) channel.basic_publish(exchange='', routing_key='u2', body=unitmsg, properties=prop, ) connection.close() channel, connection = self._cnx() channel.queue_declare(queue='u2', durable=True) def callback(ch, method, properties, body): self.assertEquals(body, unitmsg) ch.basic_ack(delivery_tag=method.delivery_tag) ch.stop_consuming() channel.basic_qos(prefetch_count=1) channel.basic_consume(callback, queue='u2') channel.start_consuming() test_003_send_receive_msg_with_persistense.tags = ['rabbitmq']