summaryrefslogtreecommitdiff
path: root/t/CP_Testing.pm
diff options
context:
space:
mode:
authorGreg Sabino Mullane2009-04-30 13:09:52 +0000
committerGreg Sabino Mullane2009-04-30 13:09:52 +0000
commitf19b393669c46b49783a86412c2c0c5bd22c5863 (patch)
treeff8427024037d312bbfe6da53ad6063190eba588 /t/CP_Testing.pm
parent668b60defbc7e71725a6a51b64b10d475e3f7a92 (diff)
More support for older versions of Postgres, other cleanups.
Diffstat (limited to 't/CP_Testing.pm')
-rw-r--r--t/CP_Testing.pm59
1 files changed, 43 insertions, 16 deletions
diff --git a/t/CP_Testing.pm b/t/CP_Testing.pm
index c7fac7525..c23e9b0ff 100644
--- a/t/CP_Testing.pm
+++ b/t/CP_Testing.pm
@@ -2,6 +2,7 @@ package CP_Testing;
## Common methods used by the other tests for check_postgres.pl
+use 5.006;
use strict;
use warnings;
use Data::Dumper;
@@ -88,6 +89,7 @@ sub test_database_handle {
print $cfh qq{max_connections = 10\n};
print $cfh qq{max_prepared_transactions = 5\n};
print $cfh qq{autovacuum = off\n};
+ print $cfh qq{stats_command_string = on\n};
print $cfh "\n";
close $cfh or die qq{Could not close "$cfile": $!\n};
@@ -141,7 +143,7 @@ sub test_database_handle {
SCAN: {
seek $logfh, 0, 0;
while (<$logfh>) {
- if (/ready to accept connections/) {
+ if (/ready to accept connections/ or /database system is ready/) {
last SCAN;
}
}
@@ -181,17 +183,18 @@ sub test_database_handle {
$dbh->{AutoCommit} = 1;
$dbh->{RaiseError} = 0;
$dbh->do("CREATE USER $dbuser SUPERUSER");
- $dbh->do("CREATE USER sixpack NOSUPERUSER CREATEDB");
- $dbh->do("CREATE USER readonly NOSUPERUSER NOCREATEDB");
- $dbh->do("ALTER USER readonly SET default_transaction_read_only = 1");
- $dbh->do("CREATE DATABASE beedeebeedee");
- $dbh->do("CREATE DATABASE ardala");
- $dbh->do("CREATE LANGUAGE plpgsql");
+ $dbh->do('CREATE USER sixpack NOSUPERUSER CREATEDB');
+ $dbh->do('CREATE USER readonly NOSUPERUSER NOCREATEDB');
+ $dbh->do('ALTER USER readonly SET default_transaction_read_only = 1');
+ $dbh->do('CREATE DATABASE beedeebeedee');
+ $dbh->do('CREATE DATABASE ardala');
+ $dbh->do('CREATE LANGUAGE plpgsql');
+ $dbh->do('CREATE LANGUAGE plperlu');
$dbh->{AutoCommit} = 0;
$dbh->{RaiseError} = 1;
if (! exists $self->{keep_old_schema}) {
- my $SQL = "SELECT count(*) FROM pg_namespace WHERE nspname = " . $dbh->quote($fakeschema);
+ my $SQL = 'SELECT count(*) FROM pg_namespace WHERE nspname = ' . $dbh->quote($fakeschema);
my $count = $dbh->selectall_arrayref($SQL)->[0][0];
if ($count) {
local $dbh->{Warn} = 0;
@@ -206,7 +209,7 @@ sub test_database_handle {
eval { $tmp_dbh = DBI->connect($tmp_dsn, @superdsn[1..$#superdsn]) };
if ($@) {
local($dbh->{AutoCommit}) = 1;
- $dbh->do("CREATE DATABASE " . $arg->{dbname});
+ $dbh->do('CREATE DATABASE ' . $arg->{dbname});
eval { $tmp_dbh = DBI->connect($tmp_dsn, @superdsn[1..$#superdsn]) };
die $@ if $@;
}
@@ -221,8 +224,8 @@ sub test_database_handle {
## Sanity check
$dbh->do("ALTER USER $dbuser SET search_path = public");
- $dbh->do("SET search_path = public");
- $dbh->do("COMMIT");
+ $dbh->do('SET search_path = public');
+ $dbh->do('COMMIT');
return $dbh;
@@ -246,9 +249,9 @@ sub run {
my $double = $action =~ s/DB2// ? 1 : 0;
- my $dbhost = $self->{dbhost} || die "No dbhost?";
- my $dbuser = $self->{testuser} || die "No testuser?";
- my $dbname = $self->{dbname} || die "No dbname?";
+ my $dbhost = $self->{dbhost} || die 'No dbhost?';
+ my $dbuser = $self->{testuser} || die 'No testuser?';
+ my $dbname = $self->{dbname} || die 'No dbname?';
my $com = qq{perl check_postgres.pl --action=$action --dbhost="$dbhost" --dbuser=$dbuser};
if ($extra =~ s/--nodbname//) {
}
@@ -345,6 +348,7 @@ sub create_fake_pg_table {
$dbh->do("ALTER USER $dbuser SET search_path = $fakeschema, public, pg_catalog");
$dbh->commit();
+ return;
} ## end of create_fake_pg_table
@@ -365,6 +369,7 @@ sub set_fake_schema {
$dbh->do("ALTER USER $dbuser SET search_path = $fakeschema, public, pg_catalog");
$dbh->commit();
+ return;
} ## end of set_fake_schema
@@ -399,9 +404,10 @@ sub drop_schema_if_exists {
my ($self,$name) = @_;
my $dbh = $self->{dbh} || die;
+ $name ||= $fakeschema;
if (! exists $self->{keep_old_schema}) {
- my $SQL = "SELECT count(*) FROM pg_namespace WHERE nspname = " . $dbh->quote($name);
+ my $SQL = 'SELECT count(*) FROM pg_namespace WHERE nspname = ' . $dbh->quote($name);
my $count = $dbh->selectall_arrayref($SQL)->[0][0];
if ($count) {
local $dbh->{Warn};
@@ -427,7 +433,7 @@ sub drop_table_if_exists {
my $safetable = $dbh->quote($name);
my $safeschema = $dbh->quote($schema);
- my $SQL = $schema
+ my $SQL = $schema
? q{SELECT count(*) FROM pg_class c JOIN pg_namespace n ON (n.oid = c.relnamespace) }.
qq{WHERE relkind = 'r' AND nspname = $safeschema AND relname = $safetable}
: qq{SELECT count(*) FROM pg_class WHERE relkind='r' AND relname = $safetable};
@@ -470,6 +476,7 @@ sub drop_sequence_if_exists {
$dbh->do("DROP SEQUENCE $name");
$dbh->commit();
}
+ return;
} ## end of drop_sequence_if_exists
@@ -531,6 +538,7 @@ sub fake_self_version {
print $fh $slurp;
truncate $fh, tell($fh);
close $fh or die qq{Could not close "$file": $!\n};
+ return;
} ## end of fake_self_version
@@ -547,6 +555,7 @@ sub restore_self_version {
print $fh $slurp;
truncate $fh, tell($fh);
close $fh or die qq{Could not close "$file": $!\n};
+ return;
} ## end of restore_self_version
@@ -570,7 +579,25 @@ sub drop_all_tables {
$dbh->do("DROP TABLE $tab CASCADE");
}
$dbh->commit();
+ return;
} ## end of drop_all_tables
+sub database_sleep {
+
+ my ($self,$dbh,$time) = @_;
+
+ my $ver = $dbh->{pg_server_version};
+
+ if ($ver < 80200) {
+ my $SQL = q{CREATE OR REPLACE FUNCTION pg_sleep(float) RETURNS VOID LANGUAGE plperlu AS 'select(undef,undef,undef,shift)'};
+ $dbh->do($SQL);
+ $dbh->commit();
+ }
+ $dbh->do(qq{SELECT pg_sleep($time)});
+ return;
+
+
+} ## end of database_sleep
+
1;