From 5ab8e8014801dd6bc05809e7ba994c013e9ee86b Mon Sep 17 00:00:00 2001 From: Andres Freund Date: Mon, 2 May 2022 18:09:42 -0700 Subject: 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 --- src/test/perl/TestLib.pm | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) (limited to 'src/test/perl/TestLib.pm') diff --git a/src/test/perl/TestLib.pm b/src/test/perl/TestLib.pm index ba2beb1c9e5..f3ee20af41c 100644 --- a/src/test/perl/TestLib.pm +++ b/src/test/perl/TestLib.pm @@ -74,6 +74,7 @@ our @EXPORT = qw( system_log run_log run_command + pump_until command_ok command_fails @@ -393,6 +394,36 @@ sub run_command =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; +} + +=pod + =item generate_ascii_string(from_char, to_char) Generate a string made of the given range of ASCII characters. -- cgit v1.2.3