]>
Commit | Line | Data |
---|---|---|
4e9128c2 DM |
1 | #!/usr/bin/perl |
2 | ||
3 | use strict; | |
4 | use warnings; | |
5 | ||
4189699e | 6 | use lib '..'; |
f7cb19c6 | 7 | use PVE::HA::Config 'testenv'; |
4e9128c2 DM |
8 | use PVE::HA::Manager; |
9 | ||
10 | use Data::Dumper; | |
11 | ||
83e7d5b6 DM |
12 | my $groups = PVE::HA::Config::parse_groups_config("groups.tmp", <<EOD); |
13 | group: prefer_node1 | |
14 | nodes node1 | |
15 | EOD | |
4e9128c2 DM |
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); |