]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
qa: test charmap changes with dir and snaps 62833/head
authorPatrick Donnelly <pdonnell@ibm.com>
Tue, 15 Apr 2025 16:18:33 +0000 (12:18 -0400)
committerPatrick Donnelly <pdonnell@ibm.com>
Wed, 16 Apr 2025 14:51:14 +0000 (10:51 -0400)
Signed-off-by: Patrick Donnelly <pdonnell@ibm.com>
qa/tasks/cephfs/test_dir_charmap.py

index d32b487ceb6664ca95cf946b064fcbc9bde27840..cb19d95f27ee95b59c3bcb475ea259dceaac2df1 100644 (file)
@@ -228,6 +228,57 @@ class TestCharMapVxattr(CephFSTestCase, CharMapMixin):
                 stderr = p.stderr.getvalue()
                 self.fail("command failed:\n%s", stderr)
 
+    def test_cs_snaps_set_insensitive(self):
+        """
+        That setting a charmap fails for an empty directory with snaps.
+        """
+
+        attrs = {
+          "ceph.dir.casesensitive": False,
+          "ceph.dir.normalization": "nfc",
+          "ceph.dir.encoding": "utf8",
+        }
+
+        self.mount_a.run_shell_payload("mkdir -p foo/dir; mkdir foo/.snap/one; rmdir foo/dir")
+        for attr, v in attrs.items():
+            try:
+                self.mount_a.setfattr("foo/", attr, v, helpfulexception=True)
+            except DirectoryNotEmptyError:
+                pass
+            else:
+                self.fail("should fail")
+            try:
+                self.check_cs("foo")
+            except NoSuchAttributeError:
+                pass
+            else:
+                self.fail("should fail")
+
+    def test_cs_parent_snaps_set_insensitive(self):
+        """
+        That setting a charmap succeeds for an empty directory with parent snaps.
+        """
+
+        attrs = {
+          "ceph.dir.casesensitive": False,
+          "ceph.dir.normalization": "nfc",
+          "ceph.dir.encoding": "utf8",
+        }
+
+        self.mount_a.run_shell_payload("mkdir -p foo/{trash,bar}; mkdir foo/.snap/one; rmdir foo/trash;")
+        for attr, v in attrs.items():
+            try:
+                self.mount_a.setfattr("foo/bar", attr, v, helpfulexception=True)
+            except DirectoryNotEmptyError:
+                pass
+            else:
+                self.fail("should fail")
+            try:
+                self.check_cs("foo/bar")
+            except NoSuchAttributeError:
+                pass
+            else:
+                self.fail("should fail")
 
     def test_cs_remount(self):
         """