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
|
#!perl
## Test the "locks" action
use 5.008;
use strict;
use warnings;
use Data::Dumper;
use Test::More tests => 14;
use lib 't','.';
use CP_Testing;
use vars qw/$dbh $SQL $t/;
my $cp = CP_Testing->new( {default_action => 'locks' } );
$dbh = $cp->test_database_handle();
my $S = q{Action 'locks'};
my $label = 'POSTGRES_LOCKS';
$t=qq{$S fails when called with an invalid option};
like ($cp->run('foobar=12'), qr{Usage:}, $t);
$t=qq{$S fails when invalid database used};
like ($cp->run('--dbname=foo'), qr{database "foo" does not exist}, $t);
$t=qq{$S fails when no matching databases found};
like ($cp->run('--include=foo'), qr{No matching databases found}, $t);
$cp->drop_schema_if_exists();
$cp->create_fake_pg_table('pg_locks');
$SQL = q{SELECT oid FROM pg_database WHERE datname = 'postgres'};
my $dboid = $dbh->selectall_arrayref($SQL)->[0][0];
$SQL = 'INSERT INTO cptest.pg_locks(database,mode,granted) VALUES (?,?,?)';
my $fakelock_sth = $dbh->prepare($SQL);
$fakelock_sth->execute($dboid,'Exclusive','t');
$dbh->commit();
$t=qq{$S returns correct OK message};
like ($cp->run('--critical=100'), qr{^$label OK.*total=1 }, $t);
$t=qq{$S returns correct warning message};
like ($cp->run('--warning=1'), qr{^$label WARNING.*total locks: 1 }, $t);
$t=qq{$S returns correct critical message};
like ($cp->run('--critical=1'), qr{^$label CRITICAL.*total locks: 1 }, $t);
$t=qq{$S returns correct OK message for specific lock type check};
like ($cp->run('--critical="total=10;exclusive=3"'), qr{^$label OK.*total=1 }, $t);
$t=qq{$S returns correct OK message for specific lock type check};
like ($cp->run('--critical="total=10;foobar=3"'), qr{^$label OK.*total=1 }, $t);
$t=qq{$S returns correct warning message for specific lock type check};
like ($cp->run('--warning="total=10;exclusive=1"'), qr{^$label WARNING.*total "exclusive" locks: 1 }, $t);
$t=qq{$S returns correct critical message for specific lock type check};
like ($cp->run('--critical="total=10;exclusive=1"'), qr{^$label CRITICAL.*total "exclusive" locks: 1 }, $t);
$t=qq{$S returns correct MRTG output};
is ($cp->run('--output=MRTG'), qq{1\n0\n\nDB: postgres\n}, $t);
$t=qq{$S returns correct OK message for 'waiting' option};
like ($cp->run('--warning="waiting=1"'), qr{^$label OK.*total=1 }, $t);
$t=qq{$S returns correct warning message for 'waiting' option};
$fakelock_sth->execute($dboid,'Exclusive','f');
$dbh->commit();
like ($cp->run('--warning="waiting=1"'), qr{^$label WARNING.*total "waiting" locks: 1 }, $t);
$t=qq{$S returns correct multiple item output};
like ($cp->run('--warning="waiting=1;exclusive=2"'),
qr{^$label WARNING.*total "exclusive" locks: 2 \* total "waiting" locks: 1 }, $t);
$cp->drop_schema_if_exists();
exit;
|