| # 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 """ | 
 | import pika | 
 | 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): | 
 |     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): | 
 |         # TODO: Figuring out what's going with creds | 
 |         # creds = pika.credentials.PlainCredentials( | 
 |         #     self.rabbitmq['user'], self.rabbitmq['pass'] | 
 |         connection = pika.BlockingConnection(pika.ConnectionParameters( | 
 |                 host=self.rabbitmq['host'])) | 
 |         channel = connection.channel() | 
 |         return (channel, connection) | 
 |  | 
 |     def test_001_connect(self): | 
 |         channel, connection = self._cnx() | 
 |         self.assert_(channel) | 
 |         connection.close() | 
 |     test_001_connect.tags = ['rabbitmq'] | 
 |  | 
 |     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'] | 
 |  | 
 |     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'] |