mirror of
https://git.postgresql.org/git/postgresql.git
synced 2024-10-06 02:17:03 +02:00
Backpatch addition of wait_for_log(), pump_until().
These were originally introduced ina2ab9c06ea
anda2ab9c06ea
, as they are needed by a about-to-be-backpatched test. Discussion: https://postgr.es/m/20220413002626.udl7lll7f3o7nre7@alap3.anarazel.de Backpatch: 10-14
This commit is contained in:
parent
1dd49df783
commit
2adb8debe5
@ -25,6 +25,7 @@ our @EXPORT = qw(
|
|||||||
system_or_bail
|
system_or_bail
|
||||||
system_log
|
system_log
|
||||||
run_log
|
run_log
|
||||||
|
pump_until
|
||||||
|
|
||||||
command_ok
|
command_ok
|
||||||
command_fails
|
command_fails
|
||||||
|
@ -2065,6 +2065,41 @@ sub wait_for_slot_catchup
|
|||||||
|
|
||||||
=pod
|
=pod
|
||||||
|
|
||||||
|
=item $node->wait_for_log(regexp, offset)
|
||||||
|
|
||||||
|
Waits for the contents of the server log file, starting at the given offset, to
|
||||||
|
match the supplied regular expression. Checks the entire log if no offset is
|
||||||
|
given. Times out after $TestLib::timeout_default seconds.
|
||||||
|
|
||||||
|
If successful, returns the length of the entire log file, in bytes.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub wait_for_log
|
||||||
|
{
|
||||||
|
my ($self, $regexp, $offset) = @_;
|
||||||
|
$offset = 0 unless defined $offset;
|
||||||
|
|
||||||
|
my $max_attempts = 10 * $TestLib::timeout_default;
|
||||||
|
my $attempts = 0;
|
||||||
|
|
||||||
|
while ($attempts < $max_attempts)
|
||||||
|
{
|
||||||
|
my $log = TestLib::slurp_file($self->logfile, $offset);
|
||||||
|
|
||||||
|
return $offset+length($log) if ($log =~ m/$regexp/);
|
||||||
|
|
||||||
|
# Wait 0.1 second before retrying.
|
||||||
|
usleep(100_000);
|
||||||
|
|
||||||
|
$attempts++;
|
||||||
|
}
|
||||||
|
|
||||||
|
croak "timed out waiting for match: $regexp";
|
||||||
|
}
|
||||||
|
|
||||||
|
=pod
|
||||||
|
|
||||||
=item $node->query_hash($dbname, $query, @columns)
|
=item $node->query_hash($dbname, $query, @columns)
|
||||||
|
|
||||||
Execute $query on $dbname, replacing any appearance of the string __COLUMNS__
|
Execute $query on $dbname, replacing any appearance of the string __COLUMNS__
|
||||||
|
@ -36,6 +36,7 @@ our @EXPORT = qw(
|
|||||||
system_or_bail
|
system_or_bail
|
||||||
system_log
|
system_log
|
||||||
run_log
|
run_log
|
||||||
|
pump_until
|
||||||
|
|
||||||
command_ok
|
command_ok
|
||||||
command_fails
|
command_fails
|
||||||
@ -238,6 +239,36 @@ sub run_log
|
|||||||
return IPC::Run::run(@_);
|
return IPC::Run::run(@_);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
=pod
|
||||||
|
|
||||||
|
=item pump_until(proc, timeout, stream, until)
|
||||||
|
|
||||||
|
Pump until string is matched on the specified stream, or timeout occurs.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub pump_until
|
||||||
|
{
|
||||||
|
my ($proc, $timeout, $stream, $until) = @_;
|
||||||
|
$proc->pump_nb();
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
last if $$stream =~ /$until/;
|
||||||
|
if ($timeout->is_expired)
|
||||||
|
{
|
||||||
|
diag("pump_until: timeout expired when searching for \"$until\" with stream: \"$$stream\"");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (not $proc->pumpable())
|
||||||
|
{
|
||||||
|
diag("pump_until: process terminated unexpectedly when searching for \"$until\" with stream: \"$$stream\"");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
$proc->pump();
|
||||||
|
}
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
# Generate a string made of the given range of ASCII characters
|
# Generate a string made of the given range of ASCII characters
|
||||||
sub generate_ascii_string
|
sub generate_ascii_string
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user