diff options
Diffstat (limited to 'src/test/perl/PostgreSQL')
-rw-r--r-- | src/test/perl/PostgreSQL/Test/BackgroundPsql.pm | 9 | ||||
-rw-r--r-- | src/test/perl/PostgreSQL/Test/Cluster.pm | 140 | ||||
-rw-r--r-- | src/test/perl/PostgreSQL/Test/Kerberos.pm | 2 | ||||
-rw-r--r-- | src/test/perl/PostgreSQL/Test/Utils.pm | 40 |
4 files changed, 114 insertions, 77 deletions
diff --git a/src/test/perl/PostgreSQL/Test/BackgroundPsql.pm b/src/test/perl/PostgreSQL/Test/BackgroundPsql.pm index c611a61cf4e..60bbd5dd445 100644 --- a/src/test/perl/PostgreSQL/Test/BackgroundPsql.pm +++ b/src/test/perl/PostgreSQL/Test/BackgroundPsql.pm @@ -108,14 +108,17 @@ sub new if ($interactive) { $run = IPC::Run::start $psql_params, - '<pty<', \$psql->{stdin}, '>pty>', \$psql->{stdout}, '2>', - \$psql->{stderr}, + '<pty<' => \$psql->{stdin}, + '>pty>' => \$psql->{stdout}, + '2>' => \$psql->{stderr}, $psql->{timeout}; } else { $run = IPC::Run::start $psql_params, - '<', \$psql->{stdin}, '>', \$psql->{stdout}, '2>', \$psql->{stderr}, + '<' => \$psql->{stdin}, + '>' => \$psql->{stdout}, + '2>' => \$psql->{stderr}, $psql->{timeout}; } diff --git a/src/test/perl/PostgreSQL/Test/Cluster.pm b/src/test/perl/PostgreSQL/Test/Cluster.pm index b105cba05a6..0750915a9a8 100644 --- a/src/test/perl/PostgreSQL/Test/Cluster.pm +++ b/src/test/perl/PostgreSQL/Test/Cluster.pm @@ -640,8 +640,11 @@ sub init or !defined $ENV{INITDB_TEMPLATE}) { note("initializing database system by running initdb"); - PostgreSQL::Test::Utils::system_or_bail('initdb', '-D', $pgdata, '-A', - 'trust', '-N', @{ $params{extra} }); + PostgreSQL::Test::Utils::system_or_bail( + 'initdb', '--no-sync', + '--pgdata' => $pgdata, + '--auth' => 'trust', + @{ $params{extra} }); } else { @@ -838,11 +841,11 @@ sub backup print "# Taking pg_basebackup $backup_name from node \"$name\"\n"; PostgreSQL::Test::Utils::system_or_bail( - 'pg_basebackup', '-D', - $backup_path, '-h', - $self->host, '-p', - $self->port, '--checkpoint', - 'fast', '--no-sync', + 'pg_basebackup', '--no-sync', + '--pgdata' => $backup_path, + '--host' => $self->host, + '--port' => $self->port, + '--checkpoint' => 'fast', @{ $params{backup_options} }); print "# Backup finished\n"; return; @@ -946,7 +949,7 @@ sub init_from_backup } local %ENV = $self->_get_env(); - my @combineargs = ('pg_combinebackup', '-d'); + my @combineargs = ('pg_combinebackup', '--debug'); if (exists $params{tablespace_map}) { while (my ($olddir, $newdir) = each %{ $params{tablespace_map} }) @@ -959,19 +962,21 @@ sub init_from_backup { push @combineargs, $params{combine_mode}; } - push @combineargs, @prior_backup_path, $backup_path, '-o', $data_path; + push @combineargs, @prior_backup_path, $backup_path, + '--output' => $data_path; PostgreSQL::Test::Utils::system_or_bail(@combineargs); } elsif (defined $params{tar_program}) { mkdir($data_path) || die "mkdir $data_path: $!"; - PostgreSQL::Test::Utils::system_or_bail($params{tar_program}, 'xf', - $backup_path . '/base.tar', - '-C', $data_path); PostgreSQL::Test::Utils::system_or_bail( - $params{tar_program}, 'xf', - $backup_path . '/pg_wal.tar', '-C', - $data_path . '/pg_wal'); + $params{tar_program}, + 'xf' => $backup_path . '/base.tar', + '-C' => $data_path); + PostgreSQL::Test::Utils::system_or_bail( + $params{tar_program}, + 'xf' => $backup_path . '/pg_wal.tar', + '-C' => $data_path . '/pg_wal'); # We need to generate a tablespace_map file. open(my $tsmap, ">", "$data_path/tablespace_map") @@ -991,9 +996,10 @@ sub init_from_backup my $newdir = $params{tablespace_map}{$tsoid}; mkdir($newdir) || die "mkdir $newdir: $!"; - PostgreSQL::Test::Utils::system_or_bail($params{tar_program}, - 'xf', $backup_path . '/' . $tstar, - '-C', $newdir); + PostgreSQL::Test::Utils::system_or_bail( + $params{tar_program}, + 'xf' => $backup_path . '/' . $tstar, + '-C' => $newdir); my $escaped_newdir = $newdir; $escaped_newdir =~ s/\\/\\\\/g; @@ -1133,8 +1139,10 @@ sub start # -w is now the default but having it here does no harm and helps # compatibility with older versions. $ret = PostgreSQL::Test::Utils::system_log( - 'pg_ctl', '-w', '-D', $self->data_dir, - '-l', $self->logfile, '-o', "--cluster-name=$name", + 'pg_ctl', '--wait', + '--pgdata' => $self->data_dir, + '--log' => $self->logfile, + '--options' => "--cluster-name=$name", 'start'); if ($ret != 0) @@ -1211,10 +1219,10 @@ sub stop return 1 unless defined $self->{_pid}; print "### Stopping node \"$name\" using mode $mode\n"; - my @cmd = ('pg_ctl', '-D', $pgdata, '-m', $mode, 'stop'); + my @cmd = ('pg_ctl', '--pgdata' => $pgdata, '--mode' => $mode, 'stop'); if ($params{timeout}) { - push(@cmd, ('--timeout', $params{timeout})); + push(@cmd, ('--timeout' => $params{timeout})); } $ret = PostgreSQL::Test::Utils::system_log(@cmd); @@ -1251,7 +1259,9 @@ sub reload local %ENV = $self->_get_env(); print "### Reloading node \"$name\"\n"; - PostgreSQL::Test::Utils::system_or_bail('pg_ctl', '-D', $pgdata, + PostgreSQL::Test::Utils::system_or_bail( + 'pg_ctl', + '--pgdata' => $pgdata, 'reload'); return; } @@ -1279,8 +1289,11 @@ sub restart # -w is now the default but having it here does no harm and helps # compatibility with older versions. - $ret = PostgreSQL::Test::Utils::system_log('pg_ctl', '-w', '-D', - $self->data_dir, '-l', $self->logfile, 'restart'); + $ret = PostgreSQL::Test::Utils::system_log( + 'pg_ctl', '--wait', + '--pgdata' => $self->data_dir, + '--log' => $self->logfile, + 'restart'); if ($ret != 0) { @@ -1318,8 +1331,11 @@ sub promote local %ENV = $self->_get_env(); print "### Promoting node \"$name\"\n"; - PostgreSQL::Test::Utils::system_or_bail('pg_ctl', '-D', $pgdata, '-l', - $logfile, 'promote'); + PostgreSQL::Test::Utils::system_or_bail( + 'pg_ctl', + '--pgdata' => $pgdata, + '--log' => $logfile, + 'promote'); return; } @@ -1342,8 +1358,11 @@ sub logrotate local %ENV = $self->_get_env(); print "### Rotating log in node \"$name\"\n"; - PostgreSQL::Test::Utils::system_or_bail('pg_ctl', '-D', $pgdata, '-l', - $logfile, 'logrotate'); + PostgreSQL::Test::Utils::system_or_bail( + 'pg_ctl', + '--pgdata' => $pgdata, + '--log' => $logfile, + 'logrotate'); return; } @@ -2120,7 +2139,9 @@ sub psql my @psql_params = ( $self->installed_command('psql'), - '-XAtq', '-d', $psql_connstr, '-f', '-'); + '--no-psqlrc', '--no-align', '--tuples-only', '--quiet', + '--dbname' => $psql_connstr, + '--file' => '-'); # If the caller wants an array and hasn't passed stdout/stderr # references, allocate temporary ones to capture them so we @@ -2142,7 +2163,8 @@ sub psql $params{on_error_stop} = 1 unless defined $params{on_error_stop}; $params{on_error_die} = 0 unless defined $params{on_error_die}; - push @psql_params, '-v', 'ON_ERROR_STOP=1' if $params{on_error_stop}; + push @psql_params, '--variable' => 'ON_ERROR_STOP=1' + if $params{on_error_stop}; push @psql_params, @{ $params{extra_params} } if defined $params{extra_params}; @@ -2168,9 +2190,9 @@ sub psql { local $@; eval { - my @ipcrun_opts = (\@psql_params, '<', \$sql); - push @ipcrun_opts, '>', $stdout if defined $stdout; - push @ipcrun_opts, '2>', $stderr if defined $stderr; + my @ipcrun_opts = (\@psql_params, '<' => \$sql); + push @ipcrun_opts, '>' => $stdout if defined $stdout; + push @ipcrun_opts, '2>' => $stderr if defined $stderr; push @ipcrun_opts, $timeout if defined $timeout; IPC::Run::run @ipcrun_opts; @@ -2325,13 +2347,16 @@ sub background_psql my @psql_params = ( $self->installed_command('psql'), - '-XAtq', '-d', $psql_connstr, '-f', '-'); + '--no-psqlrc', '--no-align', + '--tuples-only', '--quiet', + '--dbname' => $psql_connstr, + '--file' => '-'); $params{on_error_stop} = 1 unless defined $params{on_error_stop}; $params{wait} = 1 unless defined $params{wait}; $timeout = $params{timeout} if defined $params{timeout}; - push @psql_params, '-v', 'ON_ERROR_STOP=1' if $params{on_error_stop}; + push @psql_params, '--set' => 'ON_ERROR_STOP=1' if $params{on_error_stop}; push @psql_params, @{ $params{extra_params} } if defined $params{extra_params}; @@ -2402,7 +2427,8 @@ sub interactive_psql my @psql_params = ( $self->installed_command('psql'), - '-XAt', '-d', $self->connstr($dbname)); + '--no-psqlrc', '--no-align', '--tuples-only', + '--dbname' => $self->connstr($dbname)); push @psql_params, @{ $params{extra_params} } if defined $params{extra_params}; @@ -2424,7 +2450,7 @@ sub _pgbench_make_files for my $fn (sort keys %$files) { my $filename = $self->basedir . '/' . $fn; - push @file_opts, '-f', $filename; + push @file_opts, '--file' => $filename; # cleanup file weight $filename =~ s/\@\d+$//; @@ -2650,8 +2676,9 @@ sub poll_query_until $expected = 't' unless defined($expected); # default value my $cmd = [ - $self->installed_command('psql'), '-XAt', - '-d', $self->connstr($dbname) + $self->installed_command('psql'), '--no-psqlrc', + '--no-align', '--tuples-only', + '--dbname' => $self->connstr($dbname) ]; my ($stdout, $stderr); my $max_attempts = 10 * $PostgreSQL::Test::Utils::timeout_default; @@ -2659,8 +2686,10 @@ sub poll_query_until while ($attempts < $max_attempts) { - my $result = IPC::Run::run $cmd, '<', \$query, - '>', \$stdout, '2>', \$stderr; + my $result = IPC::Run::run $cmd, + '<' => \$query, + '>' => \$stdout, + '2>' => \$stderr; chomp($stdout); chomp($stderr); @@ -3534,15 +3563,17 @@ sub pg_recvlogical_upto my @cmd = ( $self->installed_command('pg_recvlogical'), - '-S', $slot_name, '--dbname', $self->connstr($dbname)); - push @cmd, '--endpos', $endpos; - push @cmd, '-f', '-', '--no-loop', '--start'; + '--slot' => $slot_name, + '--dbname' => $self->connstr($dbname), + '--endpos' => $endpos, + '--file' => '-', + '--no-loop', '--start'); while (my ($k, $v) = each %plugin_options) { croak "= is not permitted to appear in replication option name" if ($k =~ qr/=/); - push @cmd, "-o", "$k=$v"; + push @cmd, "--option" => "$k=$v"; } my $timeout; @@ -3555,7 +3586,7 @@ sub pg_recvlogical_upto { local $@; eval { - IPC::Run::run(\@cmd, ">", \$stdout, "2>", \$stderr, $timeout); + IPC::Run::run(\@cmd, '>' => \$stdout, '2>' => \$stderr, $timeout); $ret = $?; }; my $exc_save = $@; @@ -3669,15 +3700,14 @@ sub create_logical_slot_on_standby $handle = IPC::Run::start( [ - 'pg_recvlogical', '-d', - $self->connstr($dbname), '-P', - 'test_decoding', '-S', - $slot_name, '--create-slot' + 'pg_recvlogical', + '--dbname' => $self->connstr($dbname), + '--plugin' => 'test_decoding', + '--slot' => $slot_name, + '--create-slot' ], - '>', - \$stdout, - '2>', - \$stderr); + '>' => \$stdout, + '2>' => \$stderr); # Arrange for the xl_running_xacts record for which pg_recvlogical is # waiting. diff --git a/src/test/perl/PostgreSQL/Test/Kerberos.pm b/src/test/perl/PostgreSQL/Test/Kerberos.pm index 118ea1e103e..b72dd2fbaf4 100644 --- a/src/test/perl/PostgreSQL/Test/Kerberos.pm +++ b/src/test/perl/PostgreSQL/Test/Kerberos.pm @@ -104,7 +104,7 @@ sub new my ($host, $hostaddr, $realm) = @_; my ($stdout, $krb5_version); - run_log [ $krb5_config, '--version' ], '>', \$stdout + run_log [ $krb5_config, '--version' ], '>' => \$stdout or BAIL_OUT("could not execute krb5-config"); BAIL_OUT("Heimdal is not supported") if $stdout =~ m/heimdal/; $stdout =~ m/Kerberos 5 release ([0-9]+\.[0-9]+)/ diff --git a/src/test/perl/PostgreSQL/Test/Utils.pm b/src/test/perl/PostgreSQL/Test/Utils.pm index efe0321a4ef..d1ad131eadf 100644 --- a/src/test/perl/PostgreSQL/Test/Utils.pm +++ b/src/test/perl/PostgreSQL/Test/Utils.pm @@ -20,7 +20,7 @@ PostgreSQL::Test::Utils - helper module for writing PostgreSQL's C<prove> tests. command_fails(['initdb', '--invalid-option'], 'command fails with invalid option'); my $tempdir = PostgreSQL::Test::Utils::tempdir; - command_ok('initdb', '-D', $tempdir); + command_ok('initdb', '--pgdata' => $tempdir); # Miscellanea print "on Windows" if $PostgreSQL::Test::Utils::windows_os; @@ -333,7 +333,7 @@ sub has_wal_read_bug return $Config{osname} eq 'linux' && $Config{archname} =~ /^sparc/ - && !run_log([ qw(df -x ext4), $tmp_check ], '>', '/dev/null', '2>&1'); + && !run_log([ qw(df -x ext4), $tmp_check ], '&>' => '/dev/null'); } =pod @@ -419,7 +419,7 @@ sub run_command { my ($cmd) = @_; my ($stdout, $stderr); - my $result = IPC::Run::run $cmd, '>', \$stdout, '2>', \$stderr; + my $result = IPC::Run::run $cmd, '>' => \$stdout, '2>' => \$stderr; chomp($stdout); chomp($stderr); return ($stdout, $stderr); @@ -723,8 +723,9 @@ sub scan_server_header my ($header_path, $regexp) = @_; my ($stdout, $stderr); - my $result = IPC::Run::run [ 'pg_config', '--includedir-server' ], '>', - \$stdout, '2>', \$stderr + my $result = IPC::Run::run [ 'pg_config', '--includedir-server' ], + '>' => \$stdout, + '2>' => \$stderr or die "could not execute pg_config"; chomp($stdout); $stdout =~ s/\r$//; @@ -761,8 +762,9 @@ sub check_pg_config { my ($regexp) = @_; my ($stdout, $stderr); - my $result = IPC::Run::run [ 'pg_config', '--includedir' ], '>', - \$stdout, '2>', \$stderr + my $result = IPC::Run::run [ 'pg_config', '--includedir' ], + '>' => \$stdout, + '2>' => \$stderr or die "could not execute pg_config"; chomp($stdout); $stdout =~ s/\r$//; @@ -925,8 +927,9 @@ sub program_help_ok my ($cmd) = @_; my ($stdout, $stderr); print("# Running: $cmd --help\n"); - my $result = IPC::Run::run [ $cmd, '--help' ], '>', \$stdout, '2>', - \$stderr; + my $result = IPC::Run::run [ $cmd, '--help' ], + '>' => \$stdout, + '2>' => \$stderr; ok($result, "$cmd --help exit code 0"); isnt($stdout, '', "$cmd --help goes to stdout"); is($stderr, '', "$cmd --help nothing to stderr"); @@ -956,8 +959,9 @@ sub program_version_ok my ($cmd) = @_; my ($stdout, $stderr); print("# Running: $cmd --version\n"); - my $result = IPC::Run::run [ $cmd, '--version' ], '>', \$stdout, '2>', - \$stderr; + my $result = IPC::Run::run [ $cmd, '--version' ], + '>' => \$stdout, + '2>' => \$stderr; ok($result, "$cmd --version exit code 0"); isnt($stdout, '', "$cmd --version goes to stdout"); is($stderr, '', "$cmd --version nothing to stderr"); @@ -979,9 +983,9 @@ sub program_options_handling_ok my ($cmd) = @_; my ($stdout, $stderr); print("# Running: $cmd --not-a-valid-option\n"); - my $result = IPC::Run::run [ $cmd, '--not-a-valid-option' ], '>', - \$stdout, - '2>', \$stderr; + my $result = IPC::Run::run [ $cmd, '--not-a-valid-option' ], + '>' => \$stdout, + '2>' => \$stderr; ok(!$result, "$cmd with invalid option nonzero exit code"); isnt($stderr, '', "$cmd with invalid option prints error message"); return; @@ -1002,7 +1006,7 @@ sub command_like my ($cmd, $expected_stdout, $test_name) = @_; my ($stdout, $stderr); print("# Running: " . join(" ", @{$cmd}) . "\n"); - my $result = IPC::Run::run $cmd, '>', \$stdout, '2>', \$stderr; + my $result = IPC::Run::run $cmd, '>' => \$stdout, '2>' => \$stderr; ok($result, "$test_name: exit code 0"); is($stderr, '', "$test_name: no stderr"); like($stdout, $expected_stdout, "$test_name: matches"); @@ -1031,7 +1035,7 @@ sub command_like_safe my $stdoutfile = File::Temp->new(); my $stderrfile = File::Temp->new(); print("# Running: " . join(" ", @{$cmd}) . "\n"); - my $result = IPC::Run::run $cmd, '>', $stdoutfile, '2>', $stderrfile; + my $result = IPC::Run::run $cmd, '>' => $stdoutfile, '2>' => $stderrfile; $stdout = slurp_file($stdoutfile); $stderr = slurp_file($stderrfile); ok($result, "$test_name: exit code 0"); @@ -1055,7 +1059,7 @@ sub command_fails_like my ($cmd, $expected_stderr, $test_name) = @_; my ($stdout, $stderr); print("# Running: " . join(" ", @{$cmd}) . "\n"); - my $result = IPC::Run::run $cmd, '>', \$stdout, '2>', \$stderr; + my $result = IPC::Run::run $cmd, '>' => \$stdout, '2>' => \$stderr; ok(!$result, "$test_name: exit code not 0"); like($stderr, $expected_stderr, "$test_name: matches"); return; @@ -1093,7 +1097,7 @@ sub command_checks_all # run command my ($stdout, $stderr); print("# Running: " . join(" ", @{$cmd}) . "\n"); - IPC::Run::run($cmd, '>', \$stdout, '2>', \$stderr); + IPC::Run::run($cmd, '>' => \$stdout, '2>' => \$stderr); # See http://perldoc.perl.org/perlvar.html#%24CHILD_ERROR my $ret = $?; |