]> git.proxmox.com Git - pve-manager.git/blame - test/vzdump_guest_included_test.pl
vzdump: test: adapt and add more tests that are possible now
[pve-manager.git] / test / vzdump_guest_included_test.pl
CommitLineData
54df2114
AL
1#!/usr/bin/perl
2
3# Some of the tests can only be applied once the whole include logic is moved
4# into one single method. Right now parts of it, (all, exclude) are in the
5# PVE::VZDump->exec_backup() method.
6
7use strict;
8use warnings;
9
10use lib '..';
11
5d807cf5 12use Test::More tests => 9;
54df2114
AL
13use Test::MockModule;
14
15use PVE::VZDump;
16
17use Data::Dumper;
18
19my $vmlist = {
20 'ids' => {
21 100 => {
22 'type' => 'qemu',
23 'node' => 'node1',
24 },
25 101 => {
26 'type' => 'qemu',
27 'node' => 'node1',
28 },
29 112 => {
30 'type' => 'lxc',
31 'node' => 'node1',
32 },
33 113 => {
34 'type' => 'lxc',
35 'node' => 'node1',
36 },
37 200 => {
38 'type' => 'qemu',
39 'node' => 'node2',
40 },
41 201 => {
42 'type' => 'qemu',
43 'node' => 'node2',
44 },
45 212 => {
46 'type' => 'lxc',
47 'node' => 'node2',
48 },
49 213 => {
50 'type' => 'lxc',
51 'node' => 'node2',
52 },
53 }
54};
55
56my $pools = {
57 testpool => [100, 101, 200, 201],
58};
59
60my $pve_cluster_module = Test::MockModule->new('PVE::Cluster');
61$pve_cluster_module->mock(
62 get_vmlist => sub {
63 return $vmlist;
64 }
65);
66
67my $pve_inotify = Test::MockModule->new('PVE::INotify');
68$pve_inotify->mock(
69 nodename => sub {
70 return 'node1';
71 }
72);
73
74my $pve_api2tools = Test::MockModule->new('PVE::API2Tools');
75$pve_api2tools->mock(
76 get_resource_pool_guest_members => sub {
77 return $pools->{testpool};
78 }
79);
80
81my $tests = [];
82my $addtest = sub {
83 my ($name, $test) = @_;
84 push @$tests, {
85 name => $name,
86 test => $test,
87 };
88};
89
5d807cf5
AL
90$addtest->('Test all guests', {
91 expected => {
92 node1 => [ 100, 101, 112, 113 ],
93 node2 => [ 200, 201, 212, 213 ],
94 },
54df2114 95 param => {
5d807cf5 96 all => 1,
54df2114
AL
97 }
98});
99
5d807cf5
AL
100$addtest->('Test all guests with node limit', {
101 expected => {
102 node2 => [ 200, 201, 212, 213 ],
103 },
54df2114 104 param => {
5d807cf5 105 all => 1,
54df2114
AL
106 node => 'node2',
107 }
108});
109
5d807cf5
AL
110$addtest->('Test exclude', {
111 expected => {
112 node1 =>[ 101, 112, 113 ],
113 node2 => [ 201, 212, 213 ],
114 },
54df2114 115 param => {
5d807cf5
AL
116 all => 1,
117 exclude => '100, 102, 200, 202',
118 }
119});
120
121$addtest->('Test exclude with node limit', {
122 expected => {
123 node1 =>[ 101, 112, 113 ],
124 },
125 param => {
126 all => 1,
127 exclude => '100, 102, 200, 202',
54df2114
AL
128 node => 'node1',
129 }
130});
131
5d807cf5
AL
132$addtest->('Test pool members', {
133 expected => {
134 node1 =>[ 100, 101 ],
135 node2 => [ 200, 201 ],
136 },
54df2114 137 param => {
5d807cf5 138 pool => 'testpool',
54df2114
AL
139 }
140});
141
5d807cf5
AL
142$addtest->('Test pool members with node limit', {
143 expected => {
144 node2 => [ 200, 201 ],
145 },
146 param => {
147 pool => 'testpool',
148 node => 'node2',
149 }
150});
54df2114 151
5d807cf5
AL
152$addtest->('Test selected VMIDs', {
153 expected => {
154 node1 =>[ 100 ],
155 node2 => [ 201, 212 ],
156 },
54df2114
AL
157 param => {
158 vmid => '100, 201, 212',
54df2114
AL
159 }
160});
161
5d807cf5
AL
162$addtest->('Test selected VMIDs with node limit', {
163 expected => {
164 node1 =>[ 100 ],
165 },
54df2114
AL
166 param => {
167 vmid => '100, 201, 212',
168 node => 'node1',
169 }
170});
171
172$addtest->('Test selected VMIDs on other nodes', {
5d807cf5
AL
173 expected => {
174 },
54df2114
AL
175 param => {
176 vmid => '201, 212',
177 node => 'node1',
178 }
179});
180
181
182for my $test (@{$tests}) {
183 my $testname = $test->{name};
184 my $testdata = $test->{test};
185
5d807cf5 186 # note($testname);
54df2114 187
5d807cf5 188 my $result = PVE::VZDump::get_included_guests($testdata->{param});
54df2114 189
5d807cf5 190 is_deeply($result, $testdata->{expected}, $testname);
54df2114
AL
191}
192
193exit(0);