'diskspace-nodir' => q{Could not find data directory "$1"},
'file-noclose' => q{Could not close $1: $2},
'fsm-page-msg' => q{fsm page slots used: $1 of $2 ($3%)},
+ 'fsm-page-highver' => q{Cannot check on fsm_pages on servers version 8.4 or greater},
'fsm-rel-msg' => q{fsm relations used: $1 of $2 ($3%)},
+ 'fsm-rel-highver' => q{Cannot check on fsm_relations on servers version 8.4 or greater},
'invalid-option' => q{Invalid option},
'invalid-query' => q{Invalid query returned: $1},
'listener-count' => q{ listening=$1}, ## needs leading space
'diskspace-nodir' => q{N'a pas pu trouver le répertoire des données « $1 »},
'file-noclose' => q{N'a pas pu fermer $1 : $2},
'fsm-page-msg' => q{emplacements de pages utilisés par la FSM : $1 sur $2 ($3%)},
+'fsm-page-highver' => q{Cannot check on fsm_pages on servers version 8.4 or greater},
'fsm-rel-msg' => q{relations tracées par la FSM : $1 sur $2 ($3%)},
+'fsm-rel-highver' => q{Cannot check on fsm_relations on servers version 8.4 or greater},
'invalid-option' => q{Option invalide},
'invalid-query' => q{Une requête invalide a renvoyé : $1},
'listener-count' => q{ listening=$1}, ## needs leading space
txn_idle => 'ON: stats_command_string(<8.3) VERSION: 8.0',
txn_time => 'VERSION: 8.3',
wal_files => 'VERSION: 8.1',
- fsm_pages => 'VERSION: 8.2',
- fsm_relations => 'VERSION: 8.2',
+ fsm_pages => 'VERSION: 8.2 MAX: 8.3',
+ fsm_relations => 'VERSION: 8.2 MAX: 8.3',
);
if ($opt{test}) {
print msgn('testmode-start');
}
}
+ if ($limit =~ /MAX: ((\d+)\.(\d+))/) {
+ my ($rver,$rmaj,$rmin) = ($1,$2,$3);
+ for my $db (@{$info->{db}}) {
+ next unless exists $db->{ok};
+ if ($set{$db->{pname}}{server_version} !~ /((\d+)\.(\d+))/) {
+ print msgn('testmode-nover', $db->{pname});
+ next;
+ }
+ my ($sver,$smaj,$smin) = ($1,$2,$3);
+ if ($smaj > $rmaj) {
+ print msgn('testmode-norun', $ac, $db->{pname}, $rver, $sver);
+ }
+ }
+ }
+
while ($limit =~ /\bON: (\w+)(?:\(([<>=])(\d+\.\d+)\))?/g) {
my ($setting,$op,$ver) = ($1,$2||'',$3||0);
for my $db (@{$info->{db}}) {
qq{ ELSE interestingpages/16 END) AS sumrequests,\n}.
qq{ COUNT(relfilenode) AS numrels, 16 AS chunkpages FROM pg_freespacemap_relations) AS foo) AS foo2,\n}.
q{ (SELECT setting::NUMERIC AS maxx FROM pg_settings WHERE name = 'max_fsm_pages') AS foo3};
+ my $SQLNOOP = qq{SELECT 'FAIL'};
- my $info = run_command($SQL, {regex => qr[\d+] } );
+ my $info = run_command($SQL, { version => [ ">8.3 $SQLNOOP" ] } );
for $db (@{$info->{db}}) {
+ if ($db->{slurp} =~ /\s*FAIL/) {
+ add_unknown msg('fsm-page-highver');
+ return;
+ }
SLURP: while ($db->{slurp} =~ /\s*(\d*) \|\s+(\d+) \|\s+(\d*)$/gsm) {
my ($pages,$max,$percent) = ($1||0,$2,$3||0);
qq{FROM (SELECT\n}.
qq{ (SELECT COUNT(*) FROM pg_freespacemap_relations) AS cur,\n}.
qq{ (SELECT setting::NUMERIC FROM pg_settings WHERE name='max_fsm_relations') AS maxx) x\n};
+ my $SQLNOOP = qq{SELECT 'FAIL'};
- my $info = run_command($SQL, {regex => qr[\w+] } );
+ my $info = run_command($SQL, { version => [ ">8.3 $SQLNOOP" ] } );
for $db (@{$info->{db}}) {
+ if ($db->{slurp} =~ /\s*FAIL/) {
+ add_unknown msg('fsm-rel-highver');
+ return;
+ }
SLURP: while ($db->{slurp} =~ /\s*(\d+) \|\s+(\d+) \|\s+(\d+)$/gsm) {
my ($max,$cur,$percent) = ($1,$2,$3);
French translations (Guillaume Lelarge)
Make the backends search return ok if no matches due to inclusion rules,
per report by Guillaume Lelarge (Greg)
- Begin adding comprehensive unit tests (Greg)
+ Added comprehensive unit tests (Greg, Jeff Boes, Selena Decklemann)
+ Make fsm_pages and fsm_relatins handle 8.4 servers smoothly. (Greg)
Fix missing 'upd' field in show_dbstats (Andras Fabian)
Fix incorrect regex in txn_wraparound (Greg)
For txn_wraparound: consistent ordering and fix duplicates in perf output (Andras Fabian)
use strict;
use warnings;
use Data::Dumper;
-use DBI;
use Test::More tests => 7;
use lib 't','.';
use CP_Testing;
$dbh = $cp->test_database_handle();
my $S = q{Action 'fsm_pages'};
+my $label = 'POSTGRES_FSM_PAGES';
$t=qq{$S fails when called with an invalid option};
like ($cp->run('foobar=12'), qr{^\s*Usage:}, $t);
});
$dbh->commit();
+my $ver = $dbh->{pg_server_version};
+if ($ver >= 80400) {
+ SKIP: {
+ skip 'Cannot test fsm_pages completely on Postgres 8.4 or higher', 3;
+ }
+
+ $t=qq{$S gives an unknown when running against a 8.4 or higher version};
+ like ($cp->run('--warning=10%'), qr{^$label UNKNOWN.*Cannot check on fsm_pages}, $t);
+
+ exit;
+}
+
+
$t=qq{$S gives normal output for empty tables};
-like ($cp->run('--warning=10%'), qr{^POSTGRES_FSM_PAGES OK: .+fsm page slots used: 0 of \d+}, $t);
+like ($cp->run('--warning=10%'), qr{^$label OK: .+fsm page slots used: 0 of \d+}, $t);
$dbh->do("INSERT INTO $schema.pg_freespacemap_pages VALUES (1663,16389,16911,34,764)");
$dbh->do("INSERT INTO $schema.pg_freespacemap_relations VALUES (1663,16389,16911,1077,52283,52283,37176)");
$dbh->commit();
$t=qq{$S gives normal warning output};
-like ($cp->run('--warning=10%'), qr{^POSTGRES_FSM_PAGES WARNING: .+fsm page slots used: 52288 of \d+}, $t);
+like ($cp->run('--warning=10%'), qr{^$label WARNING: .+fsm page slots used: 52288 of \d+}, $t);
$t=qq{$S gives normal critical output};
-like ($cp->run('--critical=5%'), qr{^POSTGRES_FSM_PAGES CRITICAL: .+fsm page slots used: 52288 of \d+}, $t);
+like ($cp->run('--critical=5%'), qr{^$label CRITICAL: .+fsm page slots used: 52288 of \d+}, $t);
$t=qq{$S gives normal output for MRTG};
is ($cp->run('--critical=5% --output=MRTG'), qq{34\n52288\n\n\n}, $t);
use strict;
use warnings;
use Data::Dumper;
-use DBI;
use Test::More tests => 7;
use lib 't','.';
use CP_Testing;
$dbh = $cp->test_database_handle();
my $S = q{Action 'fsm_relations'};
+my $label = 'POSTGRES_FSM_RELATIONS';
$t=qq{$S fails when called with an invalid option};
like ($cp->run('foobar=12'), qr{^\s*Usage:}, $t);
});
$dbh->commit();
+my $ver = $dbh->{pg_server_version};
+if ($ver >= 80400) {
+ SKIP: {
+ skip 'Cannot test fsm_relations completely on Postgres 8.4 or higher', 3;
+ }
+
+ $t=qq{$S gives an unknown when running against a 8.4 or higher version};
+ like ($cp->run('--warning=10%'), qr{^$label UNKNOWN.*Cannot check on fsm_relations}, $t);
+
+ exit;
+}
+
$t=qq{$S gives normal output for empty tables};
-like ($cp->run('--warning=10%'), qr{^POSTGRES_FSM_RELATIONS OK: .+fsm relations used: 0 of \d+}, $t);
+like ($cp->run('--warning=10%'), qr{^$label OK: .+fsm relations used: 0 of \d+}, $t);
$dbh->do("INSERT INTO $schema.pg_freespacemap_pages VALUES (1663,16389,16911,34,764)");
my $sth = $dbh->prepare("INSERT INTO $schema.pg_freespacemap_relations VALUES (?,?,?,?,?,?,?)");
$dbh->commit();
$t=qq{$S gives normal warning output};
-like ($cp->run('--warning=10%'), qr{^POSTGRES_FSM_RELATIONS WARNING: .+fsm relations used: 999 of \d+}, $t);
+like ($cp->run('--warning=10%'), qr{^$label WARNING: .+fsm relations used: 999 of \d+}, $t);
$t=qq{$S gives normal critical output};
-like ($cp->run('--critical=5%'), qr{^POSTGRES_FSM_RELATIONS CRITICAL: .+fsm relations used: 999 of \d+}, $t);
+like ($cp->run('--critical=5%'), qr{^$label CRITICAL: .+fsm relations used: 999 of \d+}, $t);
$t=qq{$S gives normal output for MRTG};
is ($cp->run('--critical=5% --output=MRTG'), qq{100\n999\n\n\n}, $t);