]> git.proxmox.com Git - pve-manager.git/blob - test/vzdump_guest_included_test.pl
ui: guest import: implement 'map-to-sata' checkbox
[pve-manager.git] / test / vzdump_guest_included_test.pl
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use lib '..';
7
8 use Test::More tests => 10;
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
86 $addtest->('Test all guests', {
87 expected => {
88 node1 => [ 100, 101, 112, 113 ],
89 node2 => [ 200, 201, 212, 213 ],
90 },
91 param => {
92 all => 1,
93 }
94 });
95
96 $addtest->('Test all guests with node limit', {
97 expected => {
98 node2 => [ 200, 201, 212, 213 ],
99 },
100 param => {
101 all => 1,
102 node => 'node2',
103 }
104 });
105
106 $addtest->('Test exclude', {
107 expected => {
108 node1 =>[ 101, 112, 113 ],
109 node2 => [ 201, 212, 213 ],
110 },
111 param => {
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',
124 node => 'node1',
125 }
126 });
127
128 $addtest->('Test pool members', {
129 expected => {
130 node1 =>[ 100, 101 ],
131 node2 => [ 200, 201 ],
132 },
133 param => {
134 pool => 'testpool',
135 }
136 });
137
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 });
147
148 $addtest->('Test selected VMIDs', {
149 expected => {
150 node1 =>[ 100 ],
151 node2 => [ 201, 212 ],
152 },
153 param => {
154 vmid => '100, 201, 212',
155 }
156 });
157
158 $addtest->('Test selected VMIDs with node limit', {
159 expected => {
160 node1 =>[ 100 ],
161 },
162 param => {
163 vmid => '100, 201, 212',
164 node => 'node1',
165 }
166 });
167
168 $addtest->('Test selected VMIDs on other nodes', {
169 expected => {
170 },
171 param => {
172 vmid => '201, 212',
173 node => 'node1',
174 }
175 });
176
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
188
189 for my $test (@{$tests}) {
190 my $testname = $test->{name};
191 my $testdata = $test->{test};
192
193 # note($testname);
194
195 my $result = PVE::VZDump::get_included_guests($testdata->{param});
196
197 is_deeply($result, $testdata->{expected}, $testname);
198 }
199
200 exit(0);