]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
qa: add test for reserved keyword feature 38640/head
authorPatrick Donnelly <pdonnell@redhat.com>
Thu, 17 Dec 2020 20:11:23 +0000 (12:11 -0800)
committerPatrick Donnelly <pdonnell@redhat.com>
Fri, 8 Jan 2021 16:27:38 +0000 (08:27 -0800)
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
qa/tasks/cephfs/filesystem.py
qa/tasks/cephfs/test_admin.py

index 8df09412576a176578155de5db20b6f573fe4174..29dd7b62e2518966902322972c3bee6b6498efd9 100644 (file)
@@ -579,6 +579,10 @@ class Filesystem(MDSCluster):
     def set_allow_new_snaps(self, yes):
         self.set_var("allow_new_snaps", yes, '--yes-i-really-mean-it')
 
+    def required_client_features(self, *args, **kwargs):
+        c = ["fs", "required_client_features", self.name, *args]
+        return self.mon_manager.run_cluster_cmd(args=c, **kwargs)
+
     # In Octopus+, the PG count can be omitted to use the default. We keep the
     # hard-coded value for deployments of Mimic/Nautilus.
     pgs_per_fs_pool = 8
index bd41e25704e9824e0fc8a6739b99b7f169a5ad7e..37bfaf5c31f81a9a841fc8613b4d977e94d1086c 100644 (file)
@@ -213,7 +213,7 @@ class TestRequiredClientFeatures(CephFSTestCase):
         self.assertGreater(len(features), 0);
 
         for f in features:
-            self.fs.mon_manager.raw_cluster_cmd('fs', 'required_client_features', self.fs.name, 'rm', str(f['index']))
+            self.fs.required_client_features('rm', str(f['index']))
 
         for f in features:
             index = f['index']
@@ -223,14 +223,46 @@ class TestRequiredClientFeatures(CephFSTestCase):
 
             if index % 3 == 0:
                 continue;
-            self.fs.mon_manager.raw_cluster_cmd('fs', 'required_client_features', self.fs.name, 'add', feature)
+            self.fs.required_client_features('add', feature)
             self.assertTrue(is_required(index))
 
             if index % 2 == 0:
                 continue;
-            self.fs.mon_manager.raw_cluster_cmd('fs', 'required_client_features', self.fs.name, 'rm', feature)
+            self.fs.required_client_features('rm', feature)
             self.assertFalse(is_required(index))
 
+    def test_required_client_feature_add_reserved(self):
+        """
+        That `ceph fs required_client_features X add reserved` fails.
+        """
+
+        p = self.fs.required_client_features('add', 'reserved', check_status=False, stderr=StringIO())
+        self.assertIn('Invalid feature name', p.stderr.getvalue())
+
+    def test_required_client_feature_rm_reserved(self):
+        """
+        That `ceph fs required_client_features X rm reserved` fails.
+        """
+
+        p = self.fs.required_client_features('rm', 'reserved', check_status=False, stderr=StringIO())
+        self.assertIn('Invalid feature name', p.stderr.getvalue())
+
+    def test_required_client_feature_add_reserved_bit(self):
+        """
+        That `ceph fs required_client_features X add <reserved_bit>` passes.
+        """
+
+        p = self.fs.required_client_features('add', '1', stderr=StringIO())
+        self.assertIn("added feature 'reserved' to required_client_features", p.stderr.getvalue())
+
+    def test_required_client_feature_rm_reserved_bit(self):
+        """
+        That `ceph fs required_client_features X rm <reserved_bit>` passes.
+        """
+
+        self.fs.required_client_features('add', '1')
+        p = self.fs.required_client_features('rm', '1', stderr=StringIO())
+        self.assertIn("removed feature 'reserved' from required_client_features", p.stderr.getvalue())
 
 class TestConfigCommands(CephFSTestCase):
     """