Beispiel #1
0
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'
Beispiel #2
0
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'
Beispiel #3
0
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'
Beispiel #4
0
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'
Beispiel #5
0
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)
Beispiel #6
0
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'
Beispiel #7
0
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()
Beispiel #8
0
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()
Beispiel #9
0
def test_heartbeat(environment, capsys, physical_replication_node):
    test_utils.wait_for_replication_ok(environment, capsys)
    assert physical_replication_node.seconds_behind == 0