diff options
author | Andres Freund <andres@anarazel.de> | 2022-05-02 18:09:44 -0700 |
---|---|---|
committer | Andres Freund <andres@anarazel.de> | 2022-05-02 18:09:44 -0700 |
commit | e8a0cf9b20a12d9cb7687a1363cdeb261ef16472 (patch) | |
tree | 20fb60bd8f0e810aebb450a535cc0421c3d3bf99 /src/test/perl/TestLib.pm | |
parent | d6ae041c87488af37bc1f8b30697c3df1c24e65f (diff) |
Backpatch addition of wait_for_log(), pump_until().
These were originally introduced in a2ab9c06ea1 and a2ab9c06ea1, as they are
needed by a about-to-be-backpatched test.
Discussion: https://postgr.es/m/20220413002626.udl7lll7f3o7nre7@alap3.anarazel.de
Backpatch: 10-14
Diffstat (limited to 'src/test/perl/TestLib.pm')
-rw-r--r-- | src/test/perl/TestLib.pm | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/test/perl/TestLib.pm b/src/test/perl/TestLib.pm index f94a71cd8e3..541c2108481 100644 --- a/src/test/perl/TestLib.pm +++ b/src/test/perl/TestLib.pm @@ -31,6 +31,7 @@ our @EXPORT = qw( system_or_bail system_log run_log + pump_until command_ok command_fails @@ -232,6 +233,36 @@ sub run_log 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 sub generate_ascii_string { |