summaryrefslogtreecommitdiff
path: root/osprofiler/tests
diff options
context:
space:
mode:
authorIlya Shakhat <shakhat@gmail.com>2017-08-09 16:24:25 +0200
committerIlya Shakhat <shakhat@gmail.com>2017-08-11 11:21:59 +0200
commit00eaa1096d94dbbde579ac01a9e78425490ec647 (patch)
treeab917314649d7c9dd411cfd90c72828048bd63e2 /osprofiler/tests
parent17f8441e28ebb6a63d7cf9684ace271461b9a779 (diff)
downloadosprofiler-00eaa1096d94dbbde579ac01a9e78425490ec647.tar.gz
Make dependency on oslo.messaging runtime only
Oslo.messaging library is not required by OSProfiler core. It is needed by "messaging" driver only and thus can be turn into runtime dependency (just like client libs for other drivers). Change-Id: Ie42cd0fdd5e96ce65b83edf934a139c282d1e784
Diffstat (limited to 'osprofiler/tests')
-rw-r--r--osprofiler/tests/unit/drivers/test_base.py6
-rw-r--r--osprofiler/tests/unit/drivers/test_messaging.py33
-rw-r--r--osprofiler/tests/unit/test_initializer.py43
3 files changed, 68 insertions, 14 deletions
diff --git a/osprofiler/tests/unit/drivers/test_base.py b/osprofiler/tests/unit/drivers/test_base.py
index 462559b..4bb5674 100644
--- a/osprofiler/tests/unit/drivers/test_base.py
+++ b/osprofiler/tests/unit/drivers/test_base.py
@@ -13,8 +13,6 @@
# License for the specific language governing permissions and limitations
# under the License.
-import mock
-
from osprofiler.drivers import base
from osprofiler.tests import test
@@ -55,10 +53,6 @@ class NotifierBaseTestCase(test.TestCase):
"Driver not found for connection string: "
"nonexisting://")
- def test_plugins_are_imported(self):
- base.get_driver("messaging://", mock.MagicMock(), "context",
- "transport", "host")
-
def test_build_empty_tree(self):
class C(base.Driver):
@classmethod
diff --git a/osprofiler/tests/unit/drivers/test_messaging.py b/osprofiler/tests/unit/drivers/test_messaging.py
index ad59c73..9a2c0a3 100644
--- a/osprofiler/tests/unit/drivers/test_messaging.py
+++ b/osprofiler/tests/unit/drivers/test_messaging.py
@@ -21,20 +21,37 @@ from osprofiler.tests import test
class MessagingTestCase(test.TestCase):
- def test_init_and_notify(self):
+ @mock.patch("oslo_utils.importutils.try_import")
+ def test_init_no_oslo_messaging(self, try_import_mock):
+ try_import_mock.return_value = None
- messaging = mock.MagicMock()
+ self.assertRaises(
+ ValueError, base.get_driver,
+ "messaging://", project="project", service="service",
+ host="host", context={})
+
+ @mock.patch("oslo_utils.importutils.try_import")
+ def test_init_and_notify(self, try_import_mock):
context = "context"
transport = "transport"
project = "project"
service = "service"
host = "host"
+ # emulate dynamic load of oslo.messaging library
+ oslo_messaging_mock = mock.Mock()
+ try_import_mock.return_value = oslo_messaging_mock
+
+ # mock oslo.messaging APIs
+ notifier_mock = mock.Mock()
+ oslo_messaging_mock.Notifier.return_value = notifier_mock
+ oslo_messaging_mock.get_notification_transport.return_value = transport
+
notify_func = base.get_driver(
- "messaging://", messaging, context, transport,
- project, service, host).notify
+ "messaging://", project=project, service=service,
+ context=context, host=host).notify
- messaging.Notifier.assert_called_once_with(
+ oslo_messaging_mock.Notifier.assert_called_once_with(
transport, publisher_id=host, driver="messaging",
topics=["profiler"], retry=0)
@@ -46,10 +63,10 @@ class MessagingTestCase(test.TestCase):
}
notify_func(info)
- messaging.Notifier().info.assert_called_once_with(
+ notifier_mock.info.assert_called_once_with(
context, "profiler.service", info)
- messaging.reset_mock()
+ notifier_mock.reset_mock()
notify_func(info, context="my_context")
- messaging.Notifier().info.assert_called_once_with(
+ notifier_mock.info.assert_called_once_with(
"my_context", "profiler.service", info)
diff --git a/osprofiler/tests/unit/test_initializer.py b/osprofiler/tests/unit/test_initializer.py
new file mode 100644
index 0000000..abb69d3
--- /dev/null
+++ b/osprofiler/tests/unit/test_initializer.py
@@ -0,0 +1,43 @@
+# 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.
+
+import mock
+import testtools
+
+from osprofiler import initializer
+
+
+class InitializerTestCase(testtools.TestCase):
+
+ @mock.patch("osprofiler.notifier.set")
+ @mock.patch("osprofiler.notifier.create")
+ @mock.patch("osprofiler.web.enable")
+ def test_initializer(self, web_enable_mock, notifier_create_mock,
+ notifier_set_mock):
+ conf = mock.Mock()
+ conf.profiler.connection_string = "driver://"
+ conf.profiler.hmac_keys = "hmac_keys"
+ context = {}
+ project = "my-project"
+ service = "my-service"
+ host = "my-host"
+
+ notifier_mock = mock.Mock()
+ notifier_create_mock.return_value = notifier_mock
+
+ initializer.init_from_conf(conf, context, project, service, host)
+
+ notifier_create_mock.assert_called_once_with(
+ "driver://", context=context, project=project, service=service,
+ host=host, conf=conf)
+ notifier_set_mock.assert_called_once_with(notifier_mock)
+ web_enable_mock.assert_called_once_with("hmac_keys")