Skip to content

Commit 3005495

Browse files
rishabh-d-davevshankar
authored andcommitted
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 <[email protected]> Signed-off-by: Venky Shankar <[email protected]>
1 parent 74452ad commit 3005495

File tree

1 file changed

+24
-3
lines changed

1 file changed

+24
-3
lines changed

qa/tasks/cephfs/test_admin.py

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -715,10 +715,12 @@ def test_fs_rename(self):
715715
self.run_ceph_cmd(f'fs fail {self.fs.name}')
716716
self.run_ceph_cmd(f'fs set {self.fs.name} refuse_client_session true')
717717
sleep(5)
718+
718719
self.run_ceph_cmd(f'fs rename {orig_fs_name} {new_fs_name} --yes-i-really-mean-it')
720+
719721
self.run_ceph_cmd(f'fs set {new_fs_name} joinable true')
720722
self.run_ceph_cmd(f'fs set {new_fs_name} refuse_client_session false')
721-
sleep(5)
723+
self.fs.wait_for_daemons()
722724

723725
# authorize a cephx ID access to the renamed file system.
724726
# use the ID to write to the file system.
@@ -754,11 +756,13 @@ def test_fs_rename_idempotency(self):
754756
self.run_ceph_cmd(f'fs fail {self.fs.name}')
755757
self.run_ceph_cmd(f'fs set {self.fs.name} refuse_client_session true')
756758
sleep(5)
759+
757760
self.run_ceph_cmd(f'fs rename {orig_fs_name} {new_fs_name} --yes-i-really-mean-it')
758761
self.run_ceph_cmd(f'fs rename {orig_fs_name} {new_fs_name} --yes-i-really-mean-it')
762+
759763
self.run_ceph_cmd(f'fs set {new_fs_name} joinable true')
760764
self.run_ceph_cmd(f'fs set {new_fs_name} refuse_client_session false')
761-
sleep(5)
765+
self.fs.wait_for_daemons()
762766

763767
# original file system name does not appear in `fs ls` command
764768
self.assertFalse(self.fs.exists())
@@ -777,13 +781,16 @@ def test_fs_rename_fs_new_fails_with_old_fsname_existing_pools(self):
777781
new_fs_name = 'new_cephfs'
778782
data_pool = self.fs.get_data_pool_name()
779783
metadata_pool = self.fs.get_metadata_pool_name()
784+
780785
self.run_ceph_cmd(f'fs fail {self.fs.name}')
781786
self.run_ceph_cmd(f'fs set {self.fs.name} refuse_client_session true')
782787
sleep(5)
788+
783789
self.run_ceph_cmd(f'fs rename {orig_fs_name} {new_fs_name} --yes-i-really-mean-it')
790+
784791
self.run_ceph_cmd(f'fs set {new_fs_name} joinable true')
785792
self.run_ceph_cmd(f'fs set {new_fs_name} refuse_client_session false')
786-
sleep(5)
793+
self.fs.wait_for_daemons()
787794

788795
try:
789796
self.run_ceph_cmd(f"fs new {orig_fs_name} {metadata_pool} {data_pool}")
@@ -823,6 +830,7 @@ def test_fs_rename_fails_without_yes_i_really_mean_it_flag(self):
823830
self.run_ceph_cmd(f'fs fail {self.fs.name}')
824831
self.run_ceph_cmd(f'fs set {self.fs.name} refuse_client_session true')
825832
sleep(5)
833+
826834
try:
827835
self.run_ceph_cmd(f"fs rename {self.fs.name} new_fs")
828836
except CommandFailedError as ce:
@@ -832,8 +840,10 @@ def test_fs_rename_fails_without_yes_i_really_mean_it_flag(self):
832840
else:
833841
self.fail("expected renaming of file system without the "
834842
"'--yes-i-really-mean-it' flag to fail ")
843+
835844
self.run_ceph_cmd(f'fs set {self.fs.name} joinable true')
836845
self.run_ceph_cmd(f'fs set {self.fs.name} refuse_client_session false')
846+
self.fs.wait_for_daemons()
837847

