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