]>
Commit | Line | Data |
---|---|---|
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 | ||
7 | use strict; | |
8 | use warnings; | |
9 | ||
10 | use lib '..'; | |
11 | ||
5d807cf5 | 12 | use Test::More tests => 9; |
54df2114 AL |
13 | use Test::MockModule; |
14 | ||
15 | use PVE::VZDump; | |
16 | ||
17 | use Data::Dumper; | |
18 | ||
19 | my $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 | ||
56 | my $pools = { | |
57 | testpool => [100, 101, 200, 201], | |
58 | }; | |
59 | ||
60 | my $pve_cluster_module = Test::MockModule->new('PVE::Cluster'); | |
61 | $pve_cluster_module->mock( | |
62 | get_vmlist => sub { | |
63 | return $vmlist; | |
64 | } | |
65 | ); | |
66 | ||
67 | my $pve_inotify = Test::MockModule->new('PVE::INotify'); | |
68 | $pve_inotify->mock( | |
69 | nodename => sub { | |
70 | return 'node1'; | |
71 | } | |
72 | ); | |
73 | ||
74 | my $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 | ||
81 | my $tests = []; | |
82 | my $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 | ||
182 | for 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 | ||
193 | exit(0); |