Replace use of stat()[7] by -s switch in TAP tests to retrieve file size

The list form of stat() is an inelegant API as it relies on the position
of the file size in the list returned in result.  Like in any other
places of the tree, replace that with a -s switch instead.

Another suggestion from Dagfinn is File::Stat, which we've been already
using for some other fields.  It really comes down to a matter of taste
to choose that over -s, and the latter is more used in the tree.

Author: Bertrand Drouvot
Reviewed-by: Dagfinn Ilmari Mannsåker
Discussion: https://postgr.es/m/b2020df7-d0fc-4ea5-b2a9-7efc6d36b2ac@gmail.com
This commit is contained in:
Michael Paquier 2023-10-03 08:27:34 +09:00
parent 06c0c36884
commit 6c77bb42ab
3 changed files with 5 additions and 13 deletions

View File

@ -24,7 +24,7 @@ command_like([ 'pg_controldata', $node->data_dir ],
# check with a corrupted pg_control
my $pg_control = $node->data_dir . '/global/pg_control';
my $size = (stat($pg_control))[7];
my $size = -s $pg_control;
open my $fh, '>', $pg_control or BAIL_OUT($!);
binmode $fh;

View File

@ -14,7 +14,7 @@ my $node = PostgreSQL::Test::Cluster->new('main');
$node->init;
my $pg_control = $node->data_dir . '/global/pg_control';
my $size = (stat($pg_control))[7];
my $size = -s $pg_control;
# Read out the head of the file to get PG_CONTROL_VERSION in
# particular.

View File

@ -173,7 +173,7 @@ $node_primary->safe_psql('postgres',
"ALTER SYSTEM SET max_wal_size='40MB'; SELECT pg_reload_conf()");
# Advance WAL again. The slot loses the oldest segment by the next checkpoint
my $logstart = get_log_size($node_primary);
my $logstart = -s $node_primary->logfile;
advance_wal($node_primary, 7);
# Now create another checkpoint and wait until the WARNING is issued
@ -229,7 +229,7 @@ $node_primary->safe_psql('postgres',
is($oldestseg, $redoseg, "check that segments have been removed");
# The standby no longer can connect to the primary
$logstart = get_log_size($node_standby);
$logstart = -s $node_standby->logfile;
$node_standby->start;
my $failed = 0;
@ -368,7 +368,7 @@ my $receiverpid = $node_standby3->safe_psql('postgres',
"SELECT pid FROM pg_stat_activity WHERE backend_type = 'walreceiver'");
like($receiverpid, qr/^[0-9]+$/, "have walreceiver pid $receiverpid");
$logstart = get_log_size($node_primary3);
$logstart = -s $node_primary3->logfile;
# freeze walsender and walreceiver. Slot will still be active, but walreceiver
# won't get anything anymore.
kill 'STOP', $senderpid, $receiverpid;
@ -433,12 +433,4 @@ sub advance_wal
return;
}
# return the size of logfile of $node in bytes
sub get_log_size
{
my ($node) = @_;
return (stat $node->logfile)[7];
}
done_testing();