]> git.proxmox.com Git - pve-manager.git/blame - test/vzdump_guest_included_test.pl
ui: guest import: network grid: allow selecting hardware type
[pve-manager.git] / test / vzdump_guest_included_test.pl
CommitLineData
54df2114
AL
1#!/usr/bin/perl
2
54df2114
AL
3use strict;
4use warnings;
5
6use lib '..';
7
7f874148 8use Test::More tests => 10;
54df2114
AL
9use Test::MockModule;
10
11use PVE::VZDump;
12
13use Data::Dumper;
14
15my $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
52my $pools = {
53 testpool => [100, 101, 200, 201],
54};
55
56my $pve_cluster_module = Test::MockModule->new('PVE::Cluster');
57$pve_cluster_module->mock(
58 get_vmlist => sub {
59 return $vmlist;
60 }
61);
62
63my $pve_inotify = Test::MockModule->new('PVE::INotify');
64$pve_inotify->mock(
65 nodename => sub {
66 return 'node1';
67 }
68);
69
70my $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
77my $tests = [];
78my $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
189for 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
200exit(0);