Merge PR #57619 into main

* refs/pull/57619/head:
	qa/cephfs: use wait_for_daemon() instead of sleep()-ing
	qa/cephfs: mark file system joinable for fs rename tests before unmounting clients

Reviewed-by: Rishabh Dave <ridave@redhat.com>
This commit is contained in:
Venky Shankar 2024-06-27 22:04:37 +05:30
commit dbc9816d2e

View File

@ -891,10 +891,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.
@ -930,11 +932,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())
@ -953,13 +957,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}")
@ -999,6 +1006,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:
@ -1008,25 +1016,28 @@ 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):
"""
That renaming a non-existent file system fails.
"""
self.skipTest('This test is broken ATM; see '
'https://tracker.ceph.com/issues/66088')
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:
self.assertEqual(ce.exitstatus, errno.ENOENT, "invalid error code on renaming a non-existent fs")
else:
self.fail("expected renaming of a non-existent file system to fail")
self.run_ceph_cmd(f'fs set {self.fs.name} joinable true')
self.fs.wait_for_daemons()
self.run_ceph_cmd(f'fs set {self.fs.name} refuse_client_session false')
def test_fs_rename_fails_new_name_already_in_use(self):
"""
@ -1037,6 +1048,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:
@ -1044,8 +1056,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):
"""
@ -1058,15 +1072,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):
'''
@ -1077,6 +1094,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'),
@ -1084,6 +1102,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()
@ -1108,6 +1127,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. "
@ -1115,6 +1135,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}')