]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
qa: wait the scrub task to complete
authorXiubo Li <xiubli@redhat.com>
Wed, 23 Dec 2020 01:54:52 +0000 (09:54 +0800)
committerXiubo Li <xiubli@redhat.com>
Mon, 15 Mar 2021 05:23:29 +0000 (13:23 +0800)
Signed-off-by: Xiubo Li <xiubli@redhat.com>
(cherry picked from commit 7b857c63db8be8ecfdd96bf101cdae09226cba03)

qa/tasks/cephfs/test_data_scan.py
qa/tasks/cephfs/test_forward_scrub.py
qa/tasks/cephfs/test_multimds_misc.py
qa/tasks/cephfs/test_scrub.py
qa/tasks/cephfs_upgrade_snap.py

index 7b6459de9230a92787e3b07b2735df8ba5a5c2f2..e3616b6c5fd5f878f8cae68b4163f698d5ec432d 100644 (file)
@@ -511,6 +511,8 @@ class TestDataScan(CephFSTestCase):
         # are matched
         out_json = self.fs.rank_tell(["scrub", "start", "/subdir", "repair", "recursive"])
         self.assertNotEqual(out_json, None)
+        self.assertEqual(out_json["return_code"], 0)
+        self.assertEqual(self.fs.wait_until_scrub_complete(tag=out_json["scrub_tag"]), True)
 
         # Remove the whole 'sudbdir' directory
         self.mount_a.run_shell(["rm", "-rf", "subdir/"])
index 9ca3c4de790c4ab5a6de4591c85d35e10e74398e..97d68df3aa308b6b17dad0722827604bf575c8c6 100644 (file)
@@ -236,6 +236,8 @@ class TestForwardScrub(CephFSTestCase):
         with self.assert_cluster_log("inode table repaired", invert_match=True):
             out_json = self.fs.rank_tell(["scrub", "start", "/", "repair", "recursive"])
             self.assertNotEqual(out_json, None)
+            self.assertEqual(out_json["return_code"], 0)
+            self.assertEqual(self.fs.wait_until_scrub_complete(tag=out_json["scrub_tag"]), True)
 
         self.mds_cluster.mds_stop()
         self.mds_cluster.mds_fail()
@@ -259,6 +261,8 @@ class TestForwardScrub(CephFSTestCase):
         with self.assert_cluster_log("inode table repaired"):
             out_json = self.fs.rank_tell(["scrub", "start", "/", "repair", "recursive"])
             self.assertNotEqual(out_json, None)
+            self.assertEqual(out_json["return_code"], 0)
+            self.assertEqual(self.fs.wait_until_scrub_complete(tag=out_json["scrub_tag"]), True)
 
         self.mds_cluster.mds_stop()
         table_text = self.fs.table_tool(["0", "show", "inode"])
@@ -290,6 +294,9 @@ class TestForwardScrub(CephFSTestCase):
         with self.assert_cluster_log("bad backtrace on inode"):
             out_json = self.fs.rank_tell(["scrub", "start", "/", "repair", "recursive"])
             self.assertNotEqual(out_json, None)
