aboutsummaryrefslogtreecommitdiff
path: root/src/test/perl/PostgreSQL/Test/Cluster.pm
diff options
context:
space:
mode:
authorDaniel Gustafsson <dgustafsson@postgresql.org>2023-09-22 13:35:37 +0200
committerDaniel Gustafsson <dgustafsson@postgresql.org>2023-09-22 13:35:37 +0200
commit33774978c78175095da9e6c276e8bcdb177725f8 (patch)
tree3028f081c7a9eb58d8593e4f501fb55df4dc4a90 /src/test/perl/PostgreSQL/Test/Cluster.pm
parent5f3aa309a880bb429c6a648d64e20fbd353fee8a (diff)
downloadpostgresql-33774978c78175095da9e6c276e8bcdb177725f8.tar.gz
postgresql-33774978c78175095da9e6c276e8bcdb177725f8.zip
Avoid using internal test methods in SSL tests
The SSL tests for pg_ctl restart with an incorrect key passphrase used the internal _update_pid method to set the pidfile after running pg_ctl manually instead of using the supplied ->restart method. This refactors the ->restart method to accept a fail_ok parameter like how ->start and ->stop does, and changes the SSL tests to use this instead. This removes the need to call internal test module functions. Reviewed-by: Melih Mutlu <m.melihmutlu@gmail.com> Reviewed-by: Heikki Linnakangas <hlinnaka@iki.fi> Discussion: https://postgr.es/m/F81643C4-D7B8-4C6B-AF18-B73839966279@yesql.se
Diffstat (limited to 'src/test/perl/PostgreSQL/Test/Cluster.pm')
-rw-r--r--src/test/perl/PostgreSQL/Test/Cluster.pm31
1 files changed, 23 insertions, 8 deletions
diff --git a/src/test/perl/PostgreSQL/Test/Cluster.pm b/src/test/perl/PostgreSQL/Test/Cluster.pm
index 2a478ba6ed7..c3d46c7c704 100644
--- a/src/test/perl/PostgreSQL/Test/Cluster.pm
+++ b/src/test/perl/PostgreSQL/Test/Cluster.pm
@@ -1035,17 +1035,18 @@ sub reload
=item $node->restart()
-Wrapper for pg_ctl restart
+Wrapper for pg_ctl restart.
+
+With optional extra param fail_ok => 1, returns 0 for failure
+instead of bailing out.
=cut
sub restart
{
- my ($self) = @_;
- my $port = $self->port;
- my $pgdata = $self->data_dir;
- my $logfile = $self->logfile;
+ my ($self, %params) = @_;
my $name = $self->name;
+ my $ret;
local %ENV = $self->_get_env(PGAPPNAME => undef);
@@ -1053,11 +1054,25 @@ sub restart
# -w is now the default but having it here does no harm and helps
# compatibility with older versions.
- PostgreSQL::Test::Utils::system_or_bail('pg_ctl', '-w', '-D', $pgdata,
- '-l', $logfile, 'restart');
+ $ret = PostgreSQL::Test::Utils::system_log(
+ 'pg_ctl', '-w', '-D', $self->data_dir,
+ '-l', $self->logfile, 'restart');
+
+ if ($ret != 0)
+ {
+ print "# pg_ctl restart failed; logfile:\n";
+ print PostgreSQL::Test::Utils::slurp_file($self->logfile);
+
+ # pg_ctl could have timed out, so check to see if there's a pid file;
+ # otherwise our END block will fail to shut down the new postmaster.
+ $self->_update_pid(-1);
+
+ BAIL_OUT("pg_ctl restart failed") unless $params{fail_ok};
+ return 0;
+ }
$self->_update_pid(1);
- return;
+ return 1;
}
=pod