mirror of https://github.com/postgres/postgres
Fix new recovery test for use under msys
Commit caba8f0d43
wasn't quite right for msys, as demonstrated by
several buildfarm animals, including jacana and fairywren. We need to
use the msys perl in the archive command, but call it in such a way that
Windows will understand the path. Furthermore, inside the copy script we
need to convert a Windows path to an msys path.
This commit is contained in:
parent
a78edd4b42
commit
dee7ad20d0
|
@ -10,6 +10,8 @@ use strict;
|
|||
use warnings;
|
||||
use PostgresNode;
|
||||
use TestLib;
|
||||
|
||||
use File::Basename;
|
||||
use FindBin;
|
||||
use Test::More tests => 1;
|
||||
|
||||
|
@ -23,12 +25,17 @@ my $node_primary = get_new_node('primary');
|
|||
# get there.
|
||||
$node_primary->init(allows_streaming => 1, has_archiving => 1);
|
||||
my $perlbin = $^X;
|
||||
$perlbin =~ s{\\}{\\\\}g if ($TestLib::windows_os);
|
||||
if ($^O eq 'msys')
|
||||
{
|
||||
$perlbin = TestLib::perl2host(dirname($^X)) . '\\' . basename($^X);
|
||||
}
|
||||
$perlbin =~ s!\\!/!g if $TestLib::windows_os;
|
||||
my $archivedir_primary = $node_primary->archive_dir;
|
||||
$node_primary->append_conf('postgresql.conf', qq(
|
||||
archive_command = '$perlbin "$FindBin::RealBin/cp_history_files" "%p" "$archivedir_primary/%f"'
|
||||
archive_command = '"$perlbin" "$FindBin::RealBin/cp_history_files" "%p" "$archivedir_primary/%f"'
|
||||
wal_keep_segments=8
|
||||
));
|
||||
local $ENV{PERL_BADLANG}=0;
|
||||
$node_primary->start;
|
||||
|
||||
# Take backup from primary
|
||||
|
@ -85,7 +92,8 @@ $node_standby->safe_psql('postgres', 'SELECT pg_switch_xlog()');
|
|||
# WAL segment, this is enough to guarantee that the history file was
|
||||
# archived.
|
||||
my $archive_wait_query =
|
||||
"SELECT '$walfile_to_be_archived' <= last_archived_wal FROM pg_stat_archiver;";
|
||||
"SELECT coalesce('$walfile_to_be_archived' <= last_archived_wal, false) " .
|
||||
"FROM pg_stat_archiver";
|
||||
$node_standby->poll_query_until('postgres', $archive_wait_query)
|
||||
or die "Timed out while waiting for WAL segment to be archived";
|
||||
my $last_archived_wal_file = $walfile_to_be_archived;
|
||||
|
|
|
@ -7,4 +7,11 @@ use warnings;
|
|||
die "wrong number of arguments" if @ARGV != 2;
|
||||
my ($source, $target) = @ARGV;
|
||||
exit if $source !~ /history/;
|
||||
if ($^O eq 'msys')
|
||||
{
|
||||
# make a windows path look like an msys path if necessary
|
||||
$source =~ s!^([A-Za-z]):!'/' . lc($1)!e;
|
||||
$source =~ s!\\!/!g;
|
||||
}
|
||||
|
||||
copy($source, $target) or die "couldn't copy $source to $target: $!";
|
||||
|
|
Loading…
Reference in New Issue