From b4778065e9a53f62d8ceee5889e1f1bbb61191d6 Mon Sep 17 00:00:00 2001 From: Balazs Gibizer Date: Thu, 21 Sep 2017 11:06:05 +0200 Subject: [PATCH] Add live.migration.force.complete to the legacy notification whitelist The instance.live.migration.force.complete notificatons are missing from the legacy notification whitelist as every test emiting them are mocked out the rpc notifier call. This patch adds the extra test coverage and whitelists the notifications Change-Id: Idf20fb435a7d11ff93bcb137699a38f5e4562d4c Closes-Bug: #1718485 --- nova/rpc.py | 2 ++ nova/tests/unit/compute/test_compute_mgr.py | 35 ++++++++++++--------- 2 files changed, 23 insertions(+), 14 deletions(-) diff --git a/nova/rpc.py b/nova/rpc.py index 6d5e4136c7e0..5492f64d1859 100644 --- a/nova/rpc.py +++ b/nova/rpc.py @@ -276,6 +276,8 @@ class LegacyValidatingNotifier(object): 'compute.instance.finish_resize.start', 'compute.instance.live.migration.abort.start', 'compute.instance.live.migration.abort.end', + 'compute.instance.live.migration.force.complete.start', + 'compute.instance.live.migration.force.complete.end', 'compute.instance.live_migration.post.dest.end', 'compute.instance.live_migration.post.dest.start', 'compute.instance.live_migration._post.end', diff --git a/nova/tests/unit/compute/test_compute_mgr.py b/nova/tests/unit/compute/test_compute_mgr.py index fd5265add6fe..38aeeb5c48f1 100644 --- a/nova/tests/unit/compute/test_compute_mgr.py +++ b/nova/tests/unit/compute/test_compute_mgr.py @@ -60,6 +60,7 @@ from nova.tests.unit import fake_flavor from nova.tests.unit import fake_instance from nova.tests.unit import fake_network from nova.tests.unit import fake_network_cache_model +from nova.tests.unit import fake_notifier from nova.tests.unit.objects import test_instance_fault from nova.tests.unit.objects import test_instance_info_cache from nova.tests import uuidsentinel as uuids @@ -5457,6 +5458,8 @@ class ComputeManagerMigrationTestCase(test.NoDBTestCase): def setUp(self): super(ComputeManagerMigrationTestCase, self).setUp() + fake_notifier.stub_notifier(self) + self.addCleanup(fake_notifier.reset) self.compute = manager.ComputeManager() self.context = context.RequestContext(fakes.FAKE_USER_ID, fakes.FAKE_PROJECT_ID) @@ -5930,31 +5933,35 @@ class ComputeManagerMigrationTestCase(test.NoDBTestCase): _test() def test_live_migration_force_complete_succeeded(self): - - instance = objects.Instance(uuid=uuids.fake) migration = objects.Migration() migration.status = 'running' migration.id = 0 - @mock.patch.object(self.compute, '_notify_about_instance_usage') + @mock.patch('nova.image.glance.generate_image_url', + return_value='fake-url') @mock.patch.object(objects.Migration, 'get_by_id', return_value=migration) @mock.patch.object(self.compute.driver, 'live_migration_force_complete') - def _do_test(force_complete, get_by_id, _notify_about_instance_usage): + def _do_test(force_complete, get_by_id, gen_img_url): self.compute.live_migration_force_complete( - self.context, instance, migration.id) + self.context, self.instance, migration.id) - force_complete.assert_called_once_with(instance) + force_complete.assert_called_once_with(self.instance) - _notify_usage_calls = [ - mock.call(self.context, instance, - 'live.migration.force.complete.start'), - mock.call(self.context, instance, - 'live.migration.force.complete.end') - ] - - _notify_about_instance_usage.assert_has_calls(_notify_usage_calls) + self.assertEqual(2, len(fake_notifier.NOTIFICATIONS)) + self.assertEqual( + 'compute.instance.live.migration.force.complete.start', + fake_notifier.NOTIFICATIONS[0].event_type) + self.assertEqual( + self.instance.uuid, + fake_notifier.NOTIFICATIONS[0].payload['instance_id']) + self.assertEqual( + 'compute.instance.live.migration.force.complete.end', + fake_notifier.NOTIFICATIONS[1].event_type) + self.assertEqual( + self.instance.uuid, + fake_notifier.NOTIFICATIONS[1].payload['instance_id']) _do_test()