]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
qa: added three testcases
authordparmar18 <dparmar@redhat.com>
Wed, 23 Nov 2022 10:39:36 +0000 (16:09 +0530)
committerDhairya Parmar <dparmar@redhat.com>
Fri, 8 Sep 2023 10:44:56 +0000 (16:14 +0530)
- test_human_readable_quota_values
- test_human_readable_quota_invalid_values
- test_disable_enable_human_readable_quota_values

Fixes: https://tracker.ceph.com/issues/55940
Signed-off-by: Dhairya Parmar <dparmar@redhat.com>
(cherry picked from commit 9a462f78fd420b0611bb367012714717ad5f35c7)

qa/tasks/cephfs/test_quota.py

index 0386672bd8316050139851a5a2d98c0f5c6b25fd..b5691c83852d04342e2cb41e0ca8236890c7b84a 100644 (file)
@@ -104,3 +104,59 @@ class TestQuota(CephFSTestCase):
         with self.assertRaises(CommandFailedError):
             self.mount_b.write_n_mb("subdir_data/file", 40)
 
+    def test_human_readable_quota_values(self):
+        """
+        test human-readable values for setting ceph.quota.max_bytes
+        """
+        self.mount_a.run_shell(["mkdir", "subdir"])
+
+        self.assertEqual(self.mount_a.getfattr("./subdir",
+                                               "ceph.quota.max_bytes"), None)
+
+        readable_values = {"10K": "10240",
+                           "100Ki": "102400",
+                           "10M": "10485760",
+                           "100Mi": "104857600",
+                           "2G": "2147483648",
+                           "4Gi": "4294967296",
+                           "1T": "1099511627776",
+                           "2Ti": "2199023255552"}
+        for readable_value in readable_values:
+            self.mount_a.setfattr("./subdir", "ceph.quota.max_bytes",
+                                  readable_value)
+            self.assertEqual(self.mount_a.getfattr(
+                "./subdir", "ceph.quota.max_bytes"),
+                readable_values.get(readable_value))
+
+    def test_human_readable_quota_invalid_values(self):
+        """
+        test invalid values for ceph.quota.max_bytes
+        """
+
+        self.mount_a.run_shell(["mkdir", "subdir"])
+
+        invalid_values = ["10A", "1y00Ki", "af00", "G", "", " ", "-1t", "-1"]
+        for invalid_value in invalid_values:
+            with self.assertRaises(CommandFailedError):
+                self.mount_a.setfattr("./subdir", "ceph.quota.max_bytes",
+                                      invalid_value)
+
+    def test_disable_enable_human_readable_quota_values(self):
+        """
+        test:
+        1) disabling ceph.quota.max_bytes using byte value.
+        2) enabling it again using human readable value.
+        3) disabling it again but using human readable value.
+        """
+
+        self.mount_a.run_shell(["mkdir", "subdir"])
+
+        self.mount_a.setfattr("./subdir", "ceph.quota.max_bytes", "0")
+        self.assertEqual(self.mount_a.getfattr("./subdir",
+                                               "ceph.quota.max_bytes"), None)
+        self.mount_a.setfattr("./subdir", "ceph.quota.max_bytes", "1K")
+        self.assertEqual(self.mount_a.getfattr("./subdir",
+                                               "ceph.quota.max_bytes"), "1024")
+        self.mount_a.setfattr("./subdir", "ceph.quota.max_bytes", "0M")
+        self.assertEqual(self.mount_a.getfattr("./subdir",
+                                               "ceph.quota.max_bytes"), None)