def test_cannot_failover_no_enabled_node(environment, capsys): test_utils.wait_for_replication_ok(environment, capsys) node = test_utils.disable_node(environment.replication, capsys) assert node['status'] == 'disabled' assert not fox.failover(environment.group) node = test_utils.enable_node(environment.replication, capsys) assert node['status'] == 'enabled'
def test_can_failover_node(environment, capsys): test_utils.wait_for_replication_ok(environment, capsys) fox.failover(environment.group) node = test_utils.get_node_from_list(environment.master, capsys) assert node['status'] == 'failed' node = test_utils.get_node_from_status(environment.replication, capsys) assert node['mode'] == 'read_write'
def test_can_switch_between_nodes(environment, capsys): test_utils.wait_for_replication_ok(environment, capsys) fox.switchover(environment.group) sleep(15) node = test_utils.get_node_from_status(environment.master, capsys) assert node['mode'] == 'read_only' node = test_utils.get_node_from_status(environment.replication, capsys) assert node['mode'] == 'read_write'
def test_cannot_failover_with_no_write_node(environment, capsys): test_utils.wait_for_replication_ok(environment, capsys) node = test_utils.set_read_only(environment.master, capsys) assert node['mode'] == 'read_only' fox.failover(environment.group) node = test_utils.get_node_from_list(environment.master, capsys) assert node['status'] == 'enabled' node = test_utils.get_node_from_status(environment.replication, capsys) assert node['mode'] == 'read_only'
def test_cannot_failover_node_down(environment, default_connection, capsys): test_utils.deactivate_node(environment.replication_node) try: inner_logic.failover(environment.group, default_connection) assert False except NodeIsDownError: assert True except: assert False finally: test_utils.activate_node(environment.replication_node) test_utils.wait_for_replication_ok(environment, capsys)
def test_switchover_twice(environment, capsys): test_utils.wait_for_replication_ok(environment, capsys) fox.switchover(environment.group) node = test_utils.get_node_from_status(environment.master, capsys) assert node['mode'] == 'read_only' node = test_utils.get_node_from_status(environment.replication, capsys) assert node['mode'] == 'read_write' fox.switchover(environment.group) node = test_utils.get_node_from_status(environment.master, capsys) assert node['mode'] == 'read_write' node = test_utils.get_node_from_status(environment.replication, capsys) assert node['mode'] == 'read_only'
def test_cannot_set_write_without_replication( environment, default_connection, capsys ): test_utils.wait_for_replication_ok(environment, capsys) node_replication = inner_logic.get_node( environment.group, environment.replication, default_connection ) assert node_replication.is_replication_running() node_replication.node_connection.query(Query.SQL_STOP_SLAVE) assert node_replication.is_replication_stopped() try: inner_logic.set_read_write(node_replication, default_connection) except ReplicationNotRunningError: assert True else: assert False, 'DO NOT RAISE ReplicationNotRunningError' finally: node_replication.node_connection.query(Query.SQL_START_SLAVE) test_utils.wait_for_replication_ok(environment, capsys) assert node_replication.is_replication_running()
def test_mode_read_write(environment, logical_replication_node, capsys): test_utils.wait_for_replication_ok(environment, capsys) foxha.fox.set_read_write(environment.group, environment.replication) assert logical_replication_node.fox_mode == 'read_write' assert not logical_replication_node.is_fox_mode_read_only() assert logical_replication_node.is_fox_mode_read_write()
def test_heartbeat(environment, capsys, physical_replication_node): test_utils.wait_for_replication_ok(environment, capsys) assert physical_replication_node.seconds_behind == 0