]> git.proxmox.com Git - pve-ha-manager.git/blob - src/test/test_failover1.pl
always run regression tests
[pve-ha-manager.git] / src / test / test_failover1.pl
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use lib '..';
7 use PVE::HA::Manager;
8
9 use Data::Dumper;
10
11 my $groups = {
12 prefer_node1 => {
13 nodes => 'node1',
14 },
15 };
16
17
18 my $online_node_usage = {
19 node1 => 0,
20 node2 => 0,
21 node3 => 0,
22 };
23
24 my $service_conf = {
25 node => 'node1',
26 group => 'prefer_node1',
27 };
28
29 my $current_node = $service_conf->{node};
30
31 sub test {
32 my ($expected_node, $try_next) = @_;
33
34 my $node = PVE::HA::Manager::select_service_node
35 ($groups, $online_node_usage, $service_conf, $current_node, $try_next);
36
37 my (undef, undef, $line) = caller();
38 die "unexpected result: $node != ${expected_node} at line $line\n"
39 if $node ne $expected_node;
40
41 $current_node = $node;
42 }
43
44
45 test('node1');
46 test('node1', 1);
47
48 delete $online_node_usage->{node1}; # poweroff
49
50 test('node2');
51 test('node3', 1);
52 test('node2', 1);
53
54 delete $online_node_usage->{node2}; # poweroff
55
56 test('node3');
57 test('node3', 1);
58
59 $online_node_usage->{node1} = 0; # poweron
60
61 test('node1');
62
63 $online_node_usage->{node2} = 0; # poweron
64
65 test('node1');
66 test('node1', 1);