From 3c8677f88499c6b1dc80fdd3cc7b5b1ca9ac8ef0 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fabian=20Gr=C3=BCnbichler?= Date: Wed, 24 Feb 2016 12:28:35 +0100 Subject: [PATCH] Adapt and add testcases for mp support --- .../snapshot-expected/create/lxc/103.conf | 27 +++++++++++++++ .../snapshot-expected/create/lxc/203.conf | 10 ++++++ .../snapshot-expected/delete/lxc/105.conf | 1 + .../snapshot-expected/delete/lxc/106.conf | 10 ++++++ .../snapshot-expected/delete/lxc/203.conf | 26 ++++++++++++++ .../snapshot-expected/rollback/lxc/105.conf | 29 ++++++++++++++++ .../snapshot-expected/rollback/lxc/207.conf | 29 ++++++++++++++++ .../snapshot-expected/rollback/lxc/208.conf | 30 ++++++++++++++++ src/test/snapshot-input/create/lxc/103.conf | 11 ++++++ src/test/snapshot-input/create/lxc/203.conf | 10 ++++++ src/test/snapshot-input/delete/lxc/106.conf | 25 ++++++++++++++ src/test/snapshot-input/delete/lxc/203.conf | 25 ++++++++++++++ src/test/snapshot-input/rollback/lxc/105.conf | 29 ++++++++++++++++ src/test/snapshot-input/rollback/lxc/207.conf | 29 ++++++++++++++++ src/test/snapshot-input/rollback/lxc/208.conf | 29 ++++++++++++++++ src/test/snapshot-test.pm | 34 ++++++++++++++++++- 16 files changed, 353 insertions(+), 1 deletion(-) create mode 100644 src/test/snapshot-expected/create/lxc/103.conf create mode 100644 src/test/snapshot-expected/create/lxc/203.conf create mode 100644 src/test/snapshot-expected/delete/lxc/106.conf create mode 100644 src/test/snapshot-expected/delete/lxc/203.conf create mode 100644 src/test/snapshot-expected/rollback/lxc/105.conf create mode 100644 src/test/snapshot-expected/rollback/lxc/207.conf create mode 100644 src/test/snapshot-expected/rollback/lxc/208.conf create mode 100644 src/test/snapshot-input/create/lxc/103.conf create mode 100644 src/test/snapshot-input/create/lxc/203.conf create mode 100644 src/test/snapshot-input/delete/lxc/106.conf create mode 100644 src/test/snapshot-input/delete/lxc/203.conf create mode 100644 src/test/snapshot-input/rollback/lxc/105.conf create mode 100644 src/test/snapshot-input/rollback/lxc/207.conf create mode 100644 src/test/snapshot-input/rollback/lxc/208.conf diff --git a/src/test/snapshot-expected/create/lxc/103.conf b/src/test/snapshot-expected/create/lxc/103.conf new file mode 100644 index 0000000..2396d92 --- /dev/null +++ b/src/test/snapshot-expected/create/lxc/103.conf @@ -0,0 +1,27 @@ +arch: amd64 +cpulimit: 1 +cpuunits: 1024 +hostname: test +memory: 2048 +mp0: local:snapshotable-disk-2,mp=/invalid/mp0 +mp1: local:snapshotable-disk-3,mp=/invalid/mp1 +net0: bridge=vmbr0,hwaddr=12:34:56:78:90:12,ip=dhcp,ip6=dhcp,name=eth0,type=veth +ostype: redhat +parent: test +rootfs: local:snapshotable-disk-1 +swap: 512 + +[test] +#test comment +arch: amd64 +cpulimit: 1 +cpuunits: 1024 +hostname: test +memory: 2048 +mp0: local:snapshotable-disk-2,mp=/invalid/mp0 +mp1: local:snapshotable-disk-3,mp=/invalid/mp1 +net0: bridge=vmbr0,hwaddr=12:34:56:78:90:12,ip=dhcp,ip6=dhcp,name=eth0,type=veth +ostype: redhat +rootfs: local:snapshotable-disk-1 +snaptime: 1234567890 +swap: 512 diff --git a/src/test/snapshot-expected/create/lxc/203.conf b/src/test/snapshot-expected/create/lxc/203.conf new file mode 100644 index 0000000..4546668 --- /dev/null +++ b/src/test/snapshot-expected/create/lxc/203.conf @@ -0,0 +1,10 @@ +arch: amd64 +cpulimit: 1 +cpuunits: 1024 +hostname: test +memory: 2048 +mp0: local:unsnapshotable-disk-1,mp=/invalid/mountpoint +net0: bridge=vmbr0,hwaddr=12:34:56:78:90:12,ip=dhcp,ip6=dhcp,name=eth0,type=veth +ostype: redhat +rootfs: local:snapshotable-disk-1 +swap: 512 diff --git a/src/test/snapshot-expected/delete/lxc/105.conf b/src/test/snapshot-expected/delete/lxc/105.conf index c6d04c9..b5a2837 100644 --- a/src/test/snapshot-expected/delete/lxc/105.conf +++ b/src/test/snapshot-expected/delete/lxc/105.conf @@ -7,3 +7,4 @@ net0: bridge=vmbr0,hwaddr=12:34:56:78:90:12,ip=dhcp,ip6=dhcp,name=eth0,type=veth ostype: redhat rootfs: local:snapshotable-disk-1 swap: 512 +unused0: local:unsnapshotable-disk-1 diff --git a/src/test/snapshot-expected/delete/lxc/106.conf b/src/test/snapshot-expected/delete/lxc/106.conf new file mode 100644 index 0000000..4546668 --- /dev/null +++ b/src/test/snapshot-expected/delete/lxc/106.conf @@ -0,0 +1,10 @@ +arch: amd64 +cpulimit: 1 +cpuunits: 1024 +hostname: test +memory: 2048 +mp0: local:unsnapshotable-disk-1,mp=/invalid/mountpoint +net0: bridge=vmbr0,hwaddr=12:34:56:78:90:12,ip=dhcp,ip6=dhcp,name=eth0,type=veth +ostype: redhat +rootfs: local:snapshotable-disk-1 +swap: 512 diff --git a/src/test/snapshot-expected/delete/lxc/203.conf b/src/test/snapshot-expected/delete/lxc/203.conf new file mode 100644 index 0000000..46233d5 --- /dev/null +++ b/src/test/snapshot-expected/delete/lxc/203.conf @@ -0,0 +1,26 @@ +arch: amd64 +cpulimit: 1 +cpuunits: 1024 +hostname: test +memory: 2048 +mp0: local:unsnapshotable-disk-1,mp=/invalid/mountpoint +net0: bridge=vmbr0,hwaddr=12:34:56:78:90:12,ip=dhcp,ip6=dhcp,name=eth0,type=veth +ostype: redhat +parent: test +rootfs: local:snapshotable-disk-1 +swap: 512 + +[test] +#test comment +arch: amd64 +cpulimit: 1 +cpuunits: 1024 +hostname: test +memory: 2048 +mp0: local:unsnapshotable-disk-1,mp=/invalid/mountpoint +net0: bridge=vmbr0,hwaddr=12:34:56:78:90:12,ip=dhcp,ip6=dhcp,name=eth0,type=veth +ostype: redhat +snapstate: delete +snaptime: 1234567890 +swap: 512 +unused0: local:snapshotable-disk-1 diff --git a/src/test/snapshot-expected/rollback/lxc/105.conf b/src/test/snapshot-expected/rollback/lxc/105.conf new file mode 100644 index 0000000..031f0e0 --- /dev/null +++ b/src/test/snapshot-expected/rollback/lxc/105.conf @@ -0,0 +1,29 @@ +# should be preserved +arch: amd64 +cpulimit: 2 +cpuunits: 2048 +hostname: test2 +memory: 4096 +mp0: local:snapshotable-disk-2,mp=/invalid/mp0 +mp1: local:snapshotable-disk-3,mp=/invalid/mp1 +net0: bridge=vmbr0,hwaddr=12:34:56:78:90:12,ip=dhcp,ip6=dhcp,name=eth0,type=veth +ostype: redhat +parent: test +rootfs: local:snapshotable-disk-1 +swap: 1024 +unused0: preserved:some-disk-1 + +[test] +# should be thrown away +arch: amd64 +cpulimit: 2 +cpuunits: 2048 +hostname: test2 +memory: 4096 +mp0: local:snapshotable-disk-2,mp=/invalid/mp0 +mp1: local:snapshotable-disk-3,mp=/invalid/mp1 +net0: bridge=vmbr0,hwaddr=12:34:56:78:90:12,ip=dhcp,ip6=dhcp,name=eth0,type=veth +ostype: redhat +rootfs: local:snapshotable-disk-1 +snaptime: 1234567890 +swap: 1024 diff --git a/src/test/snapshot-expected/rollback/lxc/207.conf b/src/test/snapshot-expected/rollback/lxc/207.conf new file mode 100644 index 0000000..a844523 --- /dev/null +++ b/src/test/snapshot-expected/rollback/lxc/207.conf @@ -0,0 +1,29 @@ +# should be preserved +arch: amd64 +cpulimit: 1 +cpuunits: 1024 +hostname: test +memory: 2048 +mp0: local:snapshotable-disk-2,mp=/invalid/mp0 +mp1: local:unsnapshotable-disk-1,mp=/invalid/mp1 +net0: bridge=vmbr0,hwaddr=12:34:56:78:90:12,ip=dhcp,ip6=dhcp,name=eth0,type=veth +ostype: redhat +parent: test +rootfs: local:snapshotable-disk-1 +swap: 512 +unused0: preserved:some-disk-1 + +[test] +# should be thrown away +arch: amd64 +cpulimit: 2 +cpuunits: 2048 +hostname: test2 +memory: 4096 +mp0: local:snapshotable-disk-2,mp=/invalid/mp0 +mp1: local:unsnapshotable-disk-1,mp=/invalid/mp1 +net0: bridge=vmbr0,hwaddr=12:34:56:78:90:12,ip=dhcp,ip6=dhcp,name=eth0,type=veth +ostype: redhat +rootfs: local:snapshotable-disk-1 +snaptime: 1234567890 +swap: 1024 diff --git a/src/test/snapshot-expected/rollback/lxc/208.conf b/src/test/snapshot-expected/rollback/lxc/208.conf new file mode 100644 index 0000000..a6d56fd --- /dev/null +++ b/src/test/snapshot-expected/rollback/lxc/208.conf @@ -0,0 +1,30 @@ +# should be preserved +arch: amd64 +cpulimit: 1 +cpuunits: 1024 +hostname: test +lock: rollback +memory: 2048 +mp0: local:snapshotable-disk-2,mp=/invalid/mp0 +mp1: local:unsnapshotable-disk-1,mp=/invalid/mp1 +net0: bridge=vmbr0,hwaddr=12:34:56:78:90:12,ip=dhcp,ip6=dhcp,name=eth0,type=veth +ostype: redhat +parent: test +rootfs: local:snapshotable-disk-1 +swap: 512 +unused0: preserved:some-disk-1 + +[test] +# should be thrown away +arch: amd64 +cpulimit: 2 +cpuunits: 2048 +hostname: test2 +memory: 4096 +mp0: local:snapshotable-disk-2,mp=/invalid/mp0 +mp1: local:snapshotable-disk-4,mp=/invalid/mp1 +net0: bridge=vmbr0,hwaddr=12:34:56:78:90:12,ip=dhcp,ip6=dhcp,name=eth0,type=veth +ostype: redhat +rootfs: local:snapshotable-disk-1 +snaptime: 1234567890 +swap: 1024 diff --git a/src/test/snapshot-input/create/lxc/103.conf b/src/test/snapshot-input/create/lxc/103.conf new file mode 100644 index 0000000..86590b8 --- /dev/null +++ b/src/test/snapshot-input/create/lxc/103.conf @@ -0,0 +1,11 @@ +arch: amd64 +cpulimit: 1 +cpuunits: 1024 +hostname: test +memory: 2048 +mp0: local:snapshotable-disk-2,mp=/invalid/mp0 +mp1: local:snapshotable-disk-3,mp=/invalid/mp1 +net0: bridge=vmbr0,hwaddr=12:34:56:78:90:12,ip=dhcp,ip6=dhcp,name=eth0,type=veth +ostype: redhat +rootfs: local:snapshotable-disk-1 +swap: 512 diff --git a/src/test/snapshot-input/create/lxc/203.conf b/src/test/snapshot-input/create/lxc/203.conf new file mode 100644 index 0000000..4546668 --- /dev/null +++ b/src/test/snapshot-input/create/lxc/203.conf @@ -0,0 +1,10 @@ +arch: amd64 +cpulimit: 1 +cpuunits: 1024 +hostname: test +memory: 2048 +mp0: local:unsnapshotable-disk-1,mp=/invalid/mountpoint +net0: bridge=vmbr0,hwaddr=12:34:56:78:90:12,ip=dhcp,ip6=dhcp,name=eth0,type=veth +ostype: redhat +rootfs: local:snapshotable-disk-1 +swap: 512 diff --git a/src/test/snapshot-input/delete/lxc/106.conf b/src/test/snapshot-input/delete/lxc/106.conf new file mode 100644 index 0000000..a21c535 --- /dev/null +++ b/src/test/snapshot-input/delete/lxc/106.conf @@ -0,0 +1,25 @@ +arch: amd64 +cpulimit: 1 +cpuunits: 1024 +hostname: test +memory: 2048 +mp0: local:unsnapshotable-disk-1,mp=/invalid/mountpoint +net0: bridge=vmbr0,hwaddr=12:34:56:78:90:12,ip=dhcp,ip6=dhcp,name=eth0,type=veth +ostype: redhat +parent: test +rootfs: local:snapshotable-disk-1 +swap: 512 + +[test] +#test comment +arch: amd64 +cpulimit: 1 +cpuunits: 1024 +hostname: test +memory: 2048 +mp0: local:unsnapshotable-disk-1,mp=/invalid/mountpoint +net0: bridge=vmbr0,hwaddr=12:34:56:78:90:12,ip=dhcp,ip6=dhcp,name=eth0,type=veth +ostype: redhat +rootfs: local:snapshotable-disk-1 +snaptime: 1234567890 +swap: 512 diff --git a/src/test/snapshot-input/delete/lxc/203.conf b/src/test/snapshot-input/delete/lxc/203.conf new file mode 100644 index 0000000..a21c535 --- /dev/null +++ b/src/test/snapshot-input/delete/lxc/203.conf @@ -0,0 +1,25 @@ +arch: amd64 +cpulimit: 1 +cpuunits: 1024 +hostname: test +memory: 2048 +mp0: local:unsnapshotable-disk-1,mp=/invalid/mountpoint +net0: bridge=vmbr0,hwaddr=12:34:56:78:90:12,ip=dhcp,ip6=dhcp,name=eth0,type=veth +ostype: redhat +parent: test +rootfs: local:snapshotable-disk-1 +swap: 512 + +[test] +#test comment +arch: amd64 +cpulimit: 1 +cpuunits: 1024 +hostname: test +memory: 2048 +mp0: local:unsnapshotable-disk-1,mp=/invalid/mountpoint +net0: bridge=vmbr0,hwaddr=12:34:56:78:90:12,ip=dhcp,ip6=dhcp,name=eth0,type=veth +ostype: redhat +rootfs: local:snapshotable-disk-1 +snaptime: 1234567890 +swap: 512 diff --git a/src/test/snapshot-input/rollback/lxc/105.conf b/src/test/snapshot-input/rollback/lxc/105.conf new file mode 100644 index 0000000..2a40587 --- /dev/null +++ b/src/test/snapshot-input/rollback/lxc/105.conf @@ -0,0 +1,29 @@ +# should be preserved +arch: amd64 +cpulimit: 1 +cpuunits: 1024 +hostname: test +memory: 2048 +mp0: local:snapshotable-disk-2,mp=/invalid/mp0 +mp1: local:snapshotable-disk-3,mp=/invalid/mp1 +net0: bridge=vmbr0,hwaddr=12:34:56:78:90:12,ip=dhcp,ip6=dhcp,name=eth0,type=veth +ostype: redhat +parent: test +rootfs: local:snapshotable-disk-1 +swap: 512 +unused0: preserved:some-disk-1 + +[test] +# should be thrown away +arch: amd64 +cpulimit: 2 +cpuunits: 2048 +hostname: test2 +memory: 4096 +mp0: local:snapshotable-disk-2,mp=/invalid/mp0 +mp1: local:snapshotable-disk-3,mp=/invalid/mp1 +net0: bridge=vmbr0,hwaddr=12:34:56:78:90:12,ip=dhcp,ip6=dhcp,name=eth0,type=veth +ostype: redhat +rootfs: local:snapshotable-disk-1 +snaptime: 1234567890 +swap: 1024 diff --git a/src/test/snapshot-input/rollback/lxc/207.conf b/src/test/snapshot-input/rollback/lxc/207.conf new file mode 100644 index 0000000..a844523 --- /dev/null +++ b/src/test/snapshot-input/rollback/lxc/207.conf @@ -0,0 +1,29 @@ +# should be preserved +arch: amd64 +cpulimit: 1 +cpuunits: 1024 +hostname: test +memory: 2048 +mp0: local:snapshotable-disk-2,mp=/invalid/mp0 +mp1: local:unsnapshotable-disk-1,mp=/invalid/mp1 +net0: bridge=vmbr0,hwaddr=12:34:56:78:90:12,ip=dhcp,ip6=dhcp,name=eth0,type=veth +ostype: redhat +parent: test +rootfs: local:snapshotable-disk-1 +swap: 512 +unused0: preserved:some-disk-1 + +[test] +# should be thrown away +arch: amd64 +cpulimit: 2 +cpuunits: 2048 +hostname: test2 +memory: 4096 +mp0: local:snapshotable-disk-2,mp=/invalid/mp0 +mp1: local:unsnapshotable-disk-1,mp=/invalid/mp1 +net0: bridge=vmbr0,hwaddr=12:34:56:78:90:12,ip=dhcp,ip6=dhcp,name=eth0,type=veth +ostype: redhat +rootfs: local:snapshotable-disk-1 +snaptime: 1234567890 +swap: 1024 diff --git a/src/test/snapshot-input/rollback/lxc/208.conf b/src/test/snapshot-input/rollback/lxc/208.conf new file mode 100644 index 0000000..c9a23c9 --- /dev/null +++ b/src/test/snapshot-input/rollback/lxc/208.conf @@ -0,0 +1,29 @@ +# should be preserved +arch: amd64 +cpulimit: 1 +cpuunits: 1024 +hostname: test +memory: 2048 +mp0: local:snapshotable-disk-2,mp=/invalid/mp0 +mp1: local:unsnapshotable-disk-1,mp=/invalid/mp1 +net0: bridge=vmbr0,hwaddr=12:34:56:78:90:12,ip=dhcp,ip6=dhcp,name=eth0,type=veth +ostype: redhat +parent: test +rootfs: local:snapshotable-disk-1 +swap: 512 +unused0: preserved:some-disk-1 + +[test] +# should be thrown away +arch: amd64 +cpulimit: 2 +cpuunits: 2048 +hostname: test2 +memory: 4096 +mp0: local:snapshotable-disk-2,mp=/invalid/mp0 +mp1: local:snapshotable-disk-4,mp=/invalid/mp1 +net0: bridge=vmbr0,hwaddr=12:34:56:78:90:12,ip=dhcp,ip6=dhcp,name=eth0,type=veth +ostype: redhat +rootfs: local:snapshotable-disk-1 +snaptime: 1234567890 +swap: 1024 diff --git a/src/test/snapshot-test.pm b/src/test/snapshot-test.pm index 69de521..c0504f6 100644 --- a/src/test/snapshot-test.pm +++ b/src/test/snapshot-test.pm @@ -332,9 +332,18 @@ printf("Expected error for snapshot_commit with invalid snapshot state\n"); testcase_commit("203", "test", "wrong snapshot state\n"); $vol_snapshot_possible->{"local:snapshotable-disk-1"} = 1; +$vol_snapshot_possible->{"local:snapshotable-disk-2"} = 1; +$vol_snapshot_possible->{"local:snapshotable-disk-3"} = 1; $vol_snapshot_delete_possible->{"local:snapshotable-disk-1"} = 1; $vol_snapshot_rollback_enabled->{"local:snapshotable-disk-1"} = 1; +$vol_snapshot_rollback_enabled->{"local:snapshotable-disk-2"} = 1; +$vol_snapshot_rollback_enabled->{"local:snapshotable-disk-3"} = 1; $vol_snapshot_rollback_possible->{"local:snapshotable-disk-1"} = 1; +$vol_snapshot_rollback_possible->{"local:snapshotable-disk-2"} = 1; +$vol_snapshot_rollback_possible->{"local:snapshotable-disk-3"} = 1; + +# possible, but fails +$vol_snapshot_rollback_possible->{"local:snapshotable-disk-4"} = 1; printf("\n"); printf("Setting up Mocking for PVE::Storage\n"); @@ -363,14 +372,20 @@ testcase_create("101", "test", 0, "test comment", "", { "local:snapshotable-disk printf("Successful snapshot_create with one existing snapshots\n"); testcase_create("102", "test2", 0, "test comment", "", { "local:snapshotable-disk-1" => "test2" }); +printf("Successful snapshot_create with multiple mps\n"); +testcase_create("103", "test", 0, "test comment", "", { "local:snapshotable-disk-1" => "test", "local:snapshotable-disk-2" => "test", "local:snapshotable-disk-3" => "test" }); + printf("Expected error for snapshot_create when volume snapshot is not possible\n"); testcase_create("201", "test", 0, "test comment", "volume snapshot disabled\n\n"); printf("Expected error for snapshot_create with broken lxc-freeze\n"); $freeze_possible = 0; -testcase_create("202", "test", 0, "test comment", "lxc-[un]freeze disabled\n\n", undef, { "local:snapshotable-disk-1" => "test" }); +testcase_create("202", "test", 0, "test comment", "lxc-[un]freeze disabled\n\n"); $freeze_possible = 1; +printf("Expected error for snapshot_create when mp volume snapshot is not possible\n"); +testcase_create("203", "test", 0, "test comment", "volume snapshot disabled\n\n", { "local:snapshotable-disk-1" => "test" }, { "local:snapshotable-disk-1" => "test" }); + $nodename = "delete"; printf("\n"); printf("Running delete tests\n"); @@ -391,9 +406,15 @@ testcase_delete("104", "test2", 0, "", { "local:snapshotable-disk-1" => "test2" printf("Successful snapshot_delete with broken volume_snapshot_delete and force=1\n"); testcase_delete("105", "test", 1, ""); +printf("Successful snapshot_delete with mp broken volume_snapshot_delete and force=1\n"); +testcase_delete("106", "test", 1, "", { "local:snapshotable-disk-1" => "test" }); + printf("Expected error when snapshot_delete fails with broken volume_snapshot_delete and force=0\n"); testcase_delete("201", "test", 0, "volume snapshot delete disabled\n"); +printf("Expected error when snapshot_delete fails with broken mp volume_snapshot_delete and force=0\n"); +testcase_delete("203", "test", 0, "volume snapshot delete disabled\n", { "local:snapshotable-disk-1" => "test" }); + printf("Expected error for snapshot_delete with locked config\n"); testcase_delete("202", "test", 0, "VM is locked (backup)\n"); @@ -416,6 +437,9 @@ testcase_rollback("103", "test", "", { "local:snapshotable-disk-1" => "test" }); printf("Successful snapshot_rollback to intermediate snapshot\n"); testcase_rollback("104", "test2", "", { "local:snapshotable-disk-1" => "test2" }); +printf("Successful snapshot_rollback with multiple mp\n"); +testcase_rollback("105", "test", "", { "local:snapshotable-disk-1" => "test", "local:snapshotable-disk-2" => "test", "local:snapshotable-disk-3" => "test" }); + printf("Expected error for snapshot_rollback with non-existing snapshot\n"); testcase_rollback("201", "test2", "snapshot 'test2' does not exist\n"); @@ -436,4 +460,12 @@ $kill_possible = 0; printf("Expected error for snapshot_rollback with unkillable container\n"); testcase_rollback("206", "test", "unable to rollback vm 206: vm is running\n"); +$kill_possible = 1; + +printf("Expected error for snapshot_rollback with mp rollback_is_possible failure\n"); +testcase_rollback("207", "test", "volume_rollback_is_possible failed\n"); + +printf("Expected error for snapshot_rollback with mp rollback failure (results in inconsistent state)\n"); +testcase_rollback("208", "test", "volume snapshot rollback disabled\n", { "local:snapshotable-disk-1" => "test", "local:snapshotable-disk-2" => "test" }); + done_testing(); -- 2.39.5