def test_run_error(self, mock_popen, mock_timer, communicate_streams, expected_error_details, expected_data_stderr): popen_instance = mock_popen.return_value popen_instance.communicate.return_value = communicate_streams popen_instance.returncode = 1 task = mock.MagicMock() sys_call_hook = sys_call.SysCallHook(task, "/bin/bash -c 'ls'", {"iteration": 1}) sys_call_hook.run_sync() self.assertEqual( {"error": {"details": expected_error_details, "etype": "n/a", "msg": "Subprocess returned 1"}, "finished_at": fakes.FakeTimer().finish_timestamp(), "output": { "additive": [], "complete": [{"chart_plugin": "TextArea", "data": ["RetCode: 1", "StdOut: foo out", expected_data_stderr], "description": "Args: /bin/bash -c 'ls'", "title": "System call"}]}, "started_at": fakes.FakeTimer().timestamp(), "status": "failed", "triggered_by": {"iteration": 1}}, sys_call_hook.result()) mock_popen.assert_called_once_with( ["/bin/bash", "-c", "ls"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)
def test_run(self, mock_popen, mock_timer, stdout, expected): popen_instance = mock_popen.return_value popen_instance.returncode = 0 popen_instance.communicate.return_value = (stdout, "") hook = sys_call.SysCallHook(mock.Mock(), "foo cmd", {"iteration": 1}) hook.run_sync() self.assertEqual( {"finished_at": fakes.FakeTimer().finish_timestamp(), "output": expected, "started_at": fakes.FakeTimer().timestamp(), "status": consts.HookStatus.SUCCESS, "triggered_by": {"iteration": 1}}, hook.result()) mock_popen.assert_called_once_with(["foo", "cmd"], stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True)