]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
qa: test mgr cephfs mount blacklist
authorPatrick Donnelly <pdonnell@redhat.com>
Tue, 3 Dec 2019 23:02:19 +0000 (15:02 -0800)
committerPatrick Donnelly <pdonnell@redhat.com>
Wed, 4 Dec 2019 01:53:14 +0000 (17:53 -0800)
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
qa/tasks/cephfs/cephfs_test_case.py
qa/tasks/cephfs/test_volumes.py

index c3b266d62e94010debb58f8d9312221ef0edf3f0..3349cd17ac8cb51ca2ed1a92279f0933418fd661 100644 (file)
@@ -228,6 +228,15 @@ class CephFSTestCase(CephTestCase):
     def _session_by_id(self, session_ls):
         return dict([(s['id'], s) for s in session_ls])
 
+    def wait_until_evicted(self, client_id, timeout=30):
+        def helper():
+            ls = self._session_list()
+            for s in ls:
+                if s['id'] == client_id:
+                    return False
+            return True
+        self.wait_until_true(lambda: helper(), timeout)
+
     def wait_for_daemon_start(self, daemon_ids=None):
         """
         Wait until all the daemons appear in the FSMap, either assigned
index 079e3cce946cb01350c9cdb665a99fd93bbb70da..c2c6cc4cff2945e9c833d20000147b8cf859c267 100644 (file)
@@ -1073,3 +1073,20 @@ class TestVolumes(CephFSTestCase):
 
         # verify trash dir is clean
         self._wait_for_trash_empty()
+
+    def test_mgr_eviction(self):
+        # unmount any cephfs mounts
+        self.mount_a.umount_wait()
+        sessions = self._session_list()
+        self.assertLessEqual(len(sessions), 1) # maybe mgr is already mounted
+
+        # Get the mgr to definitely mount cephfs
+        subvolume = self._generate_random_subvolume_name()
+        self._fs_cmd("subvolume", "create", self.volname, subvolume)
+        sessions = self._session_list()
+        self.assertEqual(len(sessions), 1)
+
+        # Now fail the mgr, check the session was evicted
+        mgr = self.mgr_cluster.get_active_id()
+        self.mgr_cluster.mgr_fail(mgr)
+        self.wait_until_evicted(sessions[0]['id'])