From 50acc91758beeccecac90992588c08223b3633e7 Mon Sep 17 00:00:00 2001 From: Yann Dirson Date: Tue, 19 Mar 2024 14:09:32 +0100 Subject: [PATCH] zfs-ng: vm-snapshot testing --- tests/storage/zfs_ng/test_zfs_sr.py | 67 +++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) diff --git a/tests/storage/zfs_ng/test_zfs_sr.py b/tests/storage/zfs_ng/test_zfs_sr.py index f61af29c1..45fe5dc71 100755 --- a/tests/storage/zfs_ng/test_zfs_sr.py +++ b/tests/storage/zfs_ng/test_zfs_sr.py @@ -64,6 +64,73 @@ def test_snapshot(self, vm_on_zfs_sr): vm.test_snapshot_on_running_vm() vm.shutdown(verify=True) + @pytest.mark.small_vm + @pytest.mark.big_vm + def test_snapshots(self, vm_on_zfs_sr): + vm = vm_on_zfs_sr + vm.start() + vm.wait_for_os_booted() + vm.wait_for_vm_running_and_ssh_up() + + snap1, snap2, snap3 = None, None, None + snap1 = vm.snapshot() + vm.ssh_touch_file(f"/{snap1.uuid}") + snap2 = vm.snapshot() + vm.ssh_touch_file(f"/{snap2.uuid}") + snap3 = vm.snapshot() + + # we are in "snap3" state, check all 6 "from A to B" + # combinations + snap1.revert() + vm.start() + vm.wait_for_vm_running_and_ssh_up() + logging.info("Check files state") + vm.ssh([f"test ! -f /{snap1.uuid}"]) + vm.ssh([f"test ! -f /{snap2.uuid}"]) + snap2.revert() + vm.start() + vm.wait_for_vm_running_and_ssh_up() + logging.info("Check files state") + vm.ssh([f"test -f /{snap1.uuid}"]) + vm.ssh([f"test ! -f /{snap2.uuid}"]) + snap3.revert() + vm.start() + vm.wait_for_vm_running_and_ssh_up() + logging.info("Check files state") + vm.ssh([f"test -f /{snap1.uuid}"]) + vm.ssh([f"test -f /{snap2.uuid}"]) + snap2.revert() + vm.start() + vm.wait_for_vm_running_and_ssh_up() + logging.info("Check files state") + vm.ssh([f"test -f /{snap1.uuid}"]) + vm.ssh([f"test ! -f /{snap2.uuid}"]) + snap1.revert() + vm.start() + vm.wait_for_vm_running_and_ssh_up() + logging.info("Check files state") + vm.ssh([f"test ! -f /{snap1.uuid}"]) + vm.ssh([f"test ! -f /{snap2.uuid}"]) + snap3.revert() + vm.start() + vm.wait_for_vm_running_and_ssh_up() + logging.info("Check files state") + vm.ssh([f"test -f /{snap1.uuid}"]) + vm.ssh([f"test -f /{snap2.uuid}"]) + + #snap1.destroy(verify=True) + #snap2.destroy(verify=True) + #snap3.destroy(verify=True) + + def get_messages(self, name): + args = { + 'obj-uuid': self.uuid, + 'name': name, + 'params': 'uuid', + } + + lines = self.host.xe('message-list', args).splitlines() + # *** tests with reboots (longer tests). @pytest.mark.reboot