From ea39101a9c19f61cd5dec98986f67aad9518fdc4 Mon Sep 17 00:00:00 2001 From: Eric Harney Date: Thu, 21 Feb 2019 15:05:14 -0500 Subject: [PATCH] Tests: Fix up migrate notify tests Search for notify calls in a way that ignores extra notifications. Remove mock_notify.assert_not_called() Partial-Bug: #1803648 Change-Id: I5e0823453cbadbd7ab1dcaa3e651769629eb409e (cherry picked from commit 6f9135b6a48d7e900e8b33adf1e69c2463eac852) (cherry picked from commit 96c3892bb103b7318ed650da089c7da412e61116) --- cinder/test.py | 17 ++++++++++++++++- .../tests/unit/volume/test_volume_migration.py | 7 ++++--- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/cinder/test.py b/cinder/test.py index c8c9e6ccd3b..3ab440199c3 100644 --- a/cinder/test.py +++ b/cinder/test.py @@ -381,7 +381,22 @@ class TestCase(testtools.TestCase): return result # Useful assertions - def assert_notify_called(self, mock_notify, calls): + def assert_notify_called(self, mock_notify, calls, any_order=False): + if any_order is True: + for c in calls: + # mock_notify.call_args_list = [ + # mock.call('INFO', 'volume.retype', ...), + # mock.call('WARN', 'cinder.fire', ...)] + # m = mock_notify.call_args_list + # m[0] = Call + # m[0][0] = tuple('INFO', , 'volume.retype', ...) + if not any(m for m in mock_notify.call_args_list + if (m[0][0] == c[0] # 'INFO' + and + m[0][2] == c[1])): # 'volume.retype' + raise AssertionError("notify call not found: %s" % c) + return + for i in range(0, len(calls)): mock_call = mock_notify.call_args_list[i] call = calls[i] diff --git a/cinder/tests/unit/volume/test_volume_migration.py b/cinder/tests/unit/volume/test_volume_migration.py index 2270e8e92f2..14bff8401a1 100644 --- a/cinder/tests/unit/volume/test_volume_migration.py +++ b/cinder/tests/unit/volume/test_volume_migration.py @@ -888,20 +888,21 @@ class VolumeMigrationTestCase(base.BaseVolumeTestCase): self.assertEqual(CONF.host, volume.host) self.assertEqual(1, volumes_in_use) self.assert_notify_called(mock_notify, - (['INFO', 'volume.retype'],)) + (['INFO', 'volume.retype'],), + any_order=True) elif not exc: self.assertEqual(old_vol_type['id'], volume.volume_type_id) self.assertEqual('retyping', volume.status) self.assertEqual(CONF.host, volume.host) self.assertEqual(1, volumes_in_use) self.assert_notify_called(mock_notify, - (['INFO', 'volume.retype'],)) + (['INFO', 'volume.retype'],), + any_order=True) else: self.assertEqual(old_vol_type['id'], volume.volume_type_id) self.assertEqual('available', volume.status) self.assertEqual(CONF.host, volume.host) self.assertEqual(0, volumes_in_use) - mock_notify.assert_not_called() if encryption_changed: self.assertTrue(_mig.called) self.assertEqual(expected_replica_status, volume.replication_status)