]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
qa: Add tests snapshot clone failure with quota
authorKotresh HR <khiremat@redhat.com>
Wed, 12 Jan 2022 09:37:13 +0000 (15:07 +0530)
committerKotresh HR <khiremat@redhat.com>
Mon, 28 Feb 2022 11:56:09 +0000 (17:26 +0530)
Fixes: https://tracker.ceph.com/issues/53848
Signed-off-by: Kotresh HR <khiremat@redhat.com>
(cherry picked from commit 7c0d31e52cea90e65152996024cabfa8a8fd299f)

Conflicts:
  qa/tasks/cephfs/test_volumes.py: The commit 103c7bdc70ca is
   not backported

qa/tasks/cephfs/test_volumes.py

index b2258c2a355d64b2310174b32e0a1e3f9105e5ca..397c56d464fc113898f8a259e5a681fee67c8aa9 100644 (file)
@@ -3694,6 +3694,40 @@ class TestVolumes(CephFSTestCase):
         # verify trash dir is clean
         self._wait_for_trash_empty()
 
+    def test_subvolume_snapshot_clone_quota_exceeded(self):
+        subvolume = self._generate_random_subvolume_name()
+        snapshot = self._generate_random_snapshot_name()
+        clone = self._generate_random_clone_name()
+
+        # create subvolume with 20MB quota
+        osize = self.DEFAULT_FILE_SIZE*1024*1024*20
+        self._fs_cmd("subvolume", "create", self.volname, subvolume,"--mode=777", "--size", str(osize))
+
+        # do IO, write 50 files of 1MB each to exceed quota. This mostly succeeds as quota enforcement takes time.
+        self._do_subvolume_io(subvolume, number_of_files=50)
+
+        # snapshot subvolume
+        self._fs_cmd("subvolume", "snapshot", "create", self.volname, subvolume, snapshot)
+
+        # schedule a clone
+        self._fs_cmd("subvolume", "snapshot", "clone", self.volname, subvolume, snapshot, clone)
+
+        # check clone status
+        self._wait_for_clone_to_complete(clone)
+
+        # verify clone
+        self._verify_clone(subvolume, snapshot, clone)
+
+        # remove snapshot
+        self._fs_cmd("subvolume", "snapshot", "rm", self.volname, subvolume, snapshot)
+
+        # remove subvolumes
+        self._fs_cmd("subvolume", "rm", self.volname, subvolume)
+        self._fs_cmd("subvolume", "rm", self.volname, clone)
+
+        # verify trash dir is clean
+        self._wait_for_trash_empty()
+
     def test_subvolume_snapshot_clone(self):
         subvolume = self._generate_random_subvolume_name()
         snapshot = self._generate_random_snapshot_name()