Add PostgreSQL::Test::Cluster::is_alive()
authorMichael Paquier <michael@paquier.xyz>
Sat, 19 Jul 2025 05:38:52 +0000 (14:38 +0900)
committerMichael Paquier <michael@paquier.xyz>
Sat, 19 Jul 2025 05:38:52 +0000 (14:38 +0900)
This new routine acts as a wrapper of pg_isready, that can be run on a
node to check its connection status.  This will be used in a recovery
test in a follow-up commit.

Suggested-by: Andres Freund <andres@anarazel.de>
Author: Nazir Bilal Yavuz <byavuz81@gmail.com>
Discussion: https://postgr.es/m/CAN55FZ1D6KXvjSs7YGsDeadqCxNF3UUhjRAfforzzP0k-cE=bA@mail.gmail.com

src/test/perl/PostgreSQL/Test/Cluster.pm

index 301766d2ed93c4b87cb156bbe9b436a68b4c6199..61f68e0cc2e513d0f0c2854c0d927a97efb62447 100644 (file)
@@ -290,6 +290,32 @@ sub connstr
 
 =pod
 
+=item $node->is_alive()
+
+Check if the node is alive, using pg_isready.
+Returns 1 if successful, 0 on failure.
+
+=cut
+
+sub is_alive
+{
+   my ($self) = @_;
+   local %ENV = $self->_get_env();
+
+   my $ret = PostgreSQL::Test::Utils::system_log(
+       'pg_isready',
+       '--host' => $self->host,
+       '--port' => $self->port);
+
+   if ($ret != 0)
+   {
+       return 0;
+   }
+   return 1;
+}
+
+=pod
+
 =item $node->raw_connect()
 
 Open a raw TCP or Unix domain socket connection to the server. This is