]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
qa/tasks/cephfs: add "extra data pool" cephfs-data-scan tests 50523/head
authorMykola Golub <mykola.golub@clyso.com>
Tue, 6 Dec 2022 18:23:56 +0000 (18:23 +0000)
committerMykola Golub <mykola.golub@clyso.com>
Fri, 7 Apr 2023 11:34:27 +0000 (14:34 +0300)
Signed-off-by: Mykola Golub <mykola.golub@clyso.com>
(cherry picked from commit 0c88aaa0a3b7a0434bce7bb9f6fa60e0e7d96576)

qa/tasks/cephfs/test_data_scan.py

index 199b942f7764750e303508a0553699a1d1691deb..b813d1417dac0a164bdbf4883f31089b4636271b 100644 (file)
@@ -135,13 +135,14 @@ class BacktracelessFile(Workload):
 
 
 class StripedStashedLayout(Workload):
-    def __init__(self, fs, m):
+    def __init__(self, fs, m, pool=None):
         super(StripedStashedLayout, self).__init__(fs, m)
 
         # Nice small stripes so we can quickly do our writes+validates
         self.sc = 4
         self.ss = 65536
         self.os = 262144
+        self.pool = pool and pool or self._filesystem.get_data_pool_name()
 
         self.interesting_sizes = [
             # Exactly stripe_count objects will exist
@@ -162,8 +163,7 @@ class StripedStashedLayout(Workload):
 
         self._mount.setfattr("./stripey", "ceph.dir.layout",
              "stripe_unit={ss} stripe_count={sc} object_size={os} pool={pool}".format(
-                 ss=self.ss, os=self.os, sc=self.sc,
-                 pool=self._filesystem.get_data_pool_name()
+                 ss=self.ss, os=self.os, sc=self.sc, pool=self.pool
              ))
 
         # Write files, then flush metadata so that its layout gets written into an xattr
@@ -687,3 +687,28 @@ class TestDataScan(CephFSTestCase):
             new_snaptable['snapserver']['last_snap'], old_snaptable['snapserver']['last_snap'])
         self.assertEqual(
             new_snaptable['snapserver']['snaps'], old_snaptable['snapserver']['snaps'])
+
+    def _prepare_extra_data_pool(self, set_root_layout=True):
+        extra_data_pool_name = self.fs.get_data_pool_name() + '_extra'
+        self.fs.add_data_pool(extra_data_pool_name)
+        if set_root_layout:
+            self.mount_a.setfattr(".", "ceph.dir.layout.pool",
+                                  extra_data_pool_name)
+        return extra_data_pool_name
+
+    def test_extra_data_pool_rebuild_simple(self):
+        self._prepare_extra_data_pool()
+        self._rebuild_metadata(SimpleWorkload(self.fs, self.mount_a))
+
+    def test_extra_data_pool_rebuild_few_files(self):
+        self._prepare_extra_data_pool()
+        self._rebuild_metadata(ManyFilesWorkload(self.fs, self.mount_a, 5), workers=1)
+
+    @for_teuthology
+    def test_extra_data_pool_rebuild_many_files_many_workers(self):
+        self._prepare_extra_data_pool()
+        self._rebuild_metadata(ManyFilesWorkload(self.fs, self.mount_a, 25), workers=7)
+
+    def test_extra_data_pool_stashed_layout(self):
+        pool_name = self._prepare_extra_data_pool(False)
+        self._rebuild_metadata(StripedStashedLayout(self.fs, self.mount_a, pool_name))