summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorOleksii Zamiatin <ozamiatin@mirantis.com>2015-12-04 21:47:18 +0200
committerOleksii Zamiatin <ozamiatin@mirantis.com>2015-12-04 23:07:09 +0200
commit52ccff7cbc26af0738d7a0a7d6e99330421b61d1 (patch)
treea9eac9e547e229ad0eb5f2c7ca7e42280a62862b
parentee240fbb8d9dc73200fbc58f6e8c52660e645dc0 (diff)
downloadoslo-messaging-52ccff7cbc26af0738d7a0a7d6e99330421b61d1.tar.gz
Properly skip zmq tests without ZeroMQ being installed
In this change import_zmq() doesn't raise ImportError any more for the benefit of skipping tests. Alarm about zmq unavailability moved to driver's init. Change-Id: I6e6acc39f42c979333510064d9e845228400d233 Closes-Bug: #1522920
-rw-r--r--oslo_messaging/_drivers/impl_zmq.py6
-rw-r--r--oslo_messaging/_drivers/zmq_driver/zmq_async.py4
-rw-r--r--oslo_messaging/tests/drivers/zmq/test_impl_zmq.py1
-rw-r--r--oslo_messaging/tests/drivers/zmq/test_zmq_async.py20
4 files changed, 18 insertions, 13 deletions
diff --git a/oslo_messaging/_drivers/impl_zmq.py b/oslo_messaging/_drivers/impl_zmq.py
index 17bfe41..f8bf137 100644
--- a/oslo_messaging/_drivers/impl_zmq.py
+++ b/oslo_messaging/_drivers/impl_zmq.py
@@ -26,7 +26,9 @@ from oslo_messaging._drivers import common as rpc_common
from oslo_messaging._drivers.zmq_driver.client import zmq_client
from oslo_messaging._drivers.zmq_driver.client import zmq_client_light
from oslo_messaging._drivers.zmq_driver.server import zmq_server
+from oslo_messaging._drivers.zmq_driver import zmq_async
from oslo_messaging._executors import impl_pooledexecutor # FIXME(markmc)
+from oslo_messaging._i18n import _LE
pformat = pprint.pformat
@@ -162,6 +164,10 @@ class ZmqDriver(base.BaseDriver):
:param allowed_remote_exmods: remote exception passing options
:type allowed_remote_exmods: list
"""
+ zmq = zmq_async.import_zmq()
+ if zmq is None:
+ raise ImportError(_LE("ZeroMQ is not available!"))
+
conf.register_opts(zmq_opts)
conf.register_opts(impl_pooledexecutor._pool_opts)
conf.register_opts(base.base_opts)
diff --git a/oslo_messaging/_drivers/zmq_driver/zmq_async.py b/oslo_messaging/_drivers/zmq_driver/zmq_async.py
index 4de248f..0935441 100644
--- a/oslo_messaging/_drivers/zmq_driver/zmq_async.py
+++ b/oslo_messaging/_drivers/zmq_driver/zmq_async.py
@@ -30,12 +30,10 @@ def import_zmq(zmq_concurrency='eventlet'):
_raise_error_if_invalid_config_value(zmq_concurrency)
imported_zmq = importutils.try_import(ZMQ_MODULES[zmq_concurrency],
- default='zmq')
+ default=None)
if imported_zmq is None:
- errmsg = _LE("ZeroMQ not found!")
LOG.error(_LE("ZeroMQ not found!"))
- raise ImportError(errmsg)
return imported_zmq
diff --git a/oslo_messaging/tests/drivers/zmq/test_impl_zmq.py b/oslo_messaging/tests/drivers/zmq/test_impl_zmq.py
index a11b61f..4062f17 100644
--- a/oslo_messaging/tests/drivers/zmq/test_impl_zmq.py
+++ b/oslo_messaging/tests/drivers/zmq/test_impl_zmq.py
@@ -224,6 +224,7 @@ class TestZmqBasics(ZmqBaseTestCase):
class TestPoller(test_utils.BaseTestCase):
+ @testtools.skipIf(zmq is None, "zmq not available")
def setUp(self):
super(TestPoller, self).setUp()
self.poller = zmq_async.get_poller()
diff --git a/oslo_messaging/tests/drivers/zmq/test_zmq_async.py b/oslo_messaging/tests/drivers/zmq/test_zmq_async.py
index 28e091a..ccfae33 100644
--- a/oslo_messaging/tests/drivers/zmq/test_zmq_async.py
+++ b/oslo_messaging/tests/drivers/zmq/test_zmq_async.py
@@ -11,15 +11,19 @@
# under the License.
import mock
+import testtools
from oslo_messaging._drivers.zmq_driver.poller import green_poller
from oslo_messaging._drivers.zmq_driver.poller import threading_poller
from oslo_messaging._drivers.zmq_driver import zmq_async
from oslo_messaging.tests import utils as test_utils
+zmq = zmq_async.import_zmq()
+
class TestImportZmq(test_utils.BaseTestCase):
+ @testtools.skipIf(zmq is None, "zmq not available")
def setUp(self):
super(TestImportZmq, self).setUp()
@@ -29,12 +33,12 @@ class TestImportZmq(test_utils.BaseTestCase):
zmq_async.importutils.try_import.return_value = 'mock zmq module'
self.assertEqual('mock zmq module', zmq_async.import_zmq('native'))
- mock_try_import.assert_called_with('zmq', default='zmq')
+ mock_try_import.assert_called_with('zmq', default=None)
zmq_async.importutils.try_import.return_value = 'mock eventlet module'
self.assertEqual('mock eventlet module',
zmq_async.import_zmq('eventlet'))
- mock_try_import.assert_called_with('eventlet.green.zmq', default='zmq')
+ mock_try_import.assert_called_with('eventlet.green.zmq', default=None)
def test_when_no_args_then_default_zmq_module_is_loaded(self):
mock_try_import = mock.Mock()
@@ -42,14 +46,7 @@ class TestImportZmq(test_utils.BaseTestCase):
zmq_async.import_zmq()
- mock_try_import.assert_called_with('eventlet.green.zmq', default='zmq')
-
- def test_when_import_fails_then_raise_ImportError(self):
- zmq_async.importutils.try_import = mock.Mock()
- zmq_async.importutils.try_import.return_value = None
-
- with self.assertRaisesRegexp(ImportError, "ZeroMQ not found!"):
- zmq_async.import_zmq('native')
+ mock_try_import.assert_called_with('eventlet.green.zmq', default=None)
def test_invalid_config_value_raise_ValueError(self):
invalid_opt = 'x'
@@ -61,6 +58,7 @@ class TestImportZmq(test_utils.BaseTestCase):
class TestGetPoller(test_utils.BaseTestCase):
+ @testtools.skipIf(zmq is None, "zmq not available")
def setUp(self):
super(TestGetPoller, self).setUp()
@@ -100,6 +98,7 @@ class TestGetPoller(test_utils.BaseTestCase):
class TestGetReplyPoller(test_utils.BaseTestCase):
+ @testtools.skipIf(zmq is None, "zmq not available")
def setUp(self):
super(TestGetReplyPoller, self).setUp()
@@ -134,6 +133,7 @@ class TestGetReplyPoller(test_utils.BaseTestCase):
class TestGetExecutor(test_utils.BaseTestCase):
+ @testtools.skipIf(zmq is None, "zmq not available")
def setUp(self):
super(TestGetExecutor, self).setUp()