diff --git a/src/test/perl/PostgresNode.pm b/src/test/perl/PostgresNode.pm index d87296af086..bf982101a57 100644 --- a/src/test/perl/PostgresNode.pm +++ b/src/test/perl/PostgresNode.pm @@ -9,7 +9,7 @@ PostgresNode - class representing PostgreSQL server instance use PostgresNode; - my $node = get_new_node('mynode'); + my $node = PostgresNode->get_new_node('mynode'); # Create a data directory with initdb $node->init(); @@ -855,20 +855,24 @@ sub _update_pid =pod -=item get_new_node(node_name) +=item PostgresNode->get_new_node(node_name) -Build a new PostgresNode object, assigning a free port number. Standalone -function that's automatically imported. +Build a new object of class C (or of a subclass, if you have +one), assigning a free port number. Remembers the node, to prevent its port +number from being reused for another node, and to ensure that it gets +shut down when the test script exits. -Remembers the node, to prevent its port number from being reused for another -node, and to ensure that it gets shut down when the test script exits. +You should generally use this instead of C. -You should generally use this instead of PostgresNode::new(...). +For backwards compatibility, it is also exported as a standalone function, +which can only create objects of class C. =cut sub get_new_node { + my $class = 'PostgresNode'; + $class = shift if 1 < scalar @_; my $name = shift; my $found = 0; my $port = $last_port_assigned; @@ -913,7 +917,7 @@ sub get_new_node print "# Found free port $port\n"; # Lock port number found by creating a new node - my $node = new PostgresNode($name, $test_pghost, $port); + my $node = $class->new($name, $test_pghost, $port); # Add node to list of nodes push(@all_nodes, $node); diff --git a/src/test/perl/README b/src/test/perl/README index cc6edfb3838..c61c3f5e942 100644 --- a/src/test/perl/README +++ b/src/test/perl/README @@ -48,7 +48,7 @@ Each test script should begin with: then it will generally need to set up one or more nodes, run commands against them and evaluate the results. For example: - my $node = get_new_node('master'); + my $node = PostgresNode->get_new_node('master'); $node->init; $node->start;