]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
qa/cephfs: add bal_rank_mask test cases
authorYongseok Oh <yongseok.oh@linecorp.com>
Tue, 11 Oct 2022 11:49:45 +0000 (20:49 +0900)
committerYongseok Oh <yongseok.oh@linecorp.com>
Thu, 13 Oct 2022 01:39:34 +0000 (01:39 +0000)
Signed-off-by: Yongseok Oh <yongseok.oh@linecorp.com>
qa/tasks/cephfs/filesystem.py
qa/tasks/cephfs/test_admin.py
qa/tasks/mgr/dashboard/test_health.py

index 354583e047e388662e09853d1475ae1946892844..fff436811a15b0870c5ee471d0e9e461b050eb70 100644 (file)
@@ -594,6 +594,9 @@ class Filesystem(MDSCluster):
     def set_allow_new_snaps(self, yes):
         self.set_var("allow_new_snaps", yes, '--yes-i-really-mean-it')
 
+    def set_bal_rank_mask(self, bal_rank_mask):
+        self.set_var("bal_rank_mask", bal_rank_mask)
+
     def compat(self, *args):
         a = map(lambda x: str(x).lower(), args)
         self.mon_manager.raw_cluster_cmd("fs", "compat", self.name, *a)
index cfab5e8a5430f2710ca4f3f9c21c2be4c48838f2..e6ad57b5c3027941ea4727b68dea164cd119f10a 100644 (file)
@@ -1387,3 +1387,80 @@ class TestAdminCommandDumpLoads(CephFSTestCase):
         self.assertIn("dirfrags", loads)
         for d in loads["dirfrags"]:
             self.assertLessEqual(d["path"].count("/"), 1)
+
+class TestFsBalRankMask(CephFSTestCase):
+    """
+    Tests ceph fs set <fs_name> bal_rank_mask
+    """
+
+    CLIENTS_REQUIRED = 0
+    MDSS_REQUIRED = 2
+
+    def test_bal_rank_mask(self):
+        """
+        check whether a specified bal_rank_mask value is valid or not.
+        """
+        bal_rank_mask = '0x0'
+        log.info(f"set bal_rank_mask {bal_rank_mask}")
+        self.fs.set_bal_rank_mask(bal_rank_mask)
+        self.assertEqual(bal_rank_mask, self.fs.get_var('bal_rank_mask'))
+
+        bal_rank_mask = '0'
+        log.info(f"set bal_rank_mask {bal_rank_mask}")
+        self.fs.set_bal_rank_mask(bal_rank_mask)
+        self.assertEqual(bal_rank_mask, self.fs.get_var('bal_rank_mask'))
+
+        bal_rank_mask = '-1'
+        log.info(f"set bal_rank_mask {bal_rank_mask}")
+        self.fs.set_bal_rank_mask(bal_rank_mask)
+        self.assertEqual(bal_rank_mask, self.fs.get_var('bal_rank_mask'))
+
+        bal_rank_mask = 'all'
+        log.info(f"set bal_rank_mask {bal_rank_mask}")
+        self.fs.set_bal_rank_mask(bal_rank_mask)
+        self.assertEqual(bal_rank_mask, self.fs.get_var('bal_rank_mask'))
+
+        bal_rank_mask = '0x1'
+        log.info(f"set bal_rank_mask {bal_rank_mask}")
+        self.fs.set_bal_rank_mask(bal_rank_mask)
+        self.assertEqual(bal_rank_mask, self.fs.get_var('bal_rank_mask'))
+
+        bal_rank_mask = '1'
+        log.info(f"set bal_rank_mask {bal_rank_mask}")
+        self.fs.set_bal_rank_mask(bal_rank_mask)
+        self.assertEqual(bal_rank_mask, self.fs.get_var('bal_rank_mask'))
+
+        bal_rank_mask = 'f0'
+        log.info(f"set bal_rank_mask {bal_rank_mask}")
+        self.fs.set_bal_rank_mask(bal_rank_mask)
+        self.assertEqual(bal_rank_mask, self.fs.get_var('bal_rank_mask'))
+
+        bal_rank_mask = 'ab'
+        log.info(f"set bal_rank_mask {bal_rank_mask}")
+        self.fs.set_bal_rank_mask(bal_rank_mask)
+        self.assertEqual(bal_rank_mask, self.fs.get_var('bal_rank_mask'))
+
+        bal_rank_mask = '0xfff0'
+        log.info(f"set bal_rank_mask {bal_rank_mask}")
+        self.fs.set_bal_rank_mask(bal_rank_mask)
+        self.assertEqual(bal_rank_mask, self.fs.get_var('bal_rank_mask'))
+
+        MAX_MDS = 256
+        bal_rank_mask = '0x' + 'f' * int(MAX_MDS / 4)
+        log.info(f"set bal_rank_mask {bal_rank_mask}")
+        self.fs.set_bal_rank_mask(bal_rank_mask)
+        self.assertEqual(bal_rank_mask, self.fs.get_var('bal_rank_mask'))
+
+        bal_rank_mask = ''
+        log.info("set bal_rank_mask to empty string")
+        try:
+            self.fs.set_bal_rank_mask(bal_rank_mask)
+        except CommandFailedError as e:
+            self.assertEqual(e.exitstatus, errno.EINVAL)
+
+        bal_rank_mask = '0x1' + 'f' * int(MAX_MDS / 4)
+        log.info(f"set bal_rank_mask {bal_rank_mask}")
+        try:
+            self.fs.set_bal_rank_mask(bal_rank_mask)
+        except CommandFailedError as e:
+            self.assertEqual(e.exitstatus, errno.EINVAL)
index 92de402e20561628e64df16ac79ac3ce577b9a99..ae922d2b354e4c47e1a72db0d1b54e369e564468 100644 (file)
@@ -23,6 +23,7 @@ class HealthTest(DashboardTestCase):
     __mdsmap_schema = JObj({
         'session_autoclose': int,
         'balancer': str,
+        'bal_rank_mask': str,
         'up': JObj({}, allow_unknown=True),
         'last_failure_osd_epoch': int,
         'in': JList(int),