201 lines
3.2 KiB
Perl
201 lines
3.2 KiB
Perl
|
#!/usr/bin/perl
|
||
|
|
||
|
use strict;
|
||
|
use warnings;
|
||
|
|
||
|
use lib '..';
|
||
|
|
||
|
use Test::More tests => 10;
|
||
|
use Test::MockModule;
|
||
|
|
||
|
use PVE::VZDump;
|
||
|
|
||
|
use Data::Dumper;
|
||
|
|
||
|
my $vmlist = {
|
||
|
'ids' => {
|
||
|
100 => {
|
||
|
'type' => 'qemu',
|
||
|
'node' => 'node1',
|
||
|
},
|
||
|
101 => {
|
||
|
'type' => 'qemu',
|
||
|
'node' => 'node1',
|
||
|
},
|
||
|
112 => {
|
||
|
'type' => 'lxc',
|
||
|
'node' => 'node1',
|
||
|
},
|
||
|
113 => {
|
||
|
'type' => 'lxc',
|
||
|
'node' => 'node1',
|
||
|
},
|
||
|
200 => {
|
||
|
'type' => 'qemu',
|
||
|
'node' => 'node2',
|
||
|
},
|
||
|
201 => {
|
||
|
'type' => 'qemu',
|
||
|
'node' => 'node2',
|
||
|
},
|
||
|
212 => {
|
||
|
'type' => 'lxc',
|
||
|
'node' => 'node2',
|
||
|
},
|
||
|
213 => {
|
||
|
'type' => 'lxc',
|
||
|
'node' => 'node2',
|
||
|
},
|
||
|
}
|
||
|
};
|
||
|
|
||
|
my $pools = {
|
||
|
testpool => [100, 101, 200, 201],
|
||
|
};
|
||
|
|
||
|
my $pve_cluster_module = Test::MockModule->new('PVE::Cluster');
|
||
|
$pve_cluster_module->mock(
|
||
|
get_vmlist => sub {
|
||
|
return $vmlist;
|
||
|
}
|
||
|
);
|
||
|
|
||
|
my $pve_inotify = Test::MockModule->new('PVE::INotify');
|
||
|
$pve_inotify->mock(
|
||
|
nodename => sub {
|
||
|
return 'node1';
|
||
|
}
|
||
|
);
|
||
|
|
||
|
my $pve_api2tools = Test::MockModule->new('PVE::API2Tools');
|
||
|
$pve_api2tools->mock(
|
||
|
get_resource_pool_guest_members => sub {
|
||
|
return $pools->{testpool};
|
||
|
}
|
||
|
);
|
||
|
|
||
|
my $tests = [];
|
||
|
my $addtest = sub {
|
||
|
my ($name, $test) = @_;
|
||
|
push @$tests, {
|
||
|
name => $name,
|
||
|
test => $test,
|
||
|
};
|
||
|
};
|
||
|
|
||
|
$addtest->('Test all guests', {
|
||
|
expected => {
|
||
|
node1 => [ 100, 101, 112, 113 ],
|
||
|
node2 => [ 200, 201, 212, 213 ],
|
||
|
},
|
||
|
param => {
|
||
|
all => 1,
|
||
|
}
|
||
|
});
|
||
|
|
||
|
$addtest->('Test all guests with node limit', {
|
||
|
expected => {
|
||
|
node2 => [ 200, 201, 212, 213 ],
|
||
|
},
|
||
|
param => {
|
||
|
all => 1,
|
||
|
node => 'node2',
|
||
|
}
|
||
|
});
|
||
|
|
||
|
$addtest->('Test exclude', {
|
||
|
expected => {
|
||
|
node1 =>[ 101, 112, 113 ],
|
||
|
node2 => [ 201, 212, 213 ],
|
||
|
},
|
||
|
param => {
|
||
|
all => 1,
|
||
|
exclude => '100, 102, 200, 202',
|
||
|
}
|
||
|
});
|
||
|
|
||
|
$addtest->('Test exclude with node limit', {
|
||
|
expected => {
|
||
|
node1 =>[ 101, 112, 113 ],
|
||
|
},
|
||
|
param => {
|
||
|
all => 1,
|
||
|
exclude => '100, 102, 200, 202',
|
||
|
node => 'node1',
|
||
|
}
|
||
|
});
|
||
|
|
||
|
$addtest->('Test pool members', {
|
||
|
expected => {
|
||
|
node1 =>[ 100, 101 ],
|
||
|
node2 => [ 200, 201 ],
|
||
|
},
|
||
|
param => {
|
||
|
pool => 'testpool',
|
||
|
}
|
||
|
});
|
||
|
|
||
|
$addtest->('Test pool members with node limit', {
|
||
|
expected => {
|
||
|
node2 => [ 200, 201 ],
|
||
|
},
|
||
|
param => {
|
||
|
pool => 'testpool',
|
||
|
node => 'node2',
|
||
|
}
|
||
|
});
|
||
|
|
||
|
$addtest->('Test selected VMIDs', {
|
||
|
expected => {
|
||
|
node1 =>[ 100 ],
|
||
|
node2 => [ 201, 212 ],
|
||
|
},
|
||
|
param => {
|
||
|
vmid => '100, 201, 212',
|
||
|
}
|
||
|
});
|
||
|
|
||
|
$addtest->('Test selected VMIDs with node limit', {
|
||
|
expected => {
|
||
|
node1 =>[ 100 ],
|
||
|
},
|
||
|
param => {
|
||
|
vmid => '100, 201, 212',
|
||
|
node => 'node1',
|
||
|
}
|
||
|
});
|
||
|
|
||
|
$addtest->('Test selected VMIDs on other nodes', {
|
||
|
expected => {
|
||
|
},
|
||
|
param => {
|
||
|
vmid => '201, 212',
|
||
|
node => 'node1',
|
||
|
}
|
||
|
});
|
||
|
|
||
|
$addtest->('Test VMID not present in vmlist', {
|
||
|
expected => {
|
||
|
node1 => [ 100 ],
|
||
|
node2 => [ 201, 212 ],
|
||
|
'' => [ 7654 ],
|
||
|
},
|
||
|
param => {
|
||
|
vmid => '100, 201, 212, 7654',
|
||
|
}
|
||
|
});
|
||
|
|
||
|
|
||
|
for my $test (@{$tests}) {
|
||
|
my $testname = $test->{name};
|
||
|
my $testdata = $test->{test};
|
||
|
|
||
|
# note($testname);
|
||
|
|
||
|
my $result = PVE::VZDump::get_included_guests($testdata->{param});
|
||
|
|
||
|
is_deeply($result, $testdata->{expected}, $testname);
|
||
|
}
|
||
|
|
||
|
exit(0);
|