3
## Test the "query_runtime" action
9
use Test::More tests => 17;
13
use vars qw/$dbh $result $t $host $dbname/;
15
my $testtbl = 'test_query_runtime';
16
my $testview = $testtbl . '_view';
18
my $cp = CP_Testing->new( {default_action => 'query_runtime'} );
20
$dbh = $cp->test_database_handle();
21
$dbname = $cp->get_dbname;
22
$host = $cp->get_host();
24
my $S = q{Action 'query_runtime'};
25
my $label = 'POSTGRES_QUERY_RUNTIME';
27
$cp->drop_table_if_exists($testtbl);
28
$cp->drop_view_if_exists($testview);
30
$dbh->do(qq{CREATE TABLE "$testtbl" ("a" integer)}) or die $dbh->errstr;
33
$t = qq{$S self-identifies correctly};
34
$result = $cp->run(qq{-w 0 --queryname=$testtbl});
35
like ($result, qr{^$label}, $t);
37
$t = qq{$S identifies database};
38
like ($result, qr{DB "$dbname"}, $t);
40
$t = qq{$S identifies host};
41
like ($result, qr{host:$host}, $t);
43
$t = qq{$S accepts valid -w input};
49
like ($cp->run(qq{--queryname=$testtbl -w "$_"}), qr/^$label/, $t . " ($_)");
52
$t = qq{$S rejects invalid -w input};
56
like($cp->run(qq{--queryname=$testtbl -w "$_"}), qr/^ERROR:.*?must be a valid time/, $t . " ($_)");
59
$dbh->do(qq{INSERT INTO "$testtbl" SELECT a::int FROM generate_series(1,5000) a});
62
$t = qq{$S measures simple table};
63
like ($cp->run(qq{--queryname=$testtbl -w 10}), qr{$label OK: .*? query runtime: \d+\.\d* }, $t);
66
like ($cp->run(qq{--output=mrtg --queryname=$testtbl -w 10}), qr{\d+\.\d+\n0\n\nDB: $dbname\n}, $t);
68
$t = qq{$S expires simple table};
69
like ($cp->run(qq{--queryname=$testtbl -w 0}), qr{$label WARNING: .*? query runtime: \d+\.\d* }, $t);
72
like ($cp->run(qq{--output=mrtg --queryname=$testtbl -w 0}), qr{\d+\.\d+\n0\n\nDB: $dbname\n}, $t);
74
$dbh->do(qq{CREATE VIEW $testview AS SELECT 123});
77
$t = qq{$S measures view};
78
like ($cp->run(qq{--queryname=$testview -w 0}), qr{$label WARNING: .*query runtime: \d+\.\d* }, $t);
81
like ($cp->run(qq{--output=mrtg --queryname=$testview -w 20}), qr{\d+\.\d+\n0\n\nDB: $dbname\n}, $t);
83
$t = qq{$S expires view};
84
like ($cp->run(qq{--queryname=$testview -w 0}), qr{$label WARNING: .*query runtime: \d+\.\d* }, $t);
87
like ($cp->run(qq{--output=mrtg --queryname=$testview -w 0}), qr{\d+\.\d+\n0\n\nDB: $dbname\n}, $t);