Use new get_rpc_client API from oslo.messaging

Use the new API that is consistent with
the existing API instead of instantiating the client
class directly.

This was introduced in release 14.1.0 here [1] and
added into oslo.messaging here [2]

[1] https://review.opendev.org/c/openstack/requirements/+/869340
[2] https://review.opendev.org/c/openstack/oslo.messaging/+/862419

Change-Id: Ibb44b96108ef6029fe693d0765d59aa15570107e
This commit is contained in:
Tobias Urdin 2023-01-19 20:39:58 +00:00 committed by Erik Olof Gunnar Andersson
parent 196aace962
commit a6bc01a7f9
3 changed files with 55 additions and 47 deletions

View File

@ -17,7 +17,7 @@ oslo.db>=6.0.0 # Apache-2.0
oslo.i18n>=3.20.0 # Apache-2.0
oslo.log>=3.36.0 # Apache-2.0
oslo.reports>=1.18.0 # Apache-2.0
oslo.messaging>=5.29.0 # Apache-2.0
oslo.messaging>=14.1.0 # Apache-2.0
oslo.middleware>=3.31.0 # Apache-2.0
oslo.policy>=3.6.0 # Apache-2.0
oslo.serialization>=2.25.0 # Apache-2.0

View File

@ -126,7 +126,8 @@ def get_rpc_client(topic, server, serializer=None):
if serializer is None:
serializer = JsonPayloadSerializer()
serializer = RequestContextSerializer(serializer)
return messaging.RPCClient(TRANSPORT, target, serializer=serializer)
return messaging.get_rpc_client(
TRANSPORT, target, serializer=serializer)
def get_notifier(publisher_id):

View File

@ -69,61 +69,68 @@ class TestUtilFunctions(testtools.TestCase):
messaging.TRANSPORT, x_target, [x_endpoint],
executor='eventlet', serializer=x_context_serializer)
@mock.patch("oslo_messaging.RPCClient")
@mock.patch("oslo_messaging.Target")
@mock.patch("senlin.common.messaging.RequestContextSerializer")
@mock.patch("senlin.common.messaging.JsonPayloadSerializer")
@mock.patch("oslo_messaging.Target")
def test_get_rpc_client(self, mock_target, mock_json_serializer,
mock_context_serializer,
mock_rpc_client):
x_topic = mock.Mock()
x_server = mock.Mock()
x_target = mock.Mock()
mock_target.return_value = x_target
x_json_serializer = mock.Mock()
mock_json_serializer.return_value = x_json_serializer
x_context_serializer = mock.Mock()
mock_context_serializer.return_value = x_context_serializer
x_rpc_client = mock.Mock()
mock_rpc_client.return_value = x_rpc_client
@mock.patch("oslo_messaging.get_rpc_client")
def test_get_rpc_client(self, mock_rpc_client, mock_json_serializer,
mock_context_serializer, mock_target):
topic = 'fake'
client = mock.Mock()
context = mock.Mock()
server = mock.Mock()
serializer = mock.Mock()
target = mock.Mock()
res = messaging.get_rpc_client(x_topic, x_server)
mock_context_serializer.return_value = context
mock_json_serializer.return_value = serializer
mock_rpc_client.return_value = client
mock_target.return_value = target
result = messaging.get_rpc_client(topic, server)
self.assertEqual(x_rpc_client, res)
mock_target.assert_called_once_with(
topic=x_topic, server=x_server,
version=consts.RPC_API_VERSION_BASE)
mock_json_serializer.assert_called_once_with()
mock_context_serializer.assert_called_once_with(x_json_serializer)
mock_rpc_client.assert_called_once_with(
messaging.TRANSPORT, x_target, serializer=x_context_serializer)
None, target, serializer=context
)
mock_target.assert_called_once_with(
topic=topic, server=server, version=consts.RPC_API_VERSION_BASE
)
mock_json_serializer.assert_called_once_with()
mock_context_serializer.assert_called_once_with(serializer)
@mock.patch("oslo_messaging.RPCClient")
self.assertEqual(client, result)
@mock.patch("oslo_messaging.Target")
@mock.patch("senlin.common.messaging.RequestContextSerializer")
@mock.patch("senlin.common.messaging.JsonPayloadSerializer")
@mock.patch("oslo_messaging.Target")
def test_get_rpc_client_with_serializer(self, mock_target,
@mock.patch("oslo_messaging.get_rpc_client")
def test_get_rpc_client_with_serializer(self, mock_rpc_client,
mock_json_serializer,
mock_context_serializer,
mock_rpc_client):
x_topic = mock.Mock()
x_server = mock.Mock()
x_target = mock.Mock()
x_serializer = mock.Mock()
mock_target.return_value = x_target
x_context_serializer = mock.Mock()
mock_context_serializer.return_value = x_context_serializer
x_rpc_client = mock.Mock()
mock_rpc_client.return_value = x_rpc_client
mock_target):
topic = 'fake'
client = mock.Mock()
context = mock.Mock()
custom_serializer = mock.Mock(name='custom')
server = mock.Mock()
target = mock.Mock()
res = messaging.get_rpc_client(x_topic, x_server,
serializer=x_serializer)
mock_context_serializer.return_value = context
mock_json_serializer.return_value = custom_serializer
mock_rpc_client.return_value = client
mock_target.return_value = target
result = messaging.get_rpc_client(
topic, server, serializer=custom_serializer
)
self.assertEqual(x_rpc_client, res)
mock_target.assert_called_once_with(
topic=x_topic, server=x_server,
version=consts.RPC_API_VERSION_BASE)
self.assertEqual(0, mock_json_serializer.call_count)
mock_context_serializer.assert_called_once_with(x_serializer)
mock_rpc_client.assert_called_once_with(
messaging.TRANSPORT, x_target, serializer=x_context_serializer)
None, target, serializer=context
)
mock_target.assert_called_once_with(
topic=topic, server=server, version=consts.RPC_API_VERSION_BASE
)
mock_json_serializer.assert_not_called()
mock_context_serializer.assert_called_once_with(custom_serializer)
self.assertEqual(client, result)