'pg_ctl initdb');
command_ok([ $ENV{PG_REGRESS}, '--config-auth', "$tempdir/data" ],
'configure authentication');
-my $node_port = get_free_port();
+my $node_port = PostgresNode::get_free_port();
open my $conf, '>>', "$tempdir/data/postgresql.conf";
print $conf "fsync = off\n";
print $conf "port = $node_port\n";
my $krb5_cache = "${TestLib::tmp_check}/krb5cc";
my $krb5_log = "${TestLib::log_path}/krb5libs.log";
my $kdc_log = "${TestLib::log_path}/krb5kdc.log";
-my $kdc_port = get_free_port();
+my $kdc_port = PostgresNode::get_free_port();
my $kdc_datadir = "${TestLib::tmp_check}/krb5kdc";
my $kdc_pidfile = "${TestLib::tmp_check}/krb5kdc.pid";
my $keytab = "${TestLib::tmp_check}/krb5.keytab";
my $slapd_logfile = "${TestLib::log_path}/slapd.log";
my $ldap_conf = "${TestLib::tmp_check}/ldap.conf";
my $ldap_server = 'localhost';
-my $ldap_port = get_free_port();
-my $ldaps_port = get_free_port();
+my $ldap_port = PostgresNode::get_free_port();
+my $ldaps_port = PostgresNode::get_free_port();
my $ldap_url = "ldap://$ldap_server:$ldap_port";
my $ldaps_url = "ldaps://$ldap_server:$ldaps_port";
my $ldap_basedn = 'dc=example,dc=net';
$node->stop('fast');
# Find a free, unprivileged TCP port to bind some other service to
- my $port = get_free_port();
+ my $port = PostgresNode::get_free_port();
=head1 DESCRIPTION
use Carp;
use Config;
use Cwd;
-use Exporter 'import';
use Fcntl qw(:mode);
use File::Basename;
use File::Path qw(rmtree);
use Time::HiRes qw(usleep);
use Scalar::Util qw(blessed);
-our @EXPORT = qw(
- get_free_port
-);
-
our ($use_tcp, $test_localhost, $test_pghost, $last_host_assigned,
$last_port_assigned, @all_nodes, $died);
=item get_free_port()
Locate an unprivileged (high) TCP port that's not currently bound to
-anything. This is used by new(), and is also exported for use
-by test cases that need to start other, non-Postgres servers.
+anything. This is used by C<new()>, and also by some test cases that need to
+start other, non-Postgres servers.
Ports assigned to existing PostgresNode objects are automatically
excluded, even if those servers are not currently running.
XXX A port available now may become unavailable by the time we start
the desired service.
+Note: this is not an instance method. As it's not exported it should be
+called from outside the module as C<PostgresNode::get_free_port()>.
+
=cut
sub get_free_port