Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 52d42ad

Browse files
committed
tests: hold new pg socket open during basebackup
1 parent fa210c7 commit 52d42ad

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

Cluster.pm

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ use TestLib;
66
use Test::More;
77
use Cwd;
88
use IPC::Run;
9+
use Socket;
910

1011
sub new
1112
{
@@ -248,4 +249,31 @@ sub is_data_identic()
248249
return 1;
249250
}
250251

252+
sub hold_socket()
253+
{
254+
my ($self, $node_off) = @_;
255+
my $node = $self->{nodes}->[$node_off];
256+
my $iaddr = inet_aton('127.0.0.1');
257+
my $paddr = sockaddr_in($node->{_port}, $iaddr);
258+
my $proto = getprotobyname("tcp");
259+
260+
socket(my $sock, PF_INET, SOCK_STREAM, $proto)
261+
or die "socket failed: $!";
262+
263+
# As in postmaster, don't use SO_REUSEADDR on Windows
264+
setsockopt($sock, SOL_SOCKET, SO_REUSEADDR, pack("l", 1))
265+
unless $TestLib::windows_os;
266+
(bind($sock, $paddr) && listen($sock, SOMAXCONN))
267+
or die "socket bind and listen failed: $!";
268+
269+
return $sock;
270+
}
271+
272+
sub release_socket()
273+
{
274+
my ($self, $sock) = @_;
275+
close($sock);
276+
}
277+
278+
251279
1;

t/005_add_stop_node.pl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@
5656
my $pgb2= $cluster->pgbench_async(1, ('-N', '-n', -T => '3600', -c => '2') );
5757

5858
my $new_node_off = $cluster->add_node();
59+
my $sock = $cluster->hold_socket($new_node_off);
5960
my $connstr = $cluster->connstr($new_node_off);
6061
my $new_node_id = $cluster->safe_psql(0, "SELECT mtm.add_node('$connstr')");
6162

@@ -65,6 +66,7 @@
6566
$cluster->pgbench(0, ('-N', '-n', -t => '100') );
6667

6768
my $end_lsn = $cluster->backup_and_init(0, $new_node_off, $new_node_id);
69+
$cluster->release_socket($sock);
6870
$cluster->{nodes}->[$new_node_off]->start;
6971
$cluster->await_nodes( (3,0,1,2) );
7072
$cluster->safe_psql(0, "SELECT mtm.join_node('$new_node_id', '$end_lsn')");

0 commit comments

Comments
 (0)