diff options
Diffstat (limited to 'src/test/perl/PostgresNode.pm')
-rw-r--r-- | src/test/perl/PostgresNode.pm | 72 |
1 files changed, 64 insertions, 8 deletions
diff --git a/src/test/perl/PostgresNode.pm b/src/test/perl/PostgresNode.pm index 1e96357d7ed..d6e10544bb9 100644 --- a/src/test/perl/PostgresNode.pm +++ b/src/test/perl/PostgresNode.pm @@ -1511,6 +1511,11 @@ the B<timed_out> parameter is also given. If B<timeout> is set and this parameter is given, the scalar it references is set to true if the psql call times out. +=item connstr => B<value> + +If set, use this as the connection string for the connection to the +backend. + =item replication => B<value> If set, add B<replication=value> to the conninfo string. @@ -1550,14 +1555,20 @@ sub psql my $replication = $params{replication}; my $timeout = undef; my $timeout_exception = 'psql timed out'; - my @psql_params = ( - 'psql', - '-XAtq', - '-d', - $self->connstr($dbname) - . (defined $replication ? " replication=$replication" : ""), - '-f', - '-'); + + # Build the connection string. + my $psql_connstr; + if (defined $params{connstr}) + { + $psql_connstr = $params{connstr}; + } + else + { + $psql_connstr = $self->connstr($dbname); + } + $psql_connstr .= defined $replication ? " replication=$replication" : ""; + + my @psql_params = ('psql', '-XAtq', '-d', $psql_connstr, '-f', '-'); # If the caller wants an array and hasn't passed stdout/stderr # references, allocate temporary ones to capture them so we @@ -1849,6 +1860,51 @@ sub interactive_psql =pod +=item $node->connect_ok($connstr, $test_name) + +Attempt a connection with a custom connection string. This is expected +to succeed. + +=cut + +sub connect_ok +{ + local $Test::Builder::Level = $Test::Builder::Level + 1; + my ($self, $connstr, $test_name) = @_; + my ($ret, $stdout, $stderr) = $self->psql( + 'postgres', + "SELECT \$\$connected with $connstr\$\$", + connstr => "$connstr", + on_error_stop => 0); + + ok($ret == 0, $test_name); +} + +=pod + +=item $node->connect_fails($connstr, $expected_stderr, $test_name) + +Attempt a connection with a custom connection string. This is expected +to fail with a message that matches the regular expression +$expected_stderr. + +=cut + +sub connect_fails +{ + local $Test::Builder::Level = $Test::Builder::Level + 1; + my ($self, $connstr, $expected_stderr, $test_name) = @_; + my ($ret, $stdout, $stderr) = $self->psql( + 'postgres', + "SELECT \$\$connected with $connstr\$\$", + connstr => "$connstr"); + + ok($ret != 0, $test_name); + like($stderr, $expected_stderr, "$test_name: matches"); +} + +=pod + =item $node->poll_query_until($dbname, $query [, $expected ]) Run B<$query> repeatedly, until it returns the B<$expected> result |