]> git.proxmox.com Git - pve-cluster.git/blobdiff - data/test/corosync_parser_test.pl
corosync: add verify_conf
[pve-cluster.git] / data / test / corosync_parser_test.pl
index 18ee4f7b2630d8e7631878d0f02802449b6f982f..6999d3abb64965a406d27c22b82ab62f5f4bd945 100755 (executable)
@@ -5,10 +5,35 @@ use lib '..';
 use strict;
 use warnings;
 
+use Test::MockModule;
 use Test::More;
 
 use PVE::Corosync;
 
+my $known_hosts = {
+    "prox1" => "127.0.1.1",
+    "prox1-ring1" => "127.0.2.1",
+    "prox2" => "127.0.1.2",
+    "prox2-ring1" => "127.0.2.2",
+    "prox3" => "127.0.1.3",
+    "prox3-ring1" => "127.0.2.3",
+    "prox4" => "127.0.1.4",
+    "prox4-ring1" => "127.0.2.4",
+};
+
+sub mocked_resolve {
+    my ($hostname) = @_;
+
+    foreach my $host (keys %$known_hosts) {
+       return $known_hosts->{$host} if $hostname eq $host;
+    }
+
+    die "got unknown hostname '$hostname' during mocked resolve_hostname_like_corosync";
+}
+
+my $mocked_corosync_module = new Test::MockModule('PVE::Corosync');
+$mocked_corosync_module->mock('resolve_hostname_like_corosync', \&mocked_resolve);
+
 sub parser_self_check {
     my $cfg_fn = shift;
 
@@ -30,6 +55,10 @@ sub parser_self_check {
        $config2 = PVE::Corosync::parse_conf(undef, $raw2);
     }; warn $@ if $@;
 
+    # test verify_config
+    my ($err, $warn) = PVE::Corosync::verify_conf($config1);
+    die "verify_conf failed: " . join(" ++ ", @$err) if scalar(@$err);
+
     # do not care for whitespace differences
     delete $config1->{digest};
     delete $config2->{digest};