Skip to content

Commit 8cecbc2

Browse files
qa/cephfs: add tests for "snapshot getpath" cmd against v1 and...
legacy subvolumes. Signed-off-by: Rishabh Dave <[email protected]>
1 parent 9e39e5c commit 8cecbc2

File tree

1 file changed

+108
-10
lines changed

1 file changed

+108
-10
lines changed

qa/tasks/cephfs/test_volumes.py

Lines changed: 108 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6504,11 +6504,21 @@ def get_subvol_uuid(self, subvol_name, group_name=None):
65046504
subvol_uuid = os.path.basename(subvol_path)
65056505
return subvol_uuid
65066506

6507-
def construct_snap_path(self, subvol_name, snap_name, uuid,
6508-
group_name='_nogroup'):
6507+
def construct_snap_path_for_v2(self, subvol_name, snap_name, uuid,
6508+
group_name='_nogroup'):
65096509
return os.path.join('/volumes', group_name, subvol_name, '.snap',
65106510
snap_name, uuid)
65116511

6512+
def construct_snap_path_for_v1(self, subvol_name, snap_name, uuid,
6513+
group_name='_nogroup'):
6514+
return os.path.join('/volumes', group_name, subvol_name, uuid,
6515+
'.snap', snap_name)
6516+
6517+
def construct_snap_path_for_legacy(self, subvol_name, snap_name,
6518+
group_name='_nogroup'):
6519+
return os.path.join('/volumes', group_name, subvol_name, '.snap',
6520+
snap_name)
6521+
65126522
def test_snapshot_getpath(self):
65136523
'''
65146524
Test that "ceph fs subvolume snapshot getpath" command returns path to
@@ -6525,8 +6535,8 @@ def test_snapshot_getpath(self):
65256535
snap_path = self.get_ceph_cmd_stdout(f'fs subvolume snapshot getpath '
65266536
f'{self.volname} {subvol_name} '
65276537
f'{snap_name}').strip()
6528-
exp_snap_path = self.construct_snap_path(subvol_name, snap_name,
6529-
sv_uuid)
6538+
exp_snap_path = self.construct_snap_path_for_v2(subvol_name, snap_name,
6539+
sv_uuid)
65306540
self.assertEqual(snap_path, exp_snap_path)
65316541

65326542
def test_snapshot_getpath_in_group(self):
@@ -6550,8 +6560,8 @@ def test_snapshot_getpath_in_group(self):
65506560
f'{self.volname} {subvol_name} '
65516561
f'{snap_name} {group_name}')\
65526562
.strip()
6553-
exp_snap_path = self.construct_snap_path(subvol_name, snap_name,
6554-
sv_uuid, group_name)
6563+
exp_snap_path = self.construct_snap_path_for_v2(subvol_name, snap_name,
6564+
sv_uuid, group_name)
65556565
self.assertEqual(snap_path, exp_snap_path)
65566566

65576567
def test_snapshot_getpath_on_retained_subvol(self):
@@ -6573,8 +6583,8 @@ def test_snapshot_getpath_on_retained_subvol(self):
65736583
snap_path = self.get_ceph_cmd_stdout(f'fs subvolume snapshot getpath '
65746584
f'{self.volname} {subvol_name} '
65756585
f'{snap_name}').strip()
6576-
exp_snap_path = self.construct_snap_path(subvol_name, snap_name,
6577-
sv_uuid)
6586+
exp_snap_path = self.construct_snap_path_for_v2(subvol_name, snap_name,
6587+
sv_uuid)
65786588
self.assertEqual(snap_path, exp_snap_path)
65796589

65806590
def test_snapshot_getpath_on_retained_subvol_in_group(self):
@@ -6601,8 +6611,96 @@ def test_snapshot_getpath_on_retained_subvol_in_group(self):
66016611
f'{self.volname} {subvol_name} '
66026612
f'{snap_name} {group_name}')\
66036613
.strip()
6604-
exp_snap_path = self.construct_snap_path(subvol_name, snap_name,
6605-
sv_uuid, group_name)
6614+
exp_snap_path = self.construct_snap_path_for_v2(subvol_name, snap_name,
6615+
sv_uuid, group_name)
6616+
self.assertEqual(snap_path, exp_snap_path)
6617+
6618+
def test_snapshot_getpath_for_v1(self):
6619+
subvol_name = self._gen_subvol_name()
6620+
snap_name = self._gen_subvol_snap_name()
6621+
6622+
self._create_v1_subvolume(subvol_name)
6623+
sv_uuid = self.get_subvol_uuid(subvol_name)
6624+
self.run_ceph_cmd(f'fs subvolume snapshot create {self.volname} '
6625+
f'{subvol_name} {snap_name}')
6626+
6627+
snap_path = self.get_ceph_cmd_stdout(
6628+
f'fs subvolume snapshot getpath {self.volname} {subvol_name} '
6629+
f'{snap_name}').strip()
6630+
exp_snap_path = self.construct_snap_path_for_v1(subvol_name, snap_name,
6631+
sv_uuid)
6632+
self.assertEqual(snap_path, exp_snap_path)
6633+
6634+
def test_snapshot_getpath_in_group_for_v1(self):
6635+
subvol_name = self._gen_subvol_name()
6636+
group_name = self._gen_subvol_grp_name()
6637+
snap_name = self._gen_subvol_snap_name()
6638+
6639+
self.run_ceph_cmd(f'fs subvolumegroup create {self.volname} '
6640+
f'{group_name}')
6641+
self._create_v1_subvolume(subvol_name, group_name)
6642+
sv_uuid = self.get_subvol_uuid(subvol_name, group_name)
6643+
self.run_ceph_cmd(f'fs subvolume snapshot create {self.volname} '
6644+
f'{subvol_name} {snap_name} {group_name}')
6645+
6646+
snap_path = self.get_ceph_cmd_stdout(
6647+
f'fs subvolume snapshot getpath {self.volname} {subvol_name} '
6648+
f'{snap_name} {group_name}').strip()
6649+
exp_snap_path = self.construct_snap_path_for_v1(subvol_name, snap_name,
6650+
sv_uuid, group_name)
6651+
self.assertEqual(snap_path, exp_snap_path)
6652+
6653+
def test_snapshot_getpath_for_upgraded_legacy(self):
6654+
subvol_name = self._gen_subvol_name()
6655+
snap_name = self._gen_subvol_snap_name()
6656+
6657+
sv_path = os.path.join('.', 'volumes', '_nogroup', subvol_name)
6658+
self.mount_a.run_shell(f'sudo mkdir -p {sv_path}', omit_sudo=False)
6659+
6660+
sv_getpath = self.get_ceph_cmd_stdout(
6661+
f'fs subvolume getpath {self.volname} {subvol_name}').strip()
6662+
self.assertNotEqual(sv_getpath, None)
6663+
# remove '/' at the beginning
6664+
self.assertEqual(sv_path[1:], sv_getpath)
6665+
self._assert_meta_location_and_version(self.volname, subvol_name,
6666+
version=1, legacy=True)
6667+
6668+
self.run_ceph_cmd(f'fs subvolume snapshot create {self.volname} '
6669+
f'{subvol_name} {snap_name}')
6670+
6671+
snap_path = self.get_ceph_cmd_stdout(
6672+
f'fs subvolume snapshot getpath {self.volname} {subvol_name} '
6673+
f'{snap_name}').strip()
6674+
exp_snap_path = self.construct_snap_path_for_legacy(subvol_name,
6675+
snap_name)
6676+
self.assertEqual(snap_path, exp_snap_path)
6677+
6678+
def test_snapshot_getpath_in_group_for_upgraded_legacy(self):
6679+
subvol_name = self._gen_subvol_name()
6680+
group_name = self._gen_subvol_grp_name()
6681+
snap_name = self._gen_subvol_snap_name()
6682+
6683+
sv_path = os.path.join('.', 'volumes', group_name, subvol_name)
6684+
self.mount_a.run_shell(f'sudo mkdir -p {sv_path}', omit_sudo=False)
6685+
6686+
sv_getpath = self.get_ceph_cmd_stdout(
6687+
f'fs subvolume getpath {self.volname} {subvol_name} '
6688+
f'{group_name}').strip()
6689+
self.assertNotEqual(sv_getpath, None)
6690+
# remove '/' at the beginning
6691+
self.assertEqual(sv_path[1:], sv_getpath)
6692+
self._assert_meta_location_and_version(self.volname, subvol_name,
6693+
subvol_group=group_name,
6694+
version=1, legacy=True)
6695+
6696+
self.run_ceph_cmd(f'fs subvolume snapshot create {self.volname} '
6697+
f'{subvol_name} {snap_name} {group_name}')
6698+
6699+
snap_path = self.get_ceph_cmd_stdout(
6700+
f'fs subvolume snapshot getpath {self.volname} {subvol_name} '
6701+
f'{snap_name} {group_name}').strip()
6702+
exp_snap_path = self.construct_snap_path_for_legacy(subvol_name, snap_name,
6703+
group_name)
66066704
self.assertEqual(snap_path, exp_snap_path)
66076705

66086706

0 commit comments

Comments
 (0)