a8a6ab0264
Change-Id: Ic0044adec32ac2cabff7aefe4d11970224ff1cd0
107 lines
3.8 KiB
Python
107 lines
3.8 KiB
Python
# 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']
|