summaryrefslogtreecommitdiff
path: root/oslo_messaging/tests/rpc
diff options
context:
space:
mode:
authorRajath Agasthya <rajathagasthya@gmail.com>2017-09-06 14:58:32 -0700
committerRajath Agasthya <rajathagasthya@gmail.com>2017-09-11 07:07:30 -0700
commit03b6f18f80b11e7067b94759c5da6a75f839bed7 (patch)
tree585316831c1e5d820b2e83cd665a7845f735bd2a /oslo_messaging/tests/rpc
parent338b85eb4e2fd8a91a798ac97c265ff21561ffef (diff)
downloadoslo-messaging-03b6f18f80b11e7067b94759c5da6a75f839bed7.tar.gz
Warn when wrong transport instance is used
Since RPC and notifications can have different backends, it is useful to warn users if they use a notification transport in RPC and vice versa. This patch introduces RPCTransport and NotificationTransport subclasses of Transport, so it's easier to add different behavior for them if need be. Related-Bug: #1680192 Change-Id: Iab60544d69053c8e74c28a2d5c84665be749013f
Diffstat (limited to 'oslo_messaging/tests/rpc')
-rwxr-xr-xoslo_messaging/tests/rpc/test_client.py39
-rw-r--r--oslo_messaging/tests/rpc/test_server.py14
2 files changed, 35 insertions, 18 deletions
diff --git a/oslo_messaging/tests/rpc/test_client.py b/oslo_messaging/tests/rpc/test_client.py
index e955167..f57de54 100755
--- a/oslo_messaging/tests/rpc/test_client.py
+++ b/oslo_messaging/tests/rpc/test_client.py
@@ -25,15 +25,6 @@ from oslo_messaging.tests import utils as test_utils
load_tests = testscenarios.load_tests_apply_scenarios
-class _FakeTransport(object):
-
- def __init__(self, conf):
- self.conf = conf
-
- def _send(self, *args, **kwargs):
- pass
-
-
class TestCastCall(test_utils.BaseTestCase):
scenarios = [
@@ -52,7 +43,7 @@ class TestCastCall(test_utils.BaseTestCase):
def test_cast_call(self):
self.config(rpc_response_timeout=None)
- transport = _FakeTransport(self.conf)
+ transport = oslo_messaging.get_rpc_transport(self.conf, url='fake:')
client = oslo_messaging.RPCClient(transport, oslo_messaging.Target())
transport._send = mock.Mock()
@@ -191,7 +182,7 @@ class TestCastToTarget(test_utils.BaseTestCase):
target = oslo_messaging.Target(**self.ctor)
expect_target = oslo_messaging.Target(**self.expect)
- transport = _FakeTransport(self.conf)
+ transport = oslo_messaging.get_rpc_transport(self.conf, url='fake:')
client = oslo_messaging.RPCClient(transport, target)
transport._send = mock.Mock()
@@ -242,7 +233,7 @@ class TestCallTimeout(test_utils.BaseTestCase):
def test_call_timeout(self):
self.config(rpc_response_timeout=self.confval)
- transport = _FakeTransport(self.conf)
+ transport = oslo_messaging.get_rpc_transport(self.conf, url='fake:')
client = oslo_messaging.RPCClient(transport, oslo_messaging.Target(),
timeout=self.ctor)
@@ -273,7 +264,7 @@ class TestCallRetry(test_utils.BaseTestCase):
]
def test_call_retry(self):
- transport = _FakeTransport(self.conf)
+ transport = oslo_messaging.get_rpc_transport(self.conf, url='fake:')
client = oslo_messaging.RPCClient(transport, oslo_messaging.Target(),
retry=self.ctor)
@@ -302,7 +293,7 @@ class TestCallFanout(test_utils.BaseTestCase):
]
def test_call_fanout(self):
- transport = _FakeTransport(self.conf)
+ transport = oslo_messaging.get_rpc_transport(self.conf, url='fake:')
client = oslo_messaging.RPCClient(transport,
oslo_messaging.Target(**self.target))
@@ -331,7 +322,7 @@ class TestSerializer(test_utils.BaseTestCase):
def test_call_serializer(self):
self.config(rpc_response_timeout=None)
- transport = _FakeTransport(self.conf)
+ transport = oslo_messaging.get_rpc_transport(self.conf, url='fake:')
serializer = msg_serializer.NoOpSerializer()
client = oslo_messaging.RPCClient(transport, oslo_messaging.Target(),
@@ -430,7 +421,7 @@ class TestVersionCap(test_utils.BaseTestCase):
def test_version_cap(self):
self.config(rpc_response_timeout=None)
- transport = _FakeTransport(self.conf)
+ transport = oslo_messaging.get_rpc_transport(self.conf, url='fake:')
target = oslo_messaging.Target(version=self.version)
client = oslo_messaging.RPCClient(transport, target,
@@ -535,7 +526,7 @@ class TestCanSendVersion(test_utils.BaseTestCase):
def test_version_cap(self):
self.config(rpc_response_timeout=None)
- transport = _FakeTransport(self.conf)
+ transport = oslo_messaging.get_rpc_transport(self.conf, url='fake:')
target = oslo_messaging.Target(version=self.version)
client = oslo_messaging.RPCClient(transport, target,
@@ -561,7 +552,7 @@ class TestCanSendVersion(test_utils.BaseTestCase):
def test_invalid_version_type(self):
target = oslo_messaging.Target(topic='sometopic')
- transport = _FakeTransport(self.conf)
+ transport = oslo_messaging.get_rpc_transport(self.conf, url='fake:')
client = oslo_messaging.RPCClient(transport, target)
self.assertRaises(exceptions.MessagingException,
client.prepare, version='5')
@@ -569,3 +560,15 @@ class TestCanSendVersion(test_utils.BaseTestCase):
client.prepare, version='5.a')
self.assertRaises(exceptions.MessagingException,
client.prepare, version='5.5.a')
+
+
+class TestTransportWarning(test_utils.BaseTestCase):
+
+ @mock.patch('oslo_messaging.rpc.client.LOG')
+ def test_warning_when_notifier_transport(self, log):
+ transport = oslo_messaging.get_notification_transport(self.conf)
+ oslo_messaging.RPCClient(transport, oslo_messaging.Target())
+ log.warning.assert_called_once_with(
+ "Using notification transport for RPC. Please use "
+ "get_rpc_transport to obtain an RPC transport "
+ "instance.")
diff --git a/oslo_messaging/tests/rpc/test_server.py b/oslo_messaging/tests/rpc/test_server.py
index 2279324..d1369dd 100644
--- a/oslo_messaging/tests/rpc/test_server.py
+++ b/oslo_messaging/tests/rpc/test_server.py
@@ -436,6 +436,20 @@ class TestRPCServer(test_utils.BaseTestCase, ServerSetupMixin):
self._stop_server(client, server_thread)
+ @mock.patch('oslo_messaging.rpc.server.LOG')
+ def test_warning_when_notifier_transport(self, log):
+ transport = oslo_messaging.get_notification_transport(self.conf)
+ target = oslo_messaging.Target(topic='foo', server='bar')
+ endpoints = [object()]
+ serializer = object()
+
+ oslo_messaging.get_rpc_server(transport, target,
+ endpoints, serializer=serializer)
+ log.warning.assert_called_once_with(
+ "Using notification transport for RPC. Please use "
+ "get_rpc_transport to obtain an RPC transport "
+ "instance.")
+
class TestMultipleServers(test_utils.BaseTestCase, ServerSetupMixin):