From f70228e35a5a243761234b723eba39319ad0d239 Mon Sep 17 00:00:00 2001 From: Patrick Donnelly Date: Thu, 17 Dec 2020 12:11:23 -0800 Subject: [PATCH] qa: add test for reserved keyword feature Signed-off-by: Patrick Donnelly --- qa/tasks/cephfs/filesystem.py | 4 ++++ qa/tasks/cephfs/test_admin.py | 38 ++++++++++++++++++++++++++++++++--- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/qa/tasks/cephfs/filesystem.py b/qa/tasks/cephfs/filesystem.py index 8df09412576..29dd7b62e25 100644 --- a/qa/tasks/cephfs/filesystem.py +++ b/qa/tasks/cephfs/filesystem.py @@ -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 diff --git a/qa/tasks/cephfs/test_admin.py b/qa/tasks/cephfs/test_admin.py index bd41e25704e..37bfaf5c31f 100644 --- a/qa/tasks/cephfs/test_admin.py +++ b/qa/tasks/cephfs/test_admin.py @@ -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 ` 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 ` 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): """ -- 2.39.5