From: Rishabh Dave Date: Wed, 22 May 2024 10:50:29 +0000 (+0530) Subject: qa/cephfs: use wait_for_daemon() instead of sleep()-ing X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=1562bfd1c2b637ad5d34b4b2400070c6baef692f;p=ceph.git qa/cephfs: use wait_for_daemon() instead of sleep()-ing To avoid all sorts for races that could happen when using sleep(). Signed-off-by: Rishabh Dave Signed-off-by: Venky Shankar (cherry picked from commit 3005495225c94fb77987b47f8af46ad29e404cb3) --- diff --git a/qa/tasks/cephfs/test_admin.py b/qa/tasks/cephfs/test_admin.py index bd4146991f3..1b2d54808d8 100644 --- a/qa/tasks/cephfs/test_admin.py +++ b/qa/tasks/cephfs/test_admin.py @@ -778,10 +778,12 @@ class TestRenameCommand(TestAdminCommands): self.run_ceph_cmd(f'fs fail {self.fs.name}') self.run_ceph_cmd(f'fs set {self.fs.name} refuse_client_session true') sleep(5) + self.run_ceph_cmd(f'fs rename {orig_fs_name} {new_fs_name} --yes-i-really-mean-it') + self.run_ceph_cmd(f'fs set {new_fs_name} joinable true') self.run_ceph_cmd(f'fs set {new_fs_name} refuse_client_session false') - sleep(5) + self.fs.wait_for_daemons() # authorize a cephx ID access to the renamed file system. # use the ID to write to the file system. @@ -817,11 +819,13 @@ class TestRenameCommand(TestAdminCommands): self.run_ceph_cmd(f'fs fail {self.fs.name}') self.run_ceph_cmd(f'fs set {self.fs.name} refuse_client_session true') sleep(5) + self.run_ceph_cmd(f'fs rename {orig_fs_name} {new_fs_name} --yes-i-really-mean-it') self.run_ceph_cmd(f'fs rename {orig_fs_name} {new_fs_name} --yes-i-really-mean-it') + self.run_ceph_cmd(f'fs set {new_fs_name} joinable true') self.run_ceph_cmd(f'fs set {new_fs_name} refuse_client_session false') - sleep(5) + self.fs.wait_for_daemons() # original file system name does not appear in `fs ls` command self.assertFalse(self.fs.exists()) @@ -840,13 +844,16 @@ class TestRenameCommand(TestAdminCommands): new_fs_name = 'new_cephfs' data_pool = self.fs.get_data_pool_name() metadata_pool = self.fs.get_metadata_pool_name() + self.run_ceph_cmd(f'fs fail {self.fs.name}') self.run_ceph_cmd(f'fs set {self.fs.name} refuse_client_session true') sleep(5) + self.run_ceph_cmd(f'fs rename {orig_fs_name} {new_fs_name} --yes-i-really-mean-it') + self.run_ceph_cmd(f'fs set {new_fs_name} joinable true') self.run_ceph_cmd(f'fs set {new_fs_name} refuse_client_session false') - sleep(5) + self.fs.wait_for_daemons() try: self.run_ceph_cmd(f"fs new {orig_fs_name} {metadata_pool} {data_pool}") @@ -886,6 +893,7 @@ class TestRenameCommand(TestAdminCommands): self.run_ceph_cmd(f'fs fail {self.fs.name}') self.run_ceph_cmd(f'fs set {self.fs.name} refuse_client_session true') sleep(5) + try: self.run_ceph_cmd(f"fs rename {self.fs.name} new_fs") except CommandFailedError as ce: @@ -895,8 +903,10 @@ class TestRenameCommand(TestAdminCommands): else: self.fail("expected renaming of file system without the " "'--yes-i-really-mean-it' flag to fail ") + self.run_ceph_cmd(f'fs set {self.fs.name} joinable true') self.run_ceph_cmd(f'fs set {self.fs.name} refuse_client_session false') + self.fs.wait_for_daemons() def test_fs_rename_fails_for_non_existent_fs(self): """ @@ -905,6 +915,7 @@ class TestRenameCommand(TestAdminCommands): self.run_ceph_cmd(f'fs fail {self.fs.name}') self.run_ceph_cmd(f'fs set {self.fs.name} refuse_client_session true') sleep(5) + try: self.run_ceph_cmd("fs rename non_existent_fs new_fs --yes-i-really-mean-it") except CommandFailedError as ce: @@ -924,6 +935,7 @@ class TestRenameCommand(TestAdminCommands): self.run_ceph_cmd(f'fs fail {self.fs.name}') self.run_ceph_cmd(f'fs set {self.fs.name} refuse_client_session true') sleep(5) + try: self.run_ceph_cmd(f"fs rename {self.fs.name} {self.fs2.name} --yes-i-really-mean-it") except CommandFailedError as ce: @@ -931,8 +943,10 @@ class TestRenameCommand(TestAdminCommands): "invalid error code on renaming to a fs name that is already in use") else: self.fail("expected renaming to a new file system name that is already in use to fail.") + self.run_ceph_cmd(f'fs set {self.fs.name} joinable true') self.run_ceph_cmd(f'fs set {self.fs.name} refuse_client_session false') + self.fs.wait_for_daemons() def test_fs_rename_fails_with_mirroring_enabled(self): """ @@ -945,15 +959,18 @@ class TestRenameCommand(TestAdminCommands): self.run_ceph_cmd(f'fs fail {self.fs.name}') self.run_ceph_cmd(f'fs set {self.fs.name} refuse_client_session true') sleep(5) + try: self.run_ceph_cmd(f'fs rename {orig_fs_name} {new_fs_name} --yes-i-really-mean-it') except CommandFailedError as ce: self.assertEqual(ce.exitstatus, errno.EPERM, "invalid error code on renaming a mirrored file system") else: self.fail("expected renaming of a mirrored file system to fail") + self.run_ceph_cmd(f'fs mirror disable {orig_fs_name}') self.run_ceph_cmd(f'fs set {self.fs.name} joinable true') self.run_ceph_cmd(f'fs set {self.fs.name} refuse_client_session false') + self.fs.wait_for_daemons() def test_rename_when_fs_is_online(self): ''' @@ -964,6 +981,7 @@ class TestRenameCommand(TestAdminCommands): new_fs_name = 'new_cephfs' self.run_ceph_cmd(f'fs set {self.fs.name} refuse_client_session true') + self.negtest_ceph_cmd( args=(f'fs rename {self.fs.name} {new_fs_name} ' '--yes-i-really-mean-it'), @@ -971,6 +989,7 @@ class TestRenameCommand(TestAdminCommands): "renaming a CephFS, it must be marked as down. See " "`ceph fs fail`."), retval=errno.EPERM) + self.run_ceph_cmd(f'fs set {self.fs.name} refuse_client_session false') self.fs.getinfo() @@ -995,6 +1014,7 @@ class TestRenameCommand(TestAdminCommands): self.mount_a.umount_wait(require_clean=True) self.run_ceph_cmd(f'fs fail {self.fs.name}') + self.negtest_ceph_cmd( args=f"fs rename {self.fs.name} new_fs --yes-i-really-mean-it", errmsgs=(f"CephFS '{self.fs.name}' doesn't refuse clients. " @@ -1002,6 +1022,7 @@ class TestRenameCommand(TestAdminCommands): "'refuse_client_session' must be set. See " "`ceph fs set`."), retval=errno.EPERM) + self.run_ceph_cmd(f'fs fail {self.fs.name}')