From b20a84eb1f2c187d9c202f78a0fa0d8e4ace75e9 Mon Sep 17 00:00:00 2001 From: Patrick Donnelly Date: Wed, 8 Jan 2025 14:45:01 -0500 Subject: [PATCH] qa: add tests for subvolume charmap settings Signed-off-by: Patrick Donnelly (cherry picked from commit 71c57121cf62b2b8b576e5d21bb71bdbccb6960d) --- qa/tasks/cephfs/test_volumes.py | 62 +++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/qa/tasks/cephfs/test_volumes.py b/qa/tasks/cephfs/test_volumes.py index 453bab79a0c6c..58ecc2cbb5b3c 100644 --- a/qa/tasks/cephfs/test_volumes.py +++ b/qa/tasks/cephfs/test_volumes.py @@ -1826,6 +1826,32 @@ class TestSubvolumeGroups(TestVolumesHelper): # verify trash dir is clean self._wait_for_trash_empty() + def test_subvolumegroup_charmap(self): + attrs = { + "normalization": "nfc", + "encoding": "utf8", + "casesensitive": False, + } + group = "foo" + self._fs_cmd("subvolumegroup", "create", self.volname, group) + for setting, value in attrs.items(): + self._fs_cmd("subvolumegroup", "charmap", "set", self.volname, "--group_name", group, setting, str(value)) + v = self._fs_cmd("subvolumegroup", "charmap", "get", self.volname, "--group_name", group) + v = json.loads(v) + self.assertEqual(v, attrs) + + def test_subvolumegroup_charmap_rm(self): + group = "foo" + self._fs_cmd("subvolumegroup", "create", self.volname, group) + self._fs_cmd("subvolumegroup", "charmap", "set", self.volname, "--group_name", group, "normalization", "nfc") + self._fs_cmd("subvolumegroup", "charmap", "rm", self.volname, "--group_name", group) + try: + self._fs_cmd("subvolumegroup", "charmap", "get", self.volname, "--group_name", group) + except CommandFailedError: + pass # ENODATA + else: + self.fail("should fail") + def test_subvolume_group_rm_force(self): # test removing non-existing subvolume group with --force group = self._gen_subvol_grp_name() @@ -2017,6 +2043,42 @@ class TestSubvolumes(TestVolumesHelper): # remove group self._fs_cmd("subvolumegroup", "rm", self.volname, group) + def test_subvolume_charmap_inherited(self): + subvolume = self._gen_subvol_name() + group = self._gen_subvol_grp_name() + self._fs_cmd("subvolumegroup", "create", self.volname, group) + self._fs_cmd("subvolumegroup", "charmap", "set", self.volname, "--group_name", group, "casesensitive", "0") + self._fs_cmd("subvolume", "create", self.volname, subvolume, "--group_name", group) + v = self._fs_cmd("subvolume", "charmap", "get", self.volname, "--group_name", group, subvolume) + v = json.loads(v) + self.assertEqual(v['casesensitive'], False) + + def test_subvolume_charmap(self): + subvolume = self._gen_subvol_name() + attrs = { + "normalization": "nfkd", + "encoding": "utf8", + "casesensitive": False, + } + self._fs_cmd("subvolume", "create", self.volname, subvolume) + for setting, value in attrs.items(): + self._fs_cmd("subvolume", "charmap", "set", self.volname, subvolume, setting, str(value)) + v = self._fs_cmd("subvolume", "charmap", "get", self.volname, subvolume) + v = json.loads(v) + self.assertEqual(v, attrs) + + def test_subvolume_charmap_rm(self): + subvolume = self._gen_subvol_name() + self._fs_cmd("subvolume", "create", self.volname, subvolume) + self._fs_cmd("subvolume", "charmap", "set", self.volname, subvolume, "normalization", "nfkc") + self._fs_cmd("subvolume", "charmap", "rm", self.volname, subvolume) + try: + self._fs_cmd("subvolume", "charmap", "get", self.volname, subvolume) + except CommandFailedError: + pass # ENODATA + else: + self.fail("should fail") + def test_subvolume_create_idempotence(self): # create subvolume subvolume = self._gen_subvol_name() -- 2.39.5