Cleanup some code related to pgbench log checks in TAP tests

This fixes a couple of problems within the so-said code of this commit
subject:
- Replace the use of open() with slurp_file(), fixing an issue reported
by buildfarm member fairywren whose perl installation keep around CRLF
characters, causing the matching patterns for the logs to fail.
- Remove the eval block, which is not really necessary.

This set of issues has come into light after fixing a different issue
with c13585fe, and this is wrong since this code has been introduced.

Reported-by: Andrew Dunstan, and buildfarm member fairywren
Author: Michael Paquier
Reviewed-by: Andrew Dunstan
Discussion: https://postgr.es/m/0f49303e-7784-b3ee-200b-cbf67be2eb9e@dunslane.net
Backpatch-through: 11
This commit is contained in:
Michael Paquier 2021-06-25 20:15:39 +09:00
parent 6ada4fd066
commit c4c9c77e56
1 changed files with 20 additions and 11 deletions

View File

@ -834,18 +834,27 @@ sub check_pgbench_logs
my $log_number = 0;
for my $log (sort @logs)
{
eval {
open my $fh, '<', $log or die "$@";
my @contents = <$fh>;
my $clen = @contents;
ok( $min <= $clen && $clen <= $max,
"transaction count for $log ($clen)");
ok( grep(/$re/, @contents) == $clen,
"transaction format for $prefix");
close $fh or die "$@";
};
# Check the contents of each log file.
my $contents_raw = slurp_file($log);
my @contents = split(/\n/, $contents_raw);
my $clen = @contents;
ok( $min <= $clen && $clen <= $max,
"transaction count for $log ($clen)");
my $clen_match = grep(/$re/, @contents);
ok($clen_match == $clen, "transaction format for $prefix");
# Show more information if some logs don't match
# to help with debugging.
if ($clen_match != $clen)
{
foreach my $log (@contents)
{
print "# Log entry not matching: $log\n"
unless $log =~ /$re/;
}
}
}
ok(unlink(@logs), "remove log files");
return;
}