Exemplo n.º 1
0
def test_action_execute_called_correctly(node_scenario):
    node_scenario.schema = {
        "actions": [
            {
                "execute": {
                    "cmd": "echo lol",
                }
            },
        ]
    }
    mock = MagicMock(return_value={
        "some ip": {
            "ret_code": 1
        },
    })
    node_scenario.executor.execute = mock
    mock_item = MagicMock()
    mock_item.uid = '1'
    mock_item.name = 'node1'
    items = [mock_item, mock_item]
    node_scenario.act(items)
    assert mock.call_count == 2
    for i, call in enumerate(mock.call_args_list):
        args, kwargs = call
        assert args[0] == "echo lol"
        assert kwargs["nodes"] == [items[i]]
Exemplo n.º 2
0
def test_add_execute_failed_metric(node_scenario):
    node_scenario.schema = {
        "actions": [
            {
                "execute": {
                    "cmd": "test",
                }
            },
        ]
    }
    magic_mock = MagicMock(return_value={
        "some ip": {
            "ret_code": 1
        },
    })
    node_scenario.executor.execute = magic_mock

    mock_item = MagicMock()
    mock_item.uid = '1'
    mock_item.name = 'node1'
    items = [mock_item]

    with mock.patch('powerfulseal.metriccollectors.StdoutCollector.add_execute_failed_metric') \
            as metric_function:
        metric_function.assert_not_called()
        node_scenario.act(items)
        metric_function.assert_called_once_with(mock_item)
Exemplo n.º 3
0
def test_action_stop_doesnt_create_cleanup_action(node_scenario):
    node_scenario.schema["actions"] = [
        dict(
            stop=dict(
                autoRestart=False
            )
        )
    ]
    mock_item = MagicMock()
    node_scenario.act([mock_item])
    assert node_scenario.get_cleanup_actions() == []
Exemplo n.º 4
0
def test_calls_start_on_act(node_scenario, attr):
    node_scenario.schema = {
        "actions": [
            {
                attr: {}
            },
        ],
    }
    mock_item = MagicMock()
    mock_item.uid = '1'
    mock_item.name = 'node1'
    items = [mock_item, mock_item]
    node_scenario.act(items)
    method = getattr(node_scenario.driver, attr)
    assert method.call_count == 2
    for i, call in enumerate(method.call_args_list):
        args, kwargs = call
        assert args[0] is items[i]
Exemplo n.º 5
0
def test_action_stop_creates_cleanup_action(node_scenario):
    node_scenario.schema["actions"] = [dict(stop=dict(autoRestart=True))]
    mock_item = MagicMock()
    node_scenario.act([mock_item])
    cleanup = node_scenario.get_cleanup_actions()
    assert len(cleanup) == 1
    assert cleanup[0] is not node_scenario
    assert cleanup[0].schema is not node_scenario.schema
    assert cleanup[0].schema != node_scenario.schema
    assert cleanup[0].schema.get("matches") == node_scenario.schema.get(
        "matches")
    assert cleanup[0].schema.get("filters") == [{
        "property": {
            "name": "state",
            "value": "DOWN"
        }
    }]
    assert "start" in cleanup[0].schema["actions"][0]
Exemplo n.º 6
0
def test_add_node_stopped_metric(node_scenario):
    node_scenario.schema = {
        "actions": [
            {
                "stop": {}
            },
        ],
    }

    mock_item = MagicMock()
    mock_item.uid = '1'
    mock_item.name = 'node1'
    items = [mock_item]

    with mock.patch('powerfulseal.metriccollectors.StdoutCollector.add_node_stopped_metric') \
            as metric_function:
        metric_function.assert_not_called()
        node_scenario.act(items)
        metric_function.assert_called_once_with(mock_item)
Exemplo n.º 7
0
def test_calls_start_on_act_raising_exception_dont_bubble(node_scenario, attr):
    node_scenario.schema = {
        "actions": [
            {
                attr: {}
            },
        ],
    }
    mock_item = MagicMock()
    mock_item.uid = '1'
    mock_item.name = 'node1'
    items = [mock_item, mock_item]
    method = getattr(node_scenario.driver, attr)
    method.side_effect = Exception("something bad")
    node_scenario.logger = MagicMock()
    node_scenario.act(items)
    assert method.call_count == 2
    for i, call in enumerate(method.call_args_list):
        args, kwargs = call
        assert args[0] is items[i]
    assert node_scenario.logger.exception.call_count == 2
Exemplo n.º 8
0
def test_add_node_stop_failed_metric(node_scenario):
    node_scenario.schema = {
        "actions": [
            {
                "stop": {}
            },
        ],
    }

    mock_item = MagicMock()
    mock_item.uid = '1'
    mock_item.name = 'node1'
    items = [mock_item]

    method = getattr(node_scenario.driver, "stop")
    method.side_effect = Exception("something bad")

    with mock.patch('powerfulseal.metriccollectors.StdoutCollector.add_node_stop_failed_metric') \
            as metric_function:
        metric_function.assert_not_called()
        node_scenario.act(items)
        metric_function.assert_called_once_with(mock_item)