Exclude unhealthy nodes when choosing where to clone from (#313)

Node MUST have tag clonefrom: true, be in the 'running' state and also
we should not try to clone from itself.
This commit is contained in:
Alexander Kukushkin
2016-09-21 09:42:48 +02:00
committed by GitHub
parent 7ca55359de
commit 10c7fa41f3
5 changed files with 32 additions and 4 deletions
+1
View File
@@ -8,6 +8,7 @@ Scenario: check a base backup and streaming replication from a replica
And replication works from postgres0 to postgres1 after 20 seconds
And I create label with "postgres0" in postgres0 data directory
And I create label with "postgres1" in postgres1 data directory
And postgres1 has state=running in dcs after 12 seconds
And I configure and start postgres2 with a tag replicatefrom postgres1
Then replication works from postgres0 to postgres2 after 30 seconds
And there is a label with "postgres1" in postgres2 data directory
+17
View File
@@ -1,3 +1,6 @@
import json
import time
from behave import step, then
@@ -15,3 +18,17 @@ def check_label(context, content, name):
@step('I create label with "{content:w}" in {name:w} data directory')
def write_label(context, content, name):
context.pctl.write_label(name, content)
@step('{name:w} has {key:w}={value:w} in dcs after {time_limit:d} seconds')
def check_member(context, name, key, value, time_limit):
max_time = time.time() + int(time_limit)
while time.time() < max_time:
try:
response = json.loads(context.dcs_ctl.query('members/' + name))
if response.get(key) == value:
return
except Exception:
pass
time.sleep(1)
assert False, "{0} does not have {1}={2} in dcs after {3} seconds".format(name, key, value, time_limit)