mirror of
https://github.com/postgres/postgres.git
synced 2025-05-21 00:02:53 -04:00
Add option to specify timeout seconds to BackgroundPsql.pm.
Previously, a background psql session uses the default timeout and it cannot be overridden. This change adds a new option to set the timeout during start. There are no users of this new option. It is needed for an upcoming patch adding tests for XID wraparound. Reviewed-by: Daniel Gustafsson, Noah Misch Discussion: https://postgr.es/m/C9CF2F76-0D81-4C9D-9832-202BE8517056%40yesql.se
This commit is contained in:
parent
a1827568d2
commit
334f512f45
@ -68,7 +68,7 @@ use Test::More;
|
||||
|
||||
=over
|
||||
|
||||
=item PostgreSQL::Test::BackgroundPsql->new(interactive, @params)
|
||||
=item PostgreSQL::Test::BackgroundPsql->new(interactive, @psql_params, timeout)
|
||||
|
||||
Builds a new object of class C<PostgreSQL::Test::BackgroundPsql> for either
|
||||
an interactive or background session and starts it. If C<interactive> is
|
||||
@ -81,7 +81,7 @@ string. For C<interactive> sessions, IO::Pty is required.
|
||||
sub new
|
||||
{
|
||||
my $class = shift;
|
||||
my ($interactive, $psql_params) = @_;
|
||||
my ($interactive, $psql_params, $timeout) = @_;
|
||||
my $psql = {
|
||||
'stdin' => '',
|
||||
'stdout' => '',
|
||||
@ -96,8 +96,10 @@ sub new
|
||||
"Forbidden caller of constructor: package: $package, file: $file:$line"
|
||||
unless $package->isa('PostgreSQL::Test::Cluster');
|
||||
|
||||
$psql->{timeout} =
|
||||
IPC::Run::timeout($PostgreSQL::Test::Utils::timeout_default);
|
||||
$psql->{timeout} = IPC::Run::timeout(
|
||||
defined($timeout)
|
||||
? $timeout
|
||||
: $PostgreSQL::Test::Utils::timeout_default);
|
||||
|
||||
if ($interactive)
|
||||
{
|
||||
|
@ -2028,8 +2028,6 @@ sub psql
|
||||
|
||||
Invoke B<psql> on B<$dbname> and return a BackgroundPsql object.
|
||||
|
||||
A timeout of $PostgreSQL::Test::Utils::timeout_default is set up.
|
||||
|
||||
psql is invoked in tuples-only unaligned mode with reading of B<.psqlrc>
|
||||
disabled. That may be overridden by passing extra psql parameters.
|
||||
|
||||
@ -2047,6 +2045,11 @@ By default, the B<psql> method invokes the B<psql> program with ON_ERROR_STOP=1
|
||||
set, so SQL execution is stopped at the first error and exit code 3 is
|
||||
returned. Set B<on_error_stop> to 0 to ignore errors instead.
|
||||
|
||||
=item timeout => 'interval'
|
||||
|
||||
Set a timeout for a background psql session. By default, timeout of
|
||||
$PostgreSQL::Test::Utils::timeout_default is set up.
|
||||
|
||||
=item replication => B<value>
|
||||
|
||||
If set, add B<replication=value> to the conninfo string.
|
||||
@ -2068,6 +2071,7 @@ sub background_psql
|
||||
local %ENV = $self->_get_env();
|
||||
|
||||
my $replication = $params{replication};
|
||||
my $timeout = undef;
|
||||
|
||||
my @psql_params = (
|
||||
$self->installed_command('psql'),
|
||||
@ -2079,12 +2083,13 @@ sub background_psql
|
||||
'-');
|
||||
|
||||
$params{on_error_stop} = 1 unless defined $params{on_error_stop};
|
||||
$timeout = $params{timeout} if defined $params{timeout};
|
||||
|
||||
push @psql_params, '-v', 'ON_ERROR_STOP=1' if $params{on_error_stop};
|
||||
push @psql_params, @{ $params{extra_params} }
|
||||
if defined $params{extra_params};
|
||||
|
||||
return PostgreSQL::Test::BackgroundPsql->new(0, \@psql_params);
|
||||
return PostgreSQL::Test::BackgroundPsql->new(0, \@psql_params, $timeout);
|
||||
}
|
||||
|
||||
=pod
|
||||
|
Loading…
x
Reference in New Issue
Block a user