From 22bb04683d823b3614df4f659607743df0c742b1 Mon Sep 17 00:00:00 2001 From: Thierry Carrez Date: Tue, 29 Sep 2020 17:47:55 +0200 Subject: [PATCH] Add basic tests for message processing Add tests checking that a JSON message will be correctly mapped to their configured Prometheus client action. This replaces the noop test that was just a noop. Change-Id: I7362ad86fdc5dcb0a83b5173c3f20611577d0692 --- oslo_metrics/tests/test_message_process.py | 85 ++++++++++++++++++++++ oslo_metrics/tests/test_noop.py | 30 -------- 2 files changed, 85 insertions(+), 30 deletions(-) create mode 100644 oslo_metrics/tests/test_message_process.py delete mode 100644 oslo_metrics/tests/test_noop.py diff --git a/oslo_metrics/tests/test_message_process.py b/oslo_metrics/tests/test_message_process.py new file mode 100644 index 0000000..411a8c6 --- /dev/null +++ b/oslo_metrics/tests/test_message_process.py @@ -0,0 +1,85 @@ +# -*- coding: utf-8 -*- + +# 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. + +""" +test_message_process +-------------------- +Check that messages are processed correctly +""" + +from unittest import mock + +from oslo_metrics import message_router +from oslotest import base +import prometheus_client + + +class TestProcessMessage(base.BaseTestCase): + + def setUp(self): + super(TestProcessMessage, self).setUp() + + def test_process_counter(self): + received_json = """{ + "module": "oslo_messaging", + "name": "rpc_server_count_for_invocation_start", + "action": { + "action": "inc", + "value": null + }, + "labels": { + "exchange": "foo", + "topic": "bar", + "server": "foobar", + "endpoint": "endpoint", + "namespace": "ns", + "version": "v2", + "method": "get", + "process": "done" + } +}""".encode() + + with mock.patch.object( + prometheus_client.Counter, 'inc', + ) as mock_inc: + router = message_router.MessageRouter() + router.process(received_json) + mock_inc.assert_called_once_with() + + def test_process_histogram(self): + received_json = """{ + "module": "oslo_messaging", + "name": "rpc_client_processing_time", + "action": { + "action": "observe", + "value": 1.26 + }, + "labels": { + "call_type": "call", + "exchange": "foo", + "topic": "bar", + "server": "foobar", + "namespace": "ns", + "version": "v2", + "process": "done", + "fanout": "foo" + } +}""".encode() + + with mock.patch.object( + prometheus_client.Histogram, 'observe', + ) as mock_inc: + router = message_router.MessageRouter() + router.process(received_json) + mock_inc.assert_called_once_with(1.26) diff --git a/oslo_metrics/tests/test_noop.py b/oslo_metrics/tests/test_noop.py deleted file mode 100644 index 9f32cad..0000000 --- a/oslo_metrics/tests/test_noop.py +++ /dev/null @@ -1,30 +0,0 @@ -# -*- coding: utf-8 -*- - -# 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. - -""" -test_noop ----------------------------------- -A test that always reports success. -""" - -from oslotest import base - - -class TestNoop(base.BaseTestCase): - - def setUp(self): - super(TestNoop, self).setUp() - - def test_always_success(self): - self.assertEqual(1, 1) -- GitLab