838848
def test_fs_rename_fails_for_non_existent_fs(self):
839849
"""
@@ -842,6 +852,7 @@ def test_fs_rename_fails_for_non_existent_fs(self):
842852
self.run_ceph_cmd(f'fs fail {self.fs.name}')
843853
self.run_ceph_cmd(f'fs set {self.fs.name} refuse_client_session true')
844854
sleep(5)
855+
845856
try:
846857
self.run_ceph_cmd("fs rename non_existent_fs new_fs --yes-i-really-mean-it")
847858
except CommandFailedError as ce:
@@ -861,15 +872,18 @@ def test_fs_rename_fails_new_name_already_in_use(self):
861872
self.run_ceph_cmd(f'fs fail {self.fs.name}')
862873
self.run_ceph_cmd(f'fs set {self.fs.name} refuse_client_session true')
863874
sleep(5)
875+
864876
try:
865877
self.run_ceph_cmd(f"fs rename {self.fs.name} {self.fs2.name} --yes-i-really-mean-it")
866878
except CommandFailedError as ce:
867879
self.assertEqual(ce.exitstatus, errno.EINVAL,
868880
"invalid error code on renaming to a fs name that is already in use")
869881
else:
870882
self.fail("expected renaming to a new file system name that is already in use to fail.")
883+
871884
self.run_ceph_cmd(f'fs set {self.fs.name} joinable true')
872885
self.run_ceph_cmd(f'fs set {self.fs.name} refuse_client_session false')
886+
self.fs.wait_for_daemons()
873887

874888
def test_fs_rename_fails_with_mirroring_enabled(self):
875889
"""
@@ -882,15 +896,18 @@ def test_fs_rename_fails_with_mirroring_enabled(self):
882896
self.run_ceph_cmd(f'fs fail {self.fs.name}')
883897
self.run_ceph_cmd(f'fs set {self.fs.name} refuse_client_session true')
884898
sleep(5)
899+
885900
try:
886901
self.run_ceph_cmd(f'fs rename {orig_fs_name} {new_fs_name} --yes-i-really-mean-it')
887902
except CommandFailedError as ce:
888903
self.assertEqual(ce.exitstatus, errno.EPERM, "invalid error code on renaming a mirrored file system")
889904
else:
890905
self.fail("expected renaming of a mirrored file system to fail")
906+
891907
self.run_ceph_cmd(f'fs mirror disable {orig_fs_name}')
892908
self.run_ceph_cmd(f'fs set {self.fs.name} joinable true')
893909
self.run_ceph_cmd(f'fs set {self.fs.name} refuse_client_session false')
910+
self.fs.wait_for_daemons()
894911

895912
def test_rename_when_fs_is_online(self):
896913
'''
@@ -901,13 +918,15 @@ def test_rename_when_fs_is_online(self):
901918
new_fs_name = 'new_cephfs'
902919

903920
self.run_ceph_cmd(f'fs set {self.fs.name} refuse_client_session true')
921+
904922
self.negtest_ceph_cmd(
905923
args=(f'fs rename {self.fs.name} {new_fs_name} '
906924
'--yes-i-really-mean-it'),
907925
errmsgs=(f"CephFS '{self.fs.name}' is not offline. Before "
908926
"renaming a CephFS, it must be marked as down. See "
909927
"`ceph fs fail`."),
910928
retval=errno.EPERM)
929+
911930
self.run_ceph_cmd(f'fs set {self.fs.name} refuse_client_session false')
912931

913932
self.fs.getinfo()
@@ -932,13 +951,15 @@ def test_rename_when_clients_not_refused(self):
932951
self.mount_a.umount_wait(require_clean=True)
933952

934953
self.run_ceph_cmd(f'fs fail {self.fs.name}')
954+
935955
self.negtest_ceph_cmd(
936956
args=f"fs rename {self.fs.name} new_fs --yes-i-really-mean-it",
937957
errmsgs=(f"CephFS '{self.fs.name}' doesn't refuse clients. "
938958
"Before renaming a CephFS, flag "
939959
"'refuse_client_session' must be set. See "
940960
"`ceph fs set`."),
941961
retval=errno.EPERM)
962+
942963
self.run_ceph_cmd(f'fs fail {self.fs.name}')
943964

944965

0 commit comments

Comments
 (0)