Skip to content

Commit 2415229

Browse files
committed
zfs-vol: vm-snapshot testing
Signed-off-by: Yann Dirson <[email protected]>
1 parent 4c7c21e commit 2415229

File tree

1 file changed

+68
-0
lines changed

1 file changed

+68
-0
lines changed

Diff for: tests/storage/zfsvol/test_zfsvol_sr.py

+68
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,74 @@ def test_snapshot(self, vm_on_zfsvol_sr):
6868
finally:
6969
vm.shutdown(verify=True)
7070

71+
@pytest.mark.small_vm
72+
@pytest.mark.big_vm
73+
def test_snapshots_revert(self, vm_on_zfsvol_sr):
74+
vm = vm_on_zfsvol_sr
75+
vm.start()
76+
vm.wait_for_os_booted()
77+
vm.wait_for_vm_running_and_ssh_up()
78+
79+
snap1, snap2, snap3 = None, None, None
80+
snap1 = vm.snapshot()
81+
vm.ssh_touch_file(f"/{snap1.uuid}")
82+
snap2 = vm.snapshot()
83+
vm.ssh_touch_file(f"/{snap2.uuid}")
84+
snap3 = vm.snapshot()
85+
86+
# we are in "snap3" state, check all 6 "from A to B"
87+
# combinations
88+
snap1.revert()
89+
vm.start()
90+
vm.wait_for_vm_running_and_ssh_up()
91+
logging.info("Check files state")
92+
vm.ssh([f"test ! -f /{snap1.uuid}"])
93+
vm.ssh([f"test ! -f /{snap2.uuid}"])
94+
snap2.revert()
95+
vm.start()
96+
vm.wait_for_vm_running_and_ssh_up()
97+
logging.info("Check files state")
98+
vm.ssh([f"test -f /{snap1.uuid}"])
99+
vm.ssh([f"test ! -f /{snap2.uuid}"])
100+
snap3.revert()
101+
vm.start()
102+
vm.wait_for_vm_running_and_ssh_up()
103+
logging.info("Check files state")
104+
vm.ssh([f"test -f /{snap1.uuid}"])
105+
vm.ssh([f"test -f /{snap2.uuid}"])
106+
snap2.revert()
107+
vm.start()
108+
vm.wait_for_vm_running_and_ssh_up()
109+
logging.info("Check files state")
110+
vm.ssh([f"test -f /{snap1.uuid}"])
111+
vm.ssh([f"test ! -f /{snap2.uuid}"])
112+
snap1.revert()
113+
vm.start()
114+
vm.wait_for_vm_running_and_ssh_up()
115+
logging.info("Check files state")
116+
vm.ssh([f"test ! -f /{snap1.uuid}"])
117+
vm.ssh([f"test ! -f /{snap2.uuid}"])
118+
snap3.revert()
119+
vm.start()
120+
vm.wait_for_vm_running_and_ssh_up()
121+
logging.info("Check files state")
122+
vm.ssh([f"test -f /{snap1.uuid}"])
123+
vm.ssh([f"test -f /{snap2.uuid}"])
124+
125+
# FIXME: we don't support snapshot destruction yet
126+
# snap1.destroy(verify=True)
127+
# snap2.destroy(verify=True)
128+
# snap3.destroy(verify=True)
129+
130+
def get_messages(self, name):
131+
args = {
132+
'obj-uuid': self.uuid,
133+
'name': name,
134+
'params': 'uuid',
135+
}
136+
137+
lines = self.host.xe('message-list', args).splitlines()
138+
71139
# *** tests with reboots (longer tests).
72140

73141
@pytest.mark.reboot

0 commit comments

Comments
 (0)