/usr/share/doc/check-mk-doc/livestatus/api/perl/t/31-Monitoring-Livestatus-MULTI-live-test.t is in check-mk-doc 1.1.12-1ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | #!/usr/bin/env perl
#########################
use strict;
use Test::More;
use Data::Dumper;
if ( ! defined $ENV{TEST_SOCKET} or !defined $ENV{TEST_SERVER} ) {
my $msg = 'Author test. Set $ENV{TEST_SOCKET} and $ENV{TEST_SERVER} to run';
plan( skip_all => $msg );
} else {
plan( tests => 22 );
}
use_ok('Monitoring::Livestatus::MULTI');
#########################
# create new test object
my $objects_to_test = {
'multi_one' => Monitoring::Livestatus::MULTI->new( peer => [ $ENV{TEST_SERVER} ], warnings => 0 ),
'multi_two' => Monitoring::Livestatus::MULTI->new( peer => [ $ENV{TEST_SERVER}, $ENV{TEST_SOCKET} ], warnings => 0 ),
'multi_three' => Monitoring::Livestatus::MULTI->new(
'verbose' => '0',
'warnings' => '0',
'timeout' => '10',
'peer' => [
{ 'name' => 'Mon 1', 'peer' => $ENV{TEST_SERVER} },
{ 'name' => 'Mon 2', 'peer' => $ENV{TEST_SOCKET} },
],
'keepalive' => '1'
),
};
# dont die on errors
#$ml->errors_are_fatal(0);
for my $key (keys %{$objects_to_test}) {
my $ml = $objects_to_test->{$key};
isa_ok($ml, 'Monitoring::Livestatus::MULTI') or BAIL_OUT("no need to continue without a proper Monitoring::Livestatus::MULTI object");
#########################
# DATA INTEGRITY
#########################
my $statement = "GET hosts\nColumns: state name alias\nLimit: 1";
my $data1 = $ml->selectall_arrayref($statement, {Slice => 1});
my $data2 = $ml->selectall_arrayref($statement, {Slice => 1, AddPeer => 1});
for my $data (@{$data2}) {
delete $data->{'peer_name'};
delete $data->{'peer_addr'};
delete $data->{'peer_key'};
}
is_deeply($data1, $data2, "data integrity with peers added and Column");
$statement = "GET hosts\nLimit: 1";
$data1 = $ml->selectall_arrayref($statement, {Slice => 1, Deepcopy => 1});
$data2 = $ml->selectall_arrayref($statement, {Slice => 1, AddPeer => 1, Deepcopy => 1});
for my $data (@{$data2}) {
delete $data->{'peer_name'};
delete $data->{'peer_addr'};
delete $data->{'peer_key'};
}
is_deeply($data1, $data2, "data integrity with peers added without Columns");
#########################
# try to change result set to scalar
for my $data (@{$data1}) { $data->{'peer_name'} = 1; }
for my $data (@{$data2}) { $data->{'peer_name'} = 1; }
is_deeply($data1, $data2, "data integrity with changed result set");
#########################
# try to change result set to hash
for my $data (@{$data1}) { $data->{'peer_name'} = {}; }
for my $data (@{$data2}) { $data->{'peer_name'} = {}; }
is_deeply($data1, $data2, "data integrity with changed result set");
#########################
# BACKENDS
#########################
my @backends = $ml->peer_key();
$data1 = $ml->selectall_arrayref($statement, {Slice => 1});
$data2 = $ml->selectall_arrayref($statement, {Slice => 1, Backend => \@backends });
is_deeply($data1, $data2, "data integrity with backends");
#########################
# BUGS
#########################
#########################
# Bug: Can't use string ("flap") as an ARRAY ref while "strict refs" in use at Monitoring/Livestatus/MULTI.pm line 206.
$statement = "GET servicegroups\nColumns: name alias\nFilter: name = flap\nLimit: 1";
$data1 = $ml->selectrow_array($statement);
isnt($data1, undef, "bug check: Can't use string (\"group\")...");
}
|