Enable amqp's protocol unit tests everywhere
Now that python-qpid-proton has taken an approach similar to zmq's, it's possible to install it in boxes where the C libraries are not present in the system. This patch takes advantage of that to enable amqp protocol's tests everywhere. Change-Id: Ibce4c791aafadf45fa876d6a4f5373fde94769ff
This commit is contained in:
parent
3800dd61c5
commit
f06b19628f
@ -1,9 +1,3 @@
|
||||
# TODO(kgiusti) AMQP 1.0 support depends on the Qpid Proton AMQP 1.0
|
||||
# development libraries. As these are not yet available from the
|
||||
# Ubuntu repositories, do not require these packages by default. If
|
||||
# you have installed the Proton development libraries, you can run the
|
||||
# amqp1 driver tox tests this way:
|
||||
# tox -e amqp1
|
||||
pyngus>=1.0.0,<2.0.0 # Apache-2.0
|
||||
python-qpid-proton>=0.7,<0.9 # Apache-2.0
|
||||
|
||||
# AMQP 1.0 support depends on the Qpid Proton AMQP 1.0
|
||||
# development libraries.
|
||||
pyngus>=1.3.1 # Apache-2.0
|
||||
|
@ -33,6 +33,13 @@ sudo chown -R jenkins:stack $BASE/new/oslo.messaging
|
||||
|
||||
set +e
|
||||
|
||||
if [ -x "$(command -v yum)" ]; then
|
||||
sudo yum install -y libuuid-devel swig pkg-config
|
||||
else
|
||||
sudo apt-get update -y
|
||||
sudo apt-get install -y uuid-dev swig pkg-config
|
||||
fi
|
||||
|
||||
# Install required packages
|
||||
case $RPC_BACKEND in
|
||||
zeromq)
|
||||
@ -44,9 +51,7 @@ case $RPC_BACKEND in
|
||||
sudo apt-get install -y qpidd sasl2-bin
|
||||
;;
|
||||
amqp1)
|
||||
# qpid-tools is needed to ensure authentification works before
|
||||
# starting tests, otherwise tests will retries forever
|
||||
sudo yum install -y qpid-cpp-server qpid-proton-c-devel python-qpid-proton cyrus-sasl-lib cyrus-sasl-plain
|
||||
sudo yum install -y qpid-cpp-server qpid-proton-c-devel python-qpid-proton cyrus-sasl-lib cyrus-sasl-plain
|
||||
;;
|
||||
rabbit)
|
||||
sudo apt-get update -y
|
||||
|
@ -20,19 +20,18 @@ import threading
|
||||
import time
|
||||
import uuid
|
||||
|
||||
import six
|
||||
from six import moves
|
||||
import testtools
|
||||
|
||||
from oslo import messaging
|
||||
from oslo.utils import importutils
|
||||
from oslo_messaging.tests import utils as test_utils
|
||||
|
||||
# TODO(kgiusti) Conditionally run these tests only if the necessary
|
||||
# dependencies are installed. This should be removed once the proton libraries
|
||||
# are available in the base repos for all supported platforms.
|
||||
pyngus = importutils.try_import("pyngus")
|
||||
if pyngus:
|
||||
if six.PY2:
|
||||
# NOTE(flaper87): pyngus currently doesn't support py34. It's
|
||||
# on the works, though.
|
||||
from oslo_messaging._drivers.protocols.amqp import driver as amqp_driver
|
||||
import pyngus
|
||||
|
||||
|
||||
LOG = logging.getLogger(__name__)
|
||||
@ -71,7 +70,7 @@ class _ListenerThread(threading.Thread):
|
||||
return msgs
|
||||
|
||||
|
||||
@testtools.skipUnless(pyngus, "proton modules not present")
|
||||
@testtools.skipUnless(six.PY2, "No Py3K support yet")
|
||||
class TestProtonDriverLoad(test_utils.BaseTestCase):
|
||||
|
||||
def setUp(self):
|
||||
@ -86,7 +85,7 @@ class TestProtonDriverLoad(test_utils.BaseTestCase):
|
||||
|
||||
class _AmqpBrokerTestCase(test_utils.BaseTestCase):
|
||||
|
||||
@testtools.skipUnless(pyngus, "proton modules not present")
|
||||
@testtools.skipUnless(six.PY2, "No Py3K support yet")
|
||||
def setUp(self):
|
||||
super(_AmqpBrokerTestCase, self).setUp()
|
||||
self._broker = FakeBroker()
|
||||
@ -295,7 +294,7 @@ class TestAmqpNotification(_AmqpBrokerTestCase):
|
||||
driver.cleanup()
|
||||
|
||||
|
||||
@testtools.skipUnless(pyngus, "proton modules not present")
|
||||
@testtools.skipUnless(six.PY2, "No Py3K support yet")
|
||||
class TestAuthentication(test_utils.BaseTestCase):
|
||||
|
||||
def setUp(self):
|
||||
@ -349,7 +348,7 @@ class TestAuthentication(test_utils.BaseTestCase):
|
||||
driver.cleanup()
|
||||
|
||||
|
||||
@testtools.skipUnless(pyngus, "proton modules not present")
|
||||
@testtools.skipUnless(six.PY2, "No Py3K support yet")
|
||||
class TestFailover(test_utils.BaseTestCase):
|
||||
|
||||
def setUp(self):
|
||||
@ -424,7 +423,7 @@ class TestFailover(test_utils.BaseTestCase):
|
||||
class FakeBroker(threading.Thread):
|
||||
"""A test AMQP message 'broker'."""
|
||||
|
||||
if pyngus:
|
||||
if six.PY2:
|
||||
class Connection(pyngus.ConnectionEventHandler):
|
||||
"""A single AMQP connection."""
|
||||
|
||||
|
8
tox.ini
8
tox.ini
@ -7,6 +7,7 @@ setenv =
|
||||
OS_TEST_TIMEOUT=30
|
||||
deps = -r{toxinidir}/requirements.txt
|
||||
-r{toxinidir}/test-requirements.txt
|
||||
-r{toxinidir}/amqp1-requirements.txt
|
||||
commands = python setup.py testr --slowest --testr-args='{posargs}'
|
||||
|
||||
[testenv:pep8]
|
||||
@ -36,11 +37,8 @@ commands = {toxinidir}/setup-test-env-rabbit.sh python setup.py testr --slowest
|
||||
|
||||
[testenv:py27-func-amqp1]
|
||||
setenv = TRANSPORT_URL=amqp://stackqpid:secretqpid@127.0.0.1:65123//
|
||||
deps = -r{toxinidir}/amqp1-requirements.txt
|
||||
{[testenv]deps}
|
||||
# NOTE(sileht): This gate job run in fedora21 because proton libs are not
|
||||
# available on ubuntu yet,
|
||||
commands = {toxinidir}/setup-test-env-qpid.sh python setup.py testr --slowest --testr-args='oslo_messaging.tests.(functional|test_amqp_driver)'
|
||||
# NOTE(flaper87): This gate job run on fedora21 for now.
|
||||
commands = {toxinidir}/setup-test-env-qpid.sh python setup.py testr --slowest --testr-args='oslo_messaging.tests.functional'
|
||||
|
||||
[testenv:py27-func-zeromq]
|
||||
commands = {toxinidir}/setup-test-env-zmq.sh python setup.py testr --slowest --testr-args='oslo_messaging.tests.functional'
|
||||
|
Loading…
Reference in New Issue
Block a user