1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
import time
from tests.pgautofailover_utils import QueryRunner
from tests.pgautofailover_utils import StatefulNode
class PGNodeTS(QueryRunner):
def run_sql_query(self, query, *args):
return super().run_sql_query(query, True, *args)
def connection_string(self):
return "postgresql://%s@%s:%s/%s" % (
self.username,
self.service_name,
self.port,
self.database,
)
class MonitorNodeTS(PGNodeTS):
def __init__(self, port, service_name):
self.port = port
self.service_name = service_name
self.monitor = self
self.username = "autoctl_node"
self.database = "pg_auto_failover"
class DataNodeTS(PGNodeTS, StatefulNode):
def __init__(self, port, service_name, monitor_node):
self.port = port
self.service_name = service_name
self.monitor = monitor_node
self.username = "docker"
self.database = "postgres"
def logger_name(self):
return self.service_name
def sleep(self, sleep_time):
time.sleep(sleep_time)
def print_debug_logs(self):
# no-op, can't get logs easily in this test-type
return
def get_state(self):
return super().get_state(
"node with port %s not found on the monitor" % self.port,
"""
SELECT reportedstate, goalstate
FROM pgautofailover.node
WHERE nodeport=%s
""",
self.port,
)
monitor = MonitorNodeTS(
"5432",
"monitor",
)
node1 = DataNodeTS(
"5433",
"node1",
monitor,
)
node2 = DataNodeTS(
"5434",
"node2",
monitor,
)
|