aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorFujii Masao <fujii@postgresql.org>2016-04-15 13:58:14 +0900
committerFujii Masao <fujii@postgresql.org>2016-04-15 13:58:14 +0900
commit36c1c91604cee164c6487afb99508f7ff8737b96 (patch)
tree6329708d87ed546eddeabcb7a72b44c758acf2e9 /src
parentf0e766bd7f77774075297526bd2da8f3de226c1f (diff)
downloadpostgresql-36c1c91604cee164c6487afb99508f7ff8737b96.tar.gz
postgresql-36c1c91604cee164c6487afb99508f7ff8737b96.zip
Make regression test for multiple synchronous standbys more stable.
The regression test checks whether the output of pg_stat_replication is expected or not after changing synchronous_standby_names and reloading the configuration file. Regarding this test logic, previously there was a timing issue which made the test result unstable. That is, pg_stat_replication could return unexpected result during small window after the configuration file was reloaded before new setting value took effect, and which made the test fail. This commit changes the test logic so that it uses a loop with a timeout to give some room for the test to pass. Now the test fails only when pg_stat_replication keeps returning unexpected result for 30 seconds. Michael Paquier
Diffstat (limited to 'src')
-rw-r--r--src/test/recovery/t/007_sync_rep.pl18
1 files changed, 17 insertions, 1 deletions
diff --git a/src/test/recovery/t/007_sync_rep.pl b/src/test/recovery/t/007_sync_rep.pl
index c257b6ea166..d551954bcbb 100644
--- a/src/test/recovery/t/007_sync_rep.pl
+++ b/src/test/recovery/t/007_sync_rep.pl
@@ -22,7 +22,23 @@ sub test_sync_state
$self->reload;
}
- my $result = $self->safe_psql('postgres', $check_sql);
+ my $timeout_max = 30;
+ my $timeout = 0;
+ my $result;
+
+ # A reload may take some time to take effect on busy machines,
+ # hence use a loop with a timeout to give some room for the test
+ # to pass.
+ while ($timeout < $timeout_max)
+ {
+ $result = $self->safe_psql('postgres', $check_sql);
+
+ last if ($result eq $expected);
+
+ $timeout++;
+ sleep 1;
+ }
+
is($result, $expected, $msg);
}