From 3005495225c94fb77987b47f8af46ad29e404cb3 Mon Sep 17 00:00:00 2001 From: Rishabh Dave Date: Wed, 22 May 2024 16:20:29 +0530 Subject: [PATCH] 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 --- qa/tasks/cephfs/test_admin.py | 27 ++++++++++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/qa/tasks/cephfs/test_admin.py b/qa/tasks/cephfs/test_admin.py index d7d2fd8148d..b7daad9e791 100644 --- a/qa/tasks/cephfs/test_admin.py +++ b/qa/tasks/cephfs/test_admin.py @@ -715,10 +715,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. @@ -754,11 +756,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()) @@ -777,13 +781,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}") @@ -823,6 +830,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: @@ -832,8 +840,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): """ @@ -842,6 +852,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: @@ -861,6 +872,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: @@ -868,8 +880,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): """ @@ -882,15 +896,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): ''' @@ -901,6 +918,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'), @@ -908,6 +926,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() @@ -932,6 +951,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. " @@ -939,6 +959,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}') -- 2.39.5