+            self.assertEqual(out_json["return_code"], 0)
+            self.assertEqual(self.fs.wait_until_scrub_complete(tag=out_json["scrub_tag"]), True)
+
         self.fs.mds_asok(["flush", "journal"])
         backtrace = self.fs.read_backtrace(file_ino)
         self.assertEqual(['alpha', 'parent_a'],
index eecd2e488403246e82b9d5da77604c14fcec4f15..ee93515d48d05068c1c3cdce6e5e5f6285765f93 100644 (file)
@@ -13,9 +13,6 @@ class TestScrub2(CephFSTestCase):
     def _get_scrub_status(self, rank=0):
         return self.fs.rank_tell(["scrub", "status"], rank)
 
-    def _wait_until_scrubbed(self, timeout):
-        self.wait_until_true(lambda: "no active" in self._get_scrub_status()['status'], timeout)
-
     def _check_task_status_na(self, timo=120):
         """ check absence of scrub status in ceph status """
         with safe_while(sleep=1, tries=120, action='wait for task status') as proceed:
@@ -72,8 +69,10 @@ class TestScrub2(CephFSTestCase):
         inos = self._find_path_inos('d1/d2/d3/')
 
         tag = "tag123"
-        self.fs.rank_tell(["tag", "path", "/d1/d2/d3", tag], 0)
-        self._wait_until_scrubbed(30);
+        out_json = self.fs.rank_tell(["tag", "path", "/d1/d2/d3", tag], 0)
+        self.assertNotEqual(out_json, None)
+        self.assertEqual(out_json["return_code"], 0)
+        self.assertEqual(self.fs.wait_until_scrub_complete(tag=out_json["scrub_tag"]), True)
 
         def assertTagged(ino):
             file_obj_name = "{0:x}.00000000".format(ino)
@@ -90,8 +89,10 @@ class TestScrub2(CephFSTestCase):
             file_obj_name = "{0:x}.00000000".format(ino)
             self.fs.rados(["rmxattr", file_obj_name, "parent"])
 
-        self.fs.rank_tell(["scrub", "start", "/d1/d2/d3", "recursive", "force"], 0)
-        self._wait_until_scrubbed(30);
+        out_json = self.fs.rank_tell(["scrub", "start", "/d1/d2/d3", "recursive", "force"], 0)
+        self.assertNotEqual(out_json, None)
+        self.assertEqual(out_json["return_code"], 0)
+        self.assertEqual(self.fs.wait_until_scrub_complete(tag=out_json["scrub_tag"]), True)
 
         def _check_damage(mds_rank, inos):
             all_damage = self.fs.rank_tell(["damage", "ls"], mds_rank)
index 1875b5f34fd7f7417e80741dcf214df8a4328836..896ea0480df85c659e0c2dd67e84d4108ed1aa90 100644 (file)
@@ -106,6 +106,8 @@ class DupInodeWorkload(Workload):
     def validate(self):
         out_json = self._filesystem.rank_tell(["scrub", "start", "/", "recursive", "repair"])
         self.assertNotEqual(out_json, None)
+        self.assertEqual(out_json["return_code"], 0)
+        self.assertEqual(self._filesystem.wait_until_scrub_complete(tag=out_json["scrub_tag"]), True)
         self.assertTrue(self._filesystem.are_daemons_healthy())
         return self._errors
 
@@ -135,6 +137,8 @@ class TestScrub(CephFSTestCase):
 
         out_json = self.fs.rank_tell(["scrub", "start", "/", "recursive", "repair"])
         self.assertNotEqual(out_json, None)
+        self.assertEqual(out_json["return_code"], 0)
+        self.assertEqual(self.fs.wait_until_scrub_complete(tag=out_json["scrub_tag"]), True)
 
         # See that the files are present and correct
         errors = workload.validate()
@@ -162,7 +166,7 @@ class TestScrub(CephFSTestCase):
         That scrubbing new files does not lead to errors
         """
         workload.create_files(1000)
-        self._wait_until_scrub_complete()
+        self.fs.wait_until_scrub_complete()
         self.assertEqual(self._get_damage_count(), 0)
 
     def test_scrub_backtrace_for_new_files(self):
index 1708d43cfe74ad51b3c47470533ba59227e74cf7..5cc388a05dc9adba40ecb071adcda84d9e299e59 100644 (file)
@@ -26,12 +26,14 @@ def task(ctx, config):
 
     json = fs.rank_tell(["scrub", "start", "/", "force", "recursive", "repair"])
     if not json or json['return_code'] == 0:
+        assert(fs.wait_until_scrub_complete(tag=json["scrub_tag"]) == True)
         log.info("scrub / completed")
     else:
         log.info("scrub / failed: {}".format(json))
 
     json = fs.rank_tell(["scrub", "start", "~mdsdir", "force", "recursive", "repair"])
     if not json or json['return_code'] == 0:
+        assert(fs.wait_until_scrub_complete(tag=json["scrub_tag"]) == True)
         log.info("scrub ~mdsdir completed")
     else:
         log.info("scrub / failed: {}".format(json))