#!perl ## Test the "autovac_freeze" action use 5.006; use strict; use warnings; use Data::Dumper; use Test::More tests => 8; use lib 't','.'; use CP_Testing; use vars qw/$dbh $result $t $host $dbname/; my $cp = CP_Testing->new( {default_action => 'autovac_freeze'} ); $dbh = $cp->test_database_handle(); $dbh->{AutoCommit} = 1; $dbname = $cp->get_dbname; $host = $cp->get_host(); my $ver = $dbh->{pg_server_version}; my $S = q{Action 'autovac_freeze'}; my $label = 'POSTGRES_AUTOVAC_FREEZE'; SKIP: { $ver < 80200 and skip 'Cannot test autovac_freeze on old Postgres versions', 8; $result = $cp->run(q{-w 0%}); ## As this is the first alphabetic test, let's make an emergency bailout if ## the server is not reachable at all! if ($result =~ /ERROR.+cptesting_socket/s) { BAIL_OUT 'Could not connect to the testing database server!'; } $t = qq{$S self-identifies correctly}; like ($result, qr{^$label}, $t); $t = qq{$S identifies host}; like ($result, qr{host:$host}, $t); $t=qq{$S fails when called with an invalid option}; like ($cp->run('foobar=12'), qr{Usage:}, $t); $t=qq{$S fails when called with an invalid --warning option}; like ($cp->run('--warning=40'), qr{ERROR:.+must be a percentage}, $t); $t=qq{$S fails when called with an invalid --critical option}; like ($cp->run('--critical=50'), qr{ERROR:.+must be a percentage}, $t); $t=qq{$S flags when database is over freeze threshold}; like ($cp->run('-w 0%'), qr{$label WARNING:.*ardala=\d+%.*?beedeebeedee=\d+%.*?postgres=\d+%.*?template1=\d+%}, $t); $t=qq{$S flags when database is under freeze threshold}; like ($cp->run('-w 99%'), qr{$label OK:.*ardala=\d+%.*?beedeebeedee=\d+%.*?postgres=\d+%.*?template1=\d+%}, $t); $t=qq{$S produces MRTG output}; like ($cp->run('--output=mrtg -w 99%'), qr{0\n\d+\n\nardala \| beedeebeedee}, $t); } exit;