mirror of
https://github.com/postgres/postgres.git
synced 2025-05-02 11:44:50 +03:00
pg_rewind: test new --write-recovery-conf functionality
Author: Alexey Kondratov Reviewed-by: Paul Guo Discussion: https://postgr.es/m/2f726102-3f1e-bf16-061e-501919473ace@postgrespro.ru
This commit is contained in:
parent
927474ce1a
commit
7524c78874
@ -1,7 +1,7 @@
|
||||
use strict;
|
||||
use warnings;
|
||||
use TestLib;
|
||||
use Test::More tests => 10;
|
||||
use Test::More tests => 11;
|
||||
|
||||
use FindBin;
|
||||
use lib $FindBin::RealBin;
|
||||
|
@ -1,7 +1,7 @@
|
||||
use strict;
|
||||
use warnings;
|
||||
use TestLib;
|
||||
use Test::More tests => 6;
|
||||
use Test::More tests => 7;
|
||||
|
||||
use FindBin;
|
||||
use lib $FindBin::RealBin;
|
||||
|
@ -3,7 +3,7 @@
|
||||
use strict;
|
||||
use warnings;
|
||||
use TestLib;
|
||||
use Test::More tests => 4;
|
||||
use Test::More tests => 5;
|
||||
|
||||
use File::Find;
|
||||
|
||||
|
@ -14,7 +14,7 @@ if ($windows_os)
|
||||
}
|
||||
else
|
||||
{
|
||||
plan tests => 4;
|
||||
plan tests => 5;
|
||||
}
|
||||
|
||||
use FindBin;
|
||||
|
@ -149,7 +149,7 @@ sub start_master
|
||||
|
||||
# Create custom role which is used to run pg_rewind, and adjust its
|
||||
# permissions to the minimum necessary.
|
||||
$node_master->psql(
|
||||
$node_master->safe_psql(
|
||||
'postgres', "
|
||||
CREATE ROLE rewind_user LOGIN;
|
||||
GRANT EXECUTE ON function pg_catalog.pg_ls_dir(text, boolean, boolean)
|
||||
@ -266,9 +266,19 @@ sub run_pg_rewind
|
||||
[
|
||||
'pg_rewind', "--debug",
|
||||
"--source-server", $standby_connstr,
|
||||
"--target-pgdata=$master_pgdata", "--no-sync"
|
||||
"--target-pgdata=$master_pgdata", "-R",
|
||||
"--no-sync"
|
||||
],
|
||||
'pg_rewind remote');
|
||||
|
||||
# Check that standby.signal has been created.
|
||||
ok(-e "$master_pgdata/standby.signal");
|
||||
|
||||
# Now, when pg_rewind apparently succeeded with minimal permissions,
|
||||
# add REPLICATION privilege. So we could test that new standby
|
||||
# is able to connect to the new master with generated config.
|
||||
$node_standby->safe_psql('postgres',
|
||||
"ALTER ROLE rewind_user WITH REPLICATION;");
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -289,13 +299,15 @@ sub run_pg_rewind
|
||||
"unable to set permissions for $master_pgdata/postgresql.conf");
|
||||
|
||||
# Plug-in rewound node to the now-promoted standby node
|
||||
my $port_standby = $node_standby->port;
|
||||
$node_master->append_conf(
|
||||
'postgresql.conf', qq(
|
||||
primary_conninfo='port=$port_standby'
|
||||
));
|
||||
if ($test_mode ne "remote")
|
||||
{
|
||||
my $port_standby = $node_standby->port;
|
||||
$node_master->append_conf(
|
||||
'postgresql.conf', qq(
|
||||
primary_conninfo='port=$port_standby'));
|
||||
|
||||
$node_master->set_standby_mode();
|
||||
$node_master->set_standby_mode();
|
||||
}
|
||||
|
||||
# Restart the master to check that rewind went correctly
|
||||
$node_master->start;
|
||||
|
Loading…
x
Reference in New Issue
Block a user