summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulien Danjou <julien@danjou.info>2016-06-17 10:29:57 +0200
committerJulien Danjou <julien@danjou.info>2016-06-20 16:18:17 +0200
commit7cdc7aa36ccb358562d6e23e67c80c8bc133341e (patch)
tree0c2b67325de5c176d1748199adda0c44f7315fdc
parent3a1fcaf712a7cdcffafe2ae33bc4c2508bab8a49 (diff)
downloadceilometer-7cdc7aa36ccb358562d6e23e67c80c8bc133341e.tar.gz
Remove oslo_utils.timeutils.total_seconds() usage + catch DriverLoadFailure for get_transport optional + fix CI failure due to oslo.messaging 5.0.0 + correct concurrency of gabbi
This function was deprecated and has been removed. + new oslo.messaging 5.2.0 release will raise oslo_messaging.transport.DriverLoadFailure if no existent transport driver, hence breaks our code and unit test as well. This patch fixes it by adding DriverLoadFailure to catch list. Closes-Bug: #1588151 (cherry picked from commit d7f8ce94e433da8af3660ecf52715a04c221fde5) + Recently, oslo.messaging does a refactor [1] which causes get_batch_notification_listener returns a new type BatchNotificationServer instead of previous MessageHandlingServer, they have different attributes, so our test code which relies on MessageHandlingServer fails in CI gate. This patch makes test code not rely on oslo.messaging details. [1] https://github.com/openstack/oslo.messaging/commit/990d894eaf0d18941b56d89bff2bca51de375640 (cherry picked from commit 23d5c9f648d8352aa205fbe46ba9796a5424874f) + Correct concurrency of gabbi tests for gabbi 1.22.0 When running gabbi under testr, concurrency grouping is controlled by a regex in .testr.conf. A module name change in gabbi 1.22.0 inadvertently broke the grouping. This change should work for old and new versions. (cherry picked from commit 8fcbc8de4ea878bdec1ef8754eaf965e176854b3) Change-Id: I02b5d1b3f4a9169cbf428a5eff9c6705494741af
-rw-r--r--.testr.conf2
-rw-r--r--ceilometer/alarm/evaluator/__init__.py2
-rw-r--r--ceilometer/messaging.py5
-rw-r--r--ceilometer/tests/functional/test_notification.py37
4 files changed, 27 insertions, 19 deletions
diff --git a/.testr.conf b/.testr.conf
index 0a8a677b..f8f2847a 100644
--- a/.testr.conf
+++ b/.testr.conf
@@ -6,4 +6,4 @@ test_command=OS_STDOUT_CAPTURE=${OS_STDOUT_CAPTURE:-1} \
test_id_option=--load-list $IDFILE
test_list_option=--list
# NOTE(chdent): Only used/matches on gabbi-related tests.
-group_regex=(gabbi\.driver\.test_gabbi_(?:prefix_|)[^_]+)_
+group_regex=(gabbi\.(suitemaker|driver)\.test_gabbi_(?:prefix_|)[^_]+)_
diff --git a/ceilometer/alarm/evaluator/__init__.py b/ceilometer/alarm/evaluator/__init__.py
index 01320265..6f36322f 100644
--- a/ceilometer/alarm/evaluator/__init__.py
+++ b/ceilometer/alarm/evaluator/__init__.py
@@ -122,7 +122,7 @@ class Evaluator(object):
at the original point in time.
"""
cron.get_prev()
- diff = timeutils.total_seconds(ts - cron.get_next(datetime.datetime))
+ diff = (ts - cron.get_next(datetime.datetime)).total_seconds()
return abs(diff) < 60 # minute precision
@abc.abstractmethod
diff --git a/ceilometer/messaging.py b/ceilometer/messaging.py
index 6f5dce5d..bc57fc0f 100644
--- a/ceilometer/messaging.py
+++ b/ceilometer/messaging.py
@@ -33,8 +33,9 @@ def get_transport(url=None, optional=False, cache=True):
if not transport or not cache:
try:
transport = oslo_messaging.get_transport(cfg.CONF, url)
- except oslo_messaging.InvalidTransportURL as e:
- if not optional or e.url:
+ except (oslo_messaging.InvalidTransportURL,
+ oslo_messaging.DriverLoadFailure):
+ if not optional or url:
# NOTE(sileht): oslo_messaging is configured but unloadable
# so reraise the exception
raise
diff --git a/ceilometer/tests/functional/test_notification.py b/ceilometer/tests/functional/test_notification.py
index 488d0189..3da9934e 100644
--- a/ceilometer/tests/functional/test_notification.py
+++ b/ceilometer/tests/functional/test_notification.py
@@ -21,7 +21,6 @@ import mock
from oslo_config import fixture as fixture_config
from oslo_context import context
import oslo_messaging
-import oslo_messaging.conffixture
import oslo_service.service
from oslo_utils import fileutils
from oslo_utils import timeutils
@@ -154,10 +153,8 @@ class TestNotification(tests_base.BaseTestCase):
self.srv.listeners[0].dispatcher.endpoints[0])
@mock.patch('ceilometer.pipeline.setup_pipeline', mock.MagicMock())
- @mock.patch.object(oslo_messaging.MessageHandlingServer, 'start',
- mock.MagicMock())
- @mock.patch('ceilometer.event.endpoint.EventsNotificationEndpoint')
- def test_unique_consumers(self, fake_event_endpoint_class):
+ @mock.patch('oslo_messaging.get_notification_listener')
+ def test_unique_consumers(self, mock_listener):
def fake_get_notifications_manager_dup_targets(pm):
plugin = instance.Instance(pm)
@@ -169,7 +166,10 @@ class TestNotification(tests_base.BaseTestCase):
'_get_notifications_manager') as get_nm:
get_nm.side_effect = fake_get_notifications_manager_dup_targets
self.srv.start()
- self.assertEqual(1, len(self.srv.listeners[0].dispatcher.targets))
+ self.assertEqual(1, len(mock_listener.call_args_list))
+ args, kwargs = mock_listener.call_args
+ self.assertEqual(1, len(args[1]))
+ self.assertIsInstance(args[1][0], oslo_messaging.Target)
class BaseRealNotification(tests_base.BaseTestCase):
@@ -465,21 +465,28 @@ class TestRealNotificationHA(BaseRealNotification):
self.assertNotIn(listeners, set(self.srv.pipeline_listeners))
self.srv.stop()
- def test_retain_common_listeners_on_refresh(self):
+ @mock.patch('oslo_messaging.get_notification_listener')
+ def test_retain_common_targets_on_refresh(self, mock_listener):
+ def generate_random_object(*args, **kwargs):
+ return mock.MagicMock()
+
+ mock_listener.side_effect = generate_random_object
+
with mock.patch('ceilometer.coordination.PartitionCoordinator'
'.extract_my_subset', return_value=[1, 2]):
self.srv.start()
- self.assertEqual(4, len(self.srv.pipeline_listeners))
- listeners = [listener for listener in self.srv.pipeline_listeners]
+ listened_before = [target.topic for target in
+ mock_listener.call_args[0][1]]
+ self.assertEqual(1, len(listened_before))
with mock.patch('ceilometer.coordination.PartitionCoordinator'
'.extract_my_subset', return_value=[1, 3]):
self.srv._refresh_agent(None)
- self.assertEqual(4, len(self.srv.pipeline_listeners))
- for listener in listeners:
- if listener.dispatcher.targets[0].topic.endswith('1'):
- self.assertIn(listener, set(self.srv.pipeline_listeners))
- else:
- self.assertNotIn(listener, set(self.srv.pipeline_listeners))
+ listened_after = [target.topic for target in
+ mock_listener.call_args[0][1]]
+ self.assertEqual(1, len(listened_after))
+ common = set(listened_before) & set(listened_after)
+ for topic in common:
+ self.assertTrue(topic.endswith('1'))
self.srv.stop()
@mock.patch('oslo_messaging.Notifier.sample')