summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2013-08-13 14:02:29 +0000
committerGerrit Code Review <review@openstack.org>2013-08-13 14:02:29 +0000
commitf95c5bb6ed00e6eed87159ad105bb0817ada99eb (patch)
tree97c4f86a827222a16e3bb84389e48c916688b546
parentc846cf35b8d9c79ed1faec6319b6002201a374a7 (diff)
parentfbe3192d9aa9b1b0bedb1779d7b7086f29b05c7f (diff)
downloadoslo-messaging-1.2.0a4.tar.gz
Merge "Add a unit testing configuration fixture"1.2.0a4
-rw-r--r--doc/source/index.rst1
-rw-r--r--oslo/messaging/__init__.py1
-rw-r--r--oslo/messaging/conffixture.py87
-rw-r--r--requirements.txt3
-rw-r--r--test-requirements.txt1
-rw-r--r--tests/test_rabbit.py31
-rw-r--r--tests/utils.py4
7 files changed, 106 insertions, 22 deletions
diff --git a/doc/source/index.rst b/doc/source/index.rst
index 11ce1c3..fa951b7 100644
--- a/doc/source/index.rst
+++ b/doc/source/index.rst
@@ -17,6 +17,7 @@ Contents
notifier
serializer
exceptions
+ conffixture
Release Notes
=============
diff --git a/oslo/messaging/__init__.py b/oslo/messaging/__init__.py
index 453a73e..73c6f2a 100644
--- a/oslo/messaging/__init__.py
+++ b/oslo/messaging/__init__.py
@@ -13,6 +13,7 @@
# License for the specific language governing permissions and limitations
# under the License.
+from .conffixture import *
from .exceptions import *
from .localcontext import *
from .notify import *
diff --git a/oslo/messaging/conffixture.py b/oslo/messaging/conffixture.py
new file mode 100644
index 0000000..7dd06db
--- /dev/null
+++ b/oslo/messaging/conffixture.py
@@ -0,0 +1,87 @@
+
+# Copyright 2013 Red Hat, Inc.
+#
+# 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.
+
+__all__ = ['ConfFixture']
+
+import sys
+
+import fixtures
+
+
+def _import_opts(conf, module, opts):
+ __import__(module)
+ conf.register_opts(getattr(sys.modules[module], opts))
+
+
+class ConfFixture(fixtures.Fixture):
+
+ """Tweak configuration options for unit testing.
+
+ oslo.messaging registers a number of configuration options, but rather than
+ directly referencing those options, users of the API should use this
+ interface for querying and overriding certain configuration options.
+
+ An example usage::
+
+ self.messaging_conf = self.useFixture(messaging.ConfFixture(cfg.CONF))
+ self.messaging_conf.transport_driver = 'fake'
+
+ :param conf: a ConfigOpts instance
+ :type conf: oslo.config.cfg.ConfigOpts
+ """
+
+ def __init__(self, conf):
+ self.conf = conf
+ _import_opts(self.conf,
+ 'oslo.messaging._drivers.impl_rabbit', 'rabbit_opts')
+ _import_opts(self.conf, 'oslo.messaging.rpc.client', '_client_opts')
+ _import_opts(self.conf, 'oslo.messaging.transport', '_transport_opts')
+
+ def setUp(self):
+ super(ConfFixture, self).setUp()
+ self.addCleanup(self.conf.reset)
+
+ @property
+ def transport_driver(self):
+ """The transport driver - e.g. 'rabbit', 'qpid' or 'fake'."""
+ return self.conf.rpc_backend
+
+ @transport_driver.setter
+ def transport_driver(self, value):
+ self.conf.set_override('rpc_backend', value)
+
+ @property
+ def in_memory(self):
+ """Use an in-memory transport; currently supported by rabbit driver."""
+ if (('rabbit' in self.transport_driver or
+ 'kombu' in self.transport_driver)):
+ return self.conf.fake_rabbit
+ else:
+ return False
+
+ @in_memory.setter
+ def in_memory(self, value):
+ if (('rabbit' in self.transport_driver or
+ 'kombu' in self.transport_driver)):
+ self.conf.set_override('fake_rabbit', value)
+
+ @property
+ def response_timeout(self):
+ """Default number of seconds to wait for a response from a call."""
+ return self.conf.rpc_response_timeout
+
+ @response_timeout.setter
+ def response_timeout(self, value):
+ self.conf.set_override('rpc_response_timeout', value)
diff --git a/requirements.txt b/requirements.txt
index 38a138e..84667de 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,6 +1,9 @@
oslo.config
stevedore
+# for oslo.messging.conffixture
+fixtures>=0.3.12
+
# for timeutils
iso8601
diff --git a/test-requirements.txt b/test-requirements.txt
index 7181493..1503dde 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -5,7 +5,6 @@ flake8==2.0
hacking>=0.5.6,<0.7
discover
-fixtures>=0.3.12
mox>=0.5.3
python-subunit
testrepository>=0.0.13
diff --git a/tests/test_rabbit.py b/tests/test_rabbit.py
index 4b6b28d..5cff175 100644
--- a/tests/test_rabbit.py
+++ b/tests/test_rabbit.py
@@ -27,7 +27,6 @@ from oslo import messaging
from oslo.messaging._drivers import common as driver_common
from oslo.messaging._drivers import impl_rabbit as rabbit_driver
from oslo.messaging.openstack.common import jsonutils
-from oslo.messaging import transport as msg_transport
from tests import utils as test_utils
load_tests = testscenarios.load_tests_apply_scenarios
@@ -37,10 +36,8 @@ class TestRabbitDriverLoad(test_utils.BaseTestCase):
def setUp(self):
super(TestRabbitDriverLoad, self).setUp()
- self.conf.register_opts(msg_transport._transport_opts)
- self.conf.register_opts(rabbit_driver.rabbit_opts)
- self.config(rpc_backend='rabbit')
- self.config(fake_rabbit=True)
+ self.messaging_conf.transport_driver = 'rabbit'
+ self.messaging_conf.in_memory = True
def test_driver_load(self):
transport = messaging.get_transport(self.conf)
@@ -81,10 +78,8 @@ class TestRabbitTransportURL(test_utils.BaseTestCase):
def setUp(self):
super(TestRabbitTransportURL, self).setUp()
- self.conf.register_opts(msg_transport._transport_opts)
- self.conf.register_opts(rabbit_driver.rabbit_opts)
- self.config(rpc_backend='rabbit')
- self.config(fake_rabbit=True)
+ self.messaging_conf.transport_driver = 'rabbit'
+ self.messaging_conf.in_memory = True
def test_transport_url(self):
cnx_init = rabbit_driver.Connection.__init__
@@ -139,10 +134,8 @@ class TestSendReceive(test_utils.BaseTestCase):
def setUp(self):
super(TestSendReceive, self).setUp()
- self.conf.register_opts(msg_transport._transport_opts)
- self.conf.register_opts(rabbit_driver.rabbit_opts)
- self.config(rpc_backend='rabbit')
- self.config(fake_rabbit=True)
+ self.messaging_conf.transport_driver = 'rabbit'
+ self.messaging_conf.in_memory = True
def test_send_receive(self):
transport = messaging.get_transport(self.conf)
@@ -313,10 +306,8 @@ class TestRequestWireFormat(test_utils.BaseTestCase):
def setUp(self):
super(TestRequestWireFormat, self).setUp()
- self.conf.register_opts(msg_transport._transport_opts)
- self.conf.register_opts(rabbit_driver.rabbit_opts)
- self.config(rpc_backend='rabbit')
- self.config(fake_rabbit=True)
+ self.messaging_conf.transport_driver = 'rabbit'
+ self.messaging_conf.in_memory = True
self.uuids = []
self.orig_uuid4 = uuid.uuid4
@@ -462,10 +453,8 @@ class TestReplyWireFormat(test_utils.BaseTestCase):
def setUp(self):
super(TestReplyWireFormat, self).setUp()
- self.conf.register_opts(msg_transport._transport_opts)
- self.conf.register_opts(rabbit_driver.rabbit_opts)
- self.config(rpc_backend='rabbit')
- self.config(fake_rabbit=True)
+ self.messaging_conf.transport_driver = 'rabbit'
+ self.messaging_conf.in_memory = True
def test_reply_wire_format(self):
if hasattr(self, 'skip_msg'):
diff --git a/tests/utils.py b/tests/utils.py
index b683f6b..ae77197 100644
--- a/tests/utils.py
+++ b/tests/utils.py
@@ -58,6 +58,10 @@ class BaseTestCase(testtools.TestCase):
self.conf = conf
self.addCleanup(self.conf.reset)
+ from oslo.messaging import conffixture
+ self.messaging_conf = self.useFixture(
+ conffixture.ConfFixture(self.conf))
+
moxfixture = self.useFixture(moxstubout.MoxStubout())
self.mox = moxfixture.mox
self.stubs = moxfixture.stubs