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]]
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)
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() == []
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]
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]
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)
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
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)