Skip to content

Commit ce044b4

Browse files
kvapkelvich
authored andcommitted
Make polls in tap-test 001 time out eventually.
1 parent f11c34e commit ce044b4

File tree

2 files changed

+24
-5
lines changed

2 files changed

+24
-5
lines changed

Cluster.pm

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,4 +155,22 @@ sub psql
155155
return $node->psql(@args);
156156
}
157157

158+
sub poll
159+
{
160+
my ($self, $poller, $dbname, $pollee, $tries, $delay) = @_;
161+
my $node = $self->{nodes}->[$poller];
162+
for (my $i = 0; $i < $tries; $i++) {
163+
my $psql_out;
164+
my $pollee_plus_1 = $pollee + 1;
165+
$self->psql($poller, $dbname, "select mtm.poll_node($pollee_plus_1, true);", stdout => \$psql_out);
166+
if ($psql_out eq "t") {
167+
return 1;
168+
}
169+
my $tries_left = $tries - $i - 1;
170+
diag("$poller poll for $pollee failed [$tries_left tries left]");
171+
sleep($delay);
172+
}
173+
return 0;
174+
}
175+
158176
1;

t/001_basic_recovery.pl

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
use warnings;
33
use Cluster;
44
use TestLib;
5-
use Test::More tests => 4;
5+
use Test::More tests => 7;
66

77
my $cluster = new Cluster(3);
88
$cluster->init();
@@ -78,10 +78,11 @@
7878
diag("inserting 7 on node 2 (can fail)");
7979
$cluster->psql(1, 'postgres', "insert into t values(7, 70);");
8080

81-
diag("polling node");
82-
$cluster->psql(0, 'postgres', "select mtm.poll_node(3);");
83-
$cluster->psql(1, 'postgres', "select mtm.poll_node(3);");
84-
$cluster->psql(2, 'postgres', "select mtm.poll_node(3);");
81+
diag("polling node 2");
82+
for (my $poller = 0; $poller < 3; $poller++) {
83+
my $pollee = 2;
84+
ok($cluster->poll($poller, 'postgres', $pollee, 10, 1), "node $pollee is online according to node $poller");
85+
}
8586

8687
diag("getting cluster state");
8788
$cluster->psql(0, 'postgres', "select * from mtm.get_cluster_state();", stdout => \$psql_out);

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy