mirror of
https://github.com/postgres/postgres.git
synced 2025-05-09 18:21:05 +03:00
Avoid tests which crash the calling process on Windows
Certain recovery tests use the Perl IPC::Run module's start/kill_kill method of processing. On at least some versions of perl this causes the whole process and its caller to crash. If we ever find a better way of doing these tests they can be re-enabled on this platform. This does not affect Mingw or Cygwin builds, which use a different perl and a different shell and so are not affected.
This commit is contained in:
parent
024711bb54
commit
734cb4c2e7
@ -8,6 +8,7 @@ use warnings;
|
|||||||
use PostgresNode;
|
use PostgresNode;
|
||||||
use TestLib;
|
use TestLib;
|
||||||
use Test::More tests => 16;
|
use Test::More tests => 16;
|
||||||
|
use Config;
|
||||||
|
|
||||||
# Initialize master node
|
# Initialize master node
|
||||||
my $node_master = get_new_node('master');
|
my $node_master = get_new_node('master');
|
||||||
@ -72,13 +73,19 @@ is($node_master->psql('otherdb', "SELECT lsn FROM pg_logical_slot_peek_changes('
|
|||||||
$node_master->safe_psql('otherdb', qq[SELECT pg_create_logical_replication_slot('otherdb_slot', 'test_decoding');]);
|
$node_master->safe_psql('otherdb', qq[SELECT pg_create_logical_replication_slot('otherdb_slot', 'test_decoding');]);
|
||||||
|
|
||||||
# make sure you can't drop a slot while active
|
# make sure you can't drop a slot while active
|
||||||
my $pg_recvlogical = IPC::Run::start(['pg_recvlogical', '-d', $node_master->connstr('otherdb'), '-S', 'otherdb_slot', '-f', '-', '--start']);
|
SKIP:
|
||||||
$node_master->poll_query_until('otherdb', "SELECT EXISTS (SELECT 1 FROM pg_replication_slots WHERE slot_name = 'otherdb_slot' AND active_pid IS NOT NULL)");
|
{
|
||||||
is($node_master->psql('postgres', 'DROP DATABASE otherdb'), 3,
|
# some Windows Perls at least don't like IPC::Run's start/kill_kill regime.
|
||||||
'dropping a DB with inactive logical slots fails');
|
skip "Test fails on Windows perl", 2 if $Config{osname} eq 'MSWin32';
|
||||||
$pg_recvlogical->kill_kill;
|
|
||||||
is($node_master->slot('otherdb_slot')->{'slot_name'}, undef,
|
my $pg_recvlogical = IPC::Run::start(['pg_recvlogical', '-d', $node_master->connstr('otherdb'), '-S', 'otherdb_slot', '-f', '-', '--start']);
|
||||||
'logical slot still exists');
|
$node_master->poll_query_until('otherdb', "SELECT EXISTS (SELECT 1 FROM pg_replication_slots WHERE slot_name = 'otherdb_slot' AND active_pid IS NOT NULL)");
|
||||||
|
is($node_master->psql('postgres', 'DROP DATABASE otherdb'), 3,
|
||||||
|
'dropping a DB with inactive logical slots fails');
|
||||||
|
$pg_recvlogical->kill_kill;
|
||||||
|
is($node_master->slot('otherdb_slot')->{'slot_name'}, undef,
|
||||||
|
'logical slot still exists');
|
||||||
|
}
|
||||||
|
|
||||||
$node_master->poll_query_until('otherdb', "SELECT EXISTS (SELECT 1 FROM pg_replication_slots WHERE slot_name = 'otherdb_slot' AND active_pid IS NULL)");
|
$node_master->poll_query_until('otherdb', "SELECT EXISTS (SELECT 1 FROM pg_replication_slots WHERE slot_name = 'otherdb_slot' AND active_pid IS NULL)");
|
||||||
is($node_master->psql('postgres', 'DROP DATABASE otherdb'), 0,
|
is($node_master->psql('postgres', 'DROP DATABASE otherdb'), 0,
|
||||||
|
@ -5,7 +5,17 @@ use strict;
|
|||||||
use warnings;
|
use warnings;
|
||||||
use PostgresNode;
|
use PostgresNode;
|
||||||
use TestLib;
|
use TestLib;
|
||||||
use Test::More tests => 3;
|
use Test::More;
|
||||||
|
use Config;
|
||||||
|
if ($Config{osname} eq 'MSWin32')
|
||||||
|
{
|
||||||
|
# some Windows Perls at least don't like IPC::Run's start/kill_kill regime.
|
||||||
|
plan skip_all => "Test fails on Windows perl";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
plan tests => 3;
|
||||||
|
}
|
||||||
|
|
||||||
my $node = get_new_node('master');
|
my $node = get_new_node('master');
|
||||||
$node->init(allows_streaming => 1);
|
$node->init(allows_streaming => 1);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user