summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Paquier <michael@paquier.xyz>2021-06-25 20:15:31 +0900
committerMichael Paquier <michael@paquier.xyz>2021-06-25 20:15:31 +0900
commitaf2e67b47afe56627c6ced8cd5741d345fc64da9 (patch)
treefd951555ba0725e9a8cbfa3931a9d975a6600bd2
parent372a2806ebc28f79de929a7c763b441e35a9c362 (diff)
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
-rw-r--r--src/bin/pgbench/t/001_pgbench_with_server.pl31
1 files changed, 20 insertions, 11 deletions
diff --git a/src/bin/pgbench/t/001_pgbench_with_server.pl b/src/bin/pgbench/t/001_pgbench_with_server.pl
index 6e0d6b87cda..248da5b1e7a 100644
--- a/src/bin/pgbench/t/001_pgbench_with_server.pl
+++ b/src/bin/pgbench/t/001_pgbench_with_server.pl
@@ -1063,18 +1063,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;
}