def test_execute_does_not_raise_on_converge_error(
        patched_converge, patched_print_info, molecule_instance):
    patched_converge.return_value = (1, None)

    i = idempotence.Idempotence({}, {}, molecule_instance)
    result = i.execute()

    msg = 'Skipping due to errors during converge.'
    patched_print_info.assert_called_with(msg)
    assert (1, None) == result
Exemple #2
0
def test_execute_raises_on_idempotence_failure(patched_converge,
                                               patched_logger_error,
                                               molecule_instance):
    patched_converge.return_value = None, 'changed=2'

    i = idempotence.Idempotence({}, {}, molecule_instance)
    with pytest.raises(SystemExit):
        i.execute()

    msg = 'Idempotence test failed.'
    patched_logger_error.assert_called_with(msg)
Exemple #3
0
def test_execute_does_not_raise_on_idempotence_failure(patched_converge,
                                                       patched_logger_error,
                                                       molecule_instance):
    patched_converge.return_value = None, 'changed=2'

    i = idempotence.Idempotence({}, {}, molecule_instance)
    result = i.execute(exit=False)

    msg = 'Idempotence test failed.'
    patched_logger_error.assert_called_with(msg)
    assert (1, None) == result
def test_execute_with_successful_idempotence(
        patched_converge, patched_print_info, molecule_instance):
    i = idempotence.Idempotence({}, {}, molecule_instance)
    result = i.execute()

    msg = 'Idempotence test in progress (can take a few minutes) ...'
    patched_print_info.assert_called_once_with(msg)

    patched_converge.assert_called_with(
        idempotent=True, exit=False, hide_errors=True)
    assert (None, None) == result
Exemple #5
0
def test_non_idempotent_tasks_idempotent(molecule_instance):
    output = """
PLAY [all] ***********************************************************
GATHERING FACTS ******************************************************
ok: [check-command-01]
TASK: [Idempotence test] *********************************************
ok: [check-command-01]
PLAY RECAP ***********************************************************
check-command-01: ok=3    changed=0    unreachable=0    failed=0
"""
    i = idempotence.Idempotence({}, {}, molecule_instance)
    ret = i._non_idempotent_tasks(output)

    assert ret == []
def test_execute_raises_on_idempotence_failure(
        mocker, patched_converge, patched_logger_error, molecule_instance):
    output = 'check-command-01: ok=2    changed=1    unreachable=0    failed=0'
    patched_converge.return_value = None, output

    i = idempotence.Idempotence({}, {}, molecule_instance)
    with pytest.raises(SystemExit):
        i.execute()

    expected_calls = [
        mocker.call('Idempotence test failed because of the following tasks:'),
        mocker.call('')
    ]
    assert patched_logger_error.mock_calls == expected_calls
def test_execute_does_not_raise_on_idempotence_failure(
        mocker, patched_converge, patched_logger_error, molecule_instance):
    output = 'check-command-01: ok=2    changed=1    unreachable=0    failed=0'
    patched_converge.return_value = None, output

    i = idempotence.Idempotence({}, {}, molecule_instance)
    result = i.execute(exit=False)

    expected_calls = [
        mocker.call('Idempotence test failed because of the following tasks:'),
        mocker.call('')
    ]
    assert patched_logger_error.mock_calls == expected_calls
    assert (1, None) == result
Exemple #8
0
def test_non_idempotent_tasks_00(molecule_instance):
    """Ensures an empty list is returned when the playbook is idempotent."""
    output = textwrap.dedent("""\
        PLAY [all] ***********************************************************
        GATHERING FACTS ******************************************************
        ok: [check-command-01]
        TASK: [Idempotence test] *********************************************
        ok: [check-command-01]
        PLAY RECAP ***********************************************************
        check-command-01: ok=3    changed=0    unreachable=0    failed=0
        """)
    i = idempotence.Idempotence({}, {}, molecule_instance)
    ret = i._non_idempotent_tasks(output)

    assert ret == []
Exemple #9
0
def test_non_idempotent_tasks_01(molecule_instance):
    """Ensures a non-idempotent task is detected."""
    output = textwrap.dedent("""\
        PLAY [all] ***********************************************************
        GATHERING FACTS ******************************************************
        ok: [check-command-01]
        TASK: [Idempotence test] *********************************************
        changed: [check-command-01]
        PLAY RECAP ***********************************************************
        check-command-01: ok=2    changed=1    unreachable=0    failed=0
        """)
    i = idempotence.Idempotence({}, {}, molecule_instance)
    ret = i._non_idempotent_tasks(output)

    assert ret == ['* Idempotence test']
def _instance(patched_config_validate, config_instance):
    config_instance.state.change_state("converged", True)

    return idempotence.Idempotence(config_instance)
Exemple #11
0
def idempotence_instance(config_instance):
    config_instance.state.change_state('converged', True)

    return idempotence.Idempotence(config_instance)