diff options
author | Greg Sabino Mullane | 2012-01-17 17:52:43 +0000 |
---|---|---|
committer | Greg Sabino Mullane | 2012-01-17 17:52:43 +0000 |
commit | 1ccad8f46ed601b7f2d0fbc37914e7fb0c64479d (patch) | |
tree | 52cc49137f7c6150167f59c3ea5c97048f0ad929 | |
parent | 6a2813274f94662bc9654fe5cb74b4f0f9d85f01 (diff) |
Tweaks for better "fakeschema" in the tests.
-rw-r--r-- | t/02_backends.t | 30 | ||||
-rw-r--r-- | t/CP_Testing.pm | 31 |
2 files changed, 42 insertions, 19 deletions
diff --git a/t/02_backends.t b/t/02_backends.t index 4dd03b67f..d8e6c50ce 100644 --- a/t/02_backends.t +++ b/t/02_backends.t @@ -6,7 +6,7 @@ use 5.006; use strict; use warnings; use Data::Dumper; -use Test::More tests => 53; +use Test::More tests => 52; use lib 't','.'; use CP_Testing; @@ -16,6 +16,9 @@ my $cp = CP_Testing->new( {default_action => 'backends'} ); $dbh = $cp->test_database_handle(); +## Remove any old fake schema +$cp->drop_schema_if_exists(); + my $S = q{Action 'backends'}; my $label = 'POSTGRES_BACKENDS'; @@ -129,18 +132,13 @@ $num = $goodver ? 7 : 8; like ($cp->run("-c -$num"), qr{^$label CRITICAL}, $t); $t=qq{$S works when no items caught by pg_stat_activity}; - -$cp->drop_schema_if_exists(); -$cp->create_fake_pg_table('pg_stat_activity'); -like ($cp->run(), qr{^$label OK: .+No connections}, $t); - -$t=qq{$S returns correct MRTG output when no rows}; -is ($cp->run('--output=MRTG'), qq{0\n0\n\nDB=postgres Max connections=10\n}, $t); +$cp->create_fake_pg_table('pg_stat_activity','', ' WHERE procpid = pg_backend_pid()'); +like ($cp->run(), qr{^$label OK: .+1 of }, $t); $t=qq{$S fails as expected when max_connections cannot be determined}; $cp->create_fake_pg_table('pg_settings'); like ($cp->run(), qr{^$label UNKNOWN: .+max_connections}, $t); -$cp->drop_schema_if_exists(); +$cp->remove_fake_pg_table('pg_settings'); $t=qq{$S works when include forces no matches}; like ($cp->run('--include=foobar'), qr{^$label OK: .+No connections}, $t); @@ -150,10 +148,10 @@ SKIP: { $goodver or skip 'Cannot test backends completely with older versions of Postgres', 2; $t=qq{$S returns correct MRTG output when rows found}; - is ($cp->run('--output=MRTG'), qq{3\n0\n\nDB=postgres Max connections=10\n}, $t); + like ($cp->run('--output=MRTG'), qr{^1\n0\n\nDB=postgres}, $t); $t=qq{$S works when include has valid database}; - like ($cp->run('--include=postgres'), qr{^$label OK: .+3 of 10}, $t); + like ($cp->run('--include=postgres'), qr{^$label OK: .+1 of 10}, $t); } $t=qq{$S works when exclude forces no matches}; @@ -164,16 +162,16 @@ SKIP: { $goodver or skip 'Cannot test backends completely with older versions of Postgres', 4; $t=qq{$S works when exclude excludes nothing}; - like ($cp->run('--exclude=foobar'), qr{^$label OK: .+3 of 10}, $t); + like ($cp->run('--exclude=foobar'), qr{^$label OK: .+1 of 10}, $t); $t=qq{$S works when include and exclude make a match}; - like ($cp->run('--exclude=postgres --include=postgres'), qr{^$label OK: .+3 of 10}, $t); + like ($cp->run('--exclude=postgres --include=postgres'), qr{^$label OK: .+1 of 10}, $t); $t=qq{$S works when include and exclude make a match}; - like ($cp->run('--include=postgres --exclude=postgres'), qr{^$label OK: .+3 of 10}, $t); + like ($cp->run('--include=postgres --exclude=postgres'), qr{^$label OK: .+1 of 10}, $t); $t=qq{$S returned correct performance data with include}; - like ($cp->run('--include=postgres'), qr{ \| time=\d\.\d\ds postgres=3;9;9;0;10}, $t); + like ($cp->run('--include=postgres'), qr{ \| time=\d\.\d\ds postgres=1}, $t); } my %dbh; @@ -184,6 +182,4 @@ for my $num (1..8) { $t=qq{$S returns critical when too many clients to even connect}; like ($cp->run('-w -10'), qr{^$label CRITICAL: .+too many connections}, $t); -$cp->drop_schema_if_exists(); - exit; diff --git a/t/CP_Testing.pm b/t/CP_Testing.pm index 530271ce5..a72a957cb 100644 --- a/t/CP_Testing.pm +++ b/t/CP_Testing.pm @@ -508,6 +508,7 @@ sub create_fake_pg_table { my $self = shift; my $name = shift || die; my $args = shift || ''; + my $where = shift || ''; my $dbh = $self->{dbh} || die; my $dbuser = $self->{testuser} || die; if ($self->schema_exists($dbh,$fakeschema)) { @@ -523,7 +524,10 @@ sub create_fake_pg_table { $funcargs = qq{($funcargs)}; } - $dbh->do("CREATE TABLE $fakeschema.$name AS SELECT * FROM $name$funcargs LIMIT 0"); + my $SQL = "CREATE TABLE $fakeschema.$name AS SELECT * FROM $name$funcargs$where "; + $SQL .= $where ? 'LIMIT 1' : 'LIMIT 0'; + + $dbh->do($SQL); if ($args) { $self->drop_function_if_exists($fakeschema,$name,$args); @@ -537,6 +541,28 @@ sub create_fake_pg_table { } ## end of create_fake_pg_table +sub remove_fake_pg_table { + + my $self = shift; + my $name = shift || die; + my $dbh = $self->{dbh} || die; + my $dbuser = $self->{testuser} || die; + if (! $self->schema_exists($dbh,$fakeschema)) { + ## No schema means no table! + return; + } + + my $SQL = "DROP TABLE $fakeschema.$name"; + + $dbh->do($SQL); + + $dbh->commit(); + + return; + +} ## end of remove_fake_pg_table + + sub get_fake_schema { return $fakeschema; } @@ -625,7 +651,8 @@ sub drop_table_if_exists { my $count = $dbh->selectall_arrayref($SQL)->[0][0]; if ($count) { $dbh->{Warn} = 0; - $dbh->do("DROP TABLE $name CASCADE"); + my $fullname = $schema ? "$schema.$name" : $name; + $dbh->do("DROP TABLE $fullname CASCADE"); $dbh->{Warn} = 1; $dbh->commit(); } |