Ejemplo n.º 1
0
def test_plugin_tells_app_to_follow_new_leader(app):
    plugins = setup_plugins(app)
    app.initialize()
    plugins.reset_mock()
    app.follow(primary_conninfo=dict(host='127.0.0.9', port=5432))
    assert plugins.mock_calls == [
            call.pg_setup_replication(primary_conninfo={'port': 5432, 'host': '127.0.0.9'}),
            call.pg_reload()]
Ejemplo n.º 2
0
def test_plugin_tells_app_to_follow_new_leader(app):
    plugins = setup_plugins(app)
    app.initialize()
    plugins.reset_mock()
    app.follow(primary_conninfo=dict(host='127.0.0.9', port=5432))
    assert plugins.mock_calls == [
            call.pg_replication_role(),
            call.pg_setup_replication({'port': 5432, 'host': '127.0.0.9'}),
            call.pg_restart()] # must restart for new recovery.conf to take effect
Ejemplo n.º 3
0
def test_plugin_tells_app_to_follow_new_leader(app):
    plugins = setup_plugins(app)
    app.initialize()
    plugins.reset_mock()
    app.follow(primary_conninfo=dict(host='127.0.0.9', port=5432))
    assert plugins.mock_calls == [
        call.pg_replication_role(),
        call.pg_setup_replication({
            'port': 5432,
            'host': '127.0.0.9'
        }),
        call.pg_restart()
    ]  # must restart for new recovery.conf to take effect
Ejemplo n.º 4
0
def test_replica_bootstrap(app):
    plugins = setup_plugins(app,
            dcs_get_database_identifier='1234',
            pg_get_database_identifier='42')
    timeout = app.initialize()
    assert app._plugins.mock_calls ==  [
            call.initialize(),
            call.get_my_id(),
            # compare our id with the id in the DCS
            call.dcs_get_database_identifier(),
            call.pg_get_database_identifier(),
            # make sure postgresql is stopped
            call.pg_stop(),
            # postgresql restore
            call.pg_restore(),
            call.pg_setup_replication(),
            call.pg_am_i_replica()
            ]
    # shut down cleanly and immediately
    assert timeout == 0
Ejemplo n.º 5
0
def test_replica_bootstrap(app):
    plugins = setup_plugins(app, dcs_get_database_identifier='1234')
    plugins.pg_get_database_identifier.side_effect = ['42', '1234']
    timeout = app.initialize()
    assert plugins.mock_calls == [
        call.initialize(),
        call.get_my_id(),
        # compare our id with the id in the DCS
        call.dcs_get_database_identifier(),
        call.pg_get_database_identifier(),
        # make sure postgresql is stopped
        call.pg_stop(),
        # postgresql restore
        call.pg_initdb(),
        call.pg_restore(),
        call.pg_setup_replication(None),
        call.pg_get_database_identifier(),
        call.pg_replication_role()
    ]
    # shut down cleanly and immediately
    assert timeout == 0
Ejemplo n.º 6
0
def test_replica_bootstrap_fails_sanity_test(app):
    plugins = setup_plugins(app,
            pg_am_i_replica=False,
            dcs_get_database_identifier='1234',
            pg_get_database_identifier='42')
    timeout = app.initialize()
    assert app._plugins.mock_calls ==  [
            call.initialize(),
            call.get_my_id(),
            # compare our id with the id in the DCS
            call.dcs_get_database_identifier(),
            call.pg_get_database_identifier(),
            # make sure postgresql is stopped
            call.pg_stop(),
            # postgresql restore
            call.pg_restore(),
            call.pg_setup_replication(),
            call.pg_am_i_replica(),
            call.pg_reset(),
            ]
    # shut down after 5 seconds to try again
    assert timeout == 5
Ejemplo n.º 7
0
def test_replica_bootstrap_fails_sanity_test(app):
    plugins = setup_plugins(app,
                            pg_replication_role='master',
                            dcs_get_database_identifier='1234',
                            pg_get_database_identifier='42')
    timeout = app.initialize()
    assert plugins.mock_calls == [
        call.initialize(),
        call.get_my_id(),
        # compare our id with the id in the DCS
        call.dcs_get_database_identifier(),
        call.pg_get_database_identifier(),
        # make sure postgresql is stopped
        call.pg_stop(),
        # postgresql restore
        call.pg_initdb(),
        call.pg_restore(),
        call.pg_setup_replication(None),
        call.pg_get_database_identifier(),
        call.pg_replication_role(),
        call.pg_reset(),
    ]
    # shut down after 5 seconds to try again
    assert timeout == 5