From: Kamoltat (Junior) Sirivadhna Date: Thu, 18 Jul 2019 14:35:24 +0000 (-0400) Subject: qa/mgr/progress: Update the test suite for progress module X-Git-Tag: v14.2.17~114^2~1^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=58f7f670b1843ad014699f80ae76883078d0bddf;p=ceph.git qa/mgr/progress: Update the test suite for progress module Update the test suite to reflect a feature change that has been merged to master in progress module where you create an event when an osd is marked in. Fixes: http://tracker.ceph.com/issues/40618 with success QA run in sepia: http://pulpito.ceph.com/kchai-2019-07-16_10:10:01-rados-master-distro-basic-mira/ Signed-off-by: Kamoltat (Junior) Sirivadhna (cherry picked from commit 5604ba4ec1e0dac17f12e287a831cec9a4fad7ce) Conflicts: qa/tasks/mgr/test_progress.py - change `ev` to `new_event` --- diff --git a/qa/tasks/mgr/test_progress.py b/qa/tasks/mgr/test_progress.py index 4cd881b5c56..bf2d559bbdd 100644 --- a/qa/tasks/mgr/test_progress.py +++ b/qa/tasks/mgr/test_progress.py @@ -37,6 +37,14 @@ class TestProgress(MgrTestCase): log.info(json.dumps(p, indent=2)) return p['events'] + p['completed'] + def _events_in_progress(self): + """ + this function returns all events that are in progress + """ + p = self._get_progress() + log.info(json.dumps(p, indent=2)) + return p['events'] + def _setup_pool(self, size=None): self.mgr_cluster.mon_manager.create_pool(self.POOL) if size is not None: @@ -103,9 +111,30 @@ class TestProgress(MgrTestCase): ev = self._all_events()[0] log.info(json.dumps(ev, indent=1)) self.assertIn("Rebalancing after osd.0 marked out", ev['message']) - + return ev + def _simulate_back_in(self, osd_ids, initial_event): + + for osd_id in osd_ids: + self.mgr_cluster.mon_manager.raw_cluster_cmd( + 'osd', 'in', str(osd_id)) + + # First Event should complete promptly + self.wait_until_true(lambda: self._is_complete(initial_event['id']), + timeout=self.EVENT_CREATION_PERIOD) + + + # Wait for progress event marked in to pop up + self.wait_until_equal(lambda: len(self._events_in_progress()), 1, + timeout=self.EVENT_CREATION_PERIOD) + + new_event = self._all_events()[0] + log.info(json.dumps(new_event, indent=1)) + self.assertIn("Rebalancing after osd.0 marked in", new_event['message']) + + return new_event + def _no_events_anywhere(self): """ Whether there are any live or completed events @@ -175,14 +204,17 @@ class TestProgress(MgrTestCase): """ When a recovery is underway, but then the out OSD comes back in, such that recovery is no longer necessary. + It should create another event for when osd is marked in + and cancel the one that is still ongoing. """ - ev = self._simulate_failure() + ev1 = self._simulate_failure() - self.mgr_cluster.mon_manager.raw_cluster_cmd('osd', 'in', '0') + ev2 = self._simulate_back_in([0], ev1) + + # Wait for progress event to ultimately complete + self.wait_until_true(lambda: self._is_complete(ev2['id']), + timeout=self.RECOVERY_PERIOD) - # Event should complete promptly - self.wait_until_true(lambda: self._is_complete(ev['id']), - timeout=self.EVENT_CREATION_PERIOD) self.assertTrue(self._is_quiet()) def test_osd_cannot_recover(self):