v1-0003-TAP-test-replica-enters-infinite-data-request-loop.pl
application/x-perl
Filename: v1-0003-TAP-test-replica-enters-infinite-data-request-loop.pl
Type: application/x-perl
Part: 2
use strict;
use warnings FATAL => 'all';
use PostgreSQL::Test::Cluster;
use PostgreSQL::Test::Utils;
use Test::More;
print("\n1. Creating master\n");
my $master = PostgreSQL::Test::Cluster->new('master');
$master->init(allows_streaming => 1);
$master->append_conf(
'postgresql.conf', qq(
wal_compression = off
autovacuum = off
));
$master->start();
print("\n2. Creating replica from backup\n");
$master->backup('backup');
my $replica = PostgreSQL::Test::Cluster->new('replica');
$replica->init_from_backup($master, 'backup', has_streaming => 1);
$replica->start();
print("\n3. Fast timeline switching\n");
for my $i (1..20) {
print("\n=== Iteration $i ===\n");
for my $j (1..3) {
my $bg = $master->background_psql('postgres');
$bg->query(q{
SELECT pg_logical_emit_message(false, 'wal', repeat('W', 8000));
});
}
print("\nDemoting master\n");
$master->stop('immediate');
$master->set_standby_mode();
print("\nPromoting master\n");
$master->start();
$master->promote();
}
print("\n4. Waiting to confirm replica entered an infinite loop...\n");
sleep(10);
ok(1, "test finished");
done_testing();