Cleanup some code related to pgbench log checks in TAP tests
authorMichael Paquier <michael@paquier.xyz>
Fri, 25 Jun 2021 11:15:24 +0000 (20:15 +0900)
committerMichael Paquier <michael@paquier.xyz>
Fri, 25 Jun 2021 11:15:24 +0000 (20:15 +0900)
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

src/bin/pgbench/t/001_pgbench_with_server.pl

index ff5b31d4df14be12fb1b8eb32d54ae06cab2f9e4..781cc08fb17eb553c1115cb72ee96ce827c8dff3 100644 (file)
@@ -1193,28 +1193,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)");
-                       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)
+               # 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)
                        {
-                               foreach my $log (@contents)
-                               {
-                                       print "# Log entry not matching: $log\n"
-                                         unless $log =~ /$re/;
-                               }
+                               print "# Log entry not matching: $log\n"
+                                 unless $log =~ /$re/;
                        }
-                       close $fh or die "$@";
-               };
+               }
        }
-       ok(unlink(@logs), "remove log files");
        return;
 }