From 0c88aaa0a3b7a0434bce7bb9f6fa60e0e7d96576 Mon Sep 17 00:00:00 2001 From: Mykola Golub Date: Tue, 6 Dec 2022 18:23:56 +0000 Subject: [PATCH] qa/tasks/cephfs: add "extra data pool" cephfs-data-scan tests Signed-off-by: Mykola Golub --- qa/tasks/cephfs/test_data_scan.py | 31 ++++++++++++++++++++++++++++--- 1 file changed, 28 insertions(+), 3 deletions(-) diff --git a/qa/tasks/cephfs/test_data_scan.py b/qa/tasks/cephfs/test_data_scan.py index 32789df4d6c..fc47d7a2fa6 100644 --- a/qa/tasks/cephfs/test_data_scan.py +++ b/qa/tasks/cephfs/test_data_scan.py @@ -169,13 +169,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 @@ -196,8 +197,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 @@ -723,3 +723,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))