]> git.proxmox.com Git - pve-ha-manager.git/blame - src/test/test_failover1.pl
PVE::HA::Config: use import flag to load appropritate resources
[pve-ha-manager.git] / src / test / test_failover1.pl
CommitLineData
4e9128c2
DM
1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
4189699e 6use lib '..';
f7cb19c6 7use PVE::HA::Config 'testenv';
4e9128c2
DM
8use PVE::HA::Manager;
9
10use Data::Dumper;
11
83e7d5b6
DM
12my $groups = PVE::HA::Config::parse_groups_config("groups.tmp", <<EOD);
13group: prefer_node1
14 nodes node1
15EOD
4e9128c2
DM
16
17
18my $online_node_usage = {
19 node1 => 0,
20 node2 => 0,
21 node3 => 0,
22};
23
24my $service_conf = {
25 node => 'node1',
26 group => 'prefer_node1',
27};
28
29my $current_node = $service_conf->{node};
30
31sub 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
45test('node1');
46test('node1', 1);
47
48delete $online_node_usage->{node1}; # poweroff
49
50test('node2');
51test('node3', 1);
52test('node2', 1);
53
54delete $online_node_usage->{node2}; # poweroff
55
56test('node3');
57test('node3', 1);
58
59$online_node_usage->{node1} = 0; # poweron
60
61test('node1');
62
63$online_node_usage->{node2} = 0; # poweron
64
65test('node1');
66test('node1', 1);