Skip to content

Commit 44cacaf

Browse files
qa/cephfs: add test to check clone source info's present in...
.meta file of a cloned subvolume after cloning is finished and in the output of "ceph fs subvolume info" command. Signed-off-by: Rishabh Dave <[email protected]>
1 parent 0ef6da6 commit 44cacaf

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

qa/tasks/cephfs/test_volumes.py

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2866,12 +2866,34 @@ def test_subvolume_info(self):
28662866

28672867
self.assertEqual(subvol_info["earmark"], earmark)
28682868

2869+
self.assertNotIn('source', subvol_info)
2870+
28692871
# remove subvolumes
28702872
self._fs_cmd("subvolume", "rm", self.volname, subvolume)
28712873

28722874
# verify trash dir is clean
28732875
self._wait_for_trash_empty()
28742876

2877+
def test_subvol_src_info_with_custom_group(self):
2878+
'''
2879+
Test that source info is NOT printed by "subvolume info" command for a
2880+
subvolume that is not created by cloning even when it is located in a
2881+
custom group.
2882+
'''
2883+
subvol_name = self._gen_subvol_name()
2884+
group_name = self._gen_subvol_grp_name()
2885+
2886+
self.run_ceph_cmd(f'fs subvolumegroup create {self.volname} '
2887+
f'{group_name}')
2888+
self.run_ceph_cmd(f'fs subvolume create {self.volname} {subvol_name} '
2889+
f'{group_name}')
2890+
2891+
subvol_info = self.get_ceph_cmd_stdout(
2892+
f'fs subvolume info {self.volname} {subvol_name} {group_name}')
2893+
subvol_info = json.loads(subvol_info)
2894+
2895+
self.assertNotIn('source', subvol_info)
2896+
28752897
def test_subvolume_ls(self):
28762898
# tests the 'fs subvolume ls' command
28772899

@@ -6731,6 +6753,7 @@ def test_clone_subvolume_info(self):
67316753
# remove snapshot
67326754
self._fs_cmd("subvolume", "snapshot", "rm", self.volname, subvolume, snapshot)
67336755

6756+
# actual testing begins now...
67346757
subvol_info = json.loads(self._get_subvolume_info(self.volname, clone))
67356758
if len(subvol_info) == 0:
67366759
raise RuntimeError("Expected the 'fs subvolume info' command to list metadata of subvolume")
@@ -6740,13 +6763,48 @@ def test_clone_subvolume_info(self):
67406763
if subvol_info["type"] != "clone":
67416764
raise RuntimeError("type should be set to clone")
67426765

6766+
self.assertEqual(subvol_info['source']['volume'], self.volname)
6767+
self.assertEqual(subvol_info['source']['subvolume'], subvolume)
6768+
self.assertEqual(subvol_info['source']['snapshot'], snapshot)
6769+
self.assertEqual(subvol_info['source']['group'], '_nogroup')
6770+
67436771
# remove subvolumes
67446772
self._fs_cmd("subvolume", "rm", self.volname, subvolume)
67456773
self._fs_cmd("subvolume", "rm", self.volname, clone)
67466774

67476775
# verify trash dir is clean
67486776
self._wait_for_trash_empty()
67496777

6778+
def test_clone_src_info_with_custom_group(self):
6779+
'''
6780+
Test that clone's source subvolume's group is printed properly when
6781+
"subvolume info" command is run for clone.
6782+
'''
6783+
subvol_name = self._gen_subvol_name()
6784+
group_name = self._gen_subvol_grp_name()
6785+
snap_name = self._gen_subvol_snap_name()
6786+
clone_name = self._gen_subvol_clone_name()
6787+
6788+
self.run_ceph_cmd(f'fs subvolumegroup create {self.volname} '
6789+
f'{group_name} --mode=777')
6790+
self.run_ceph_cmd(f'fs subvolume create {self.volname} {subvol_name} '
6791+
f'{group_name} --mode=777')
6792+
self._do_subvolume_io(subvol_name, group_name, number_of_files=1)
6793+
self.run_ceph_cmd(f'fs subvolume snapshot create {self.volname} '
6794+
f'{subvol_name} {snap_name} {group_name}')
6795+
self.run_ceph_cmd(f'fs subvolume snapshot clone {self.volname} '
6796+
f'{subvol_name} {snap_name} {clone_name} '
6797+
f'--group-name {group_name}')
6798+
self._wait_for_clone_to_complete(clone_name)
6799+
6800+
subvol_info = self.get_ceph_cmd_stdout(
6801+
f'fs subvolume info {self.volname} {clone_name}')
6802+
subvol_info = json.loads(subvol_info)
6803+
self.assertEqual(subvol_info['source']['volume'], self.volname)
6804+
self.assertEqual(subvol_info['source']['subvolume'], subvol_name)
6805+
self.assertEqual(subvol_info['source']['snapshot'], snap_name)
6806+
self.assertEqual(subvol_info['source']['group'], group_name)
6807+
67506808
def test_subvolume_snapshot_info_without_snapshot_clone(self):
67516809
"""
67526810
Verify subvolume snapshot info output without cloning snapshot.

0 commit comments

Comments
 (0)