示例#1
0
 def test_long_running_slow_stopping(self, popen, sleep):
     proc = popen.return_value
     proc.poll.return_value = None
     proc.wait.side_effect = [
         subprocess.TimeoutExpired('gogo', 2), lambda *_: True]
     runner('gogo', stop_event=make_event(is_set=True))
     self.assertTrue(proc.kill.called)
示例#2
0
 def test_long_running_but_quick_stopping(self, popen, sleep):
     proc = popen.return_value
     proc.poll.return_value = None
     proc.wait.return_value = 0
     runner('gogo', stop_event=make_event(is_set=True))
     proc.send_signal.assert_called_with(signal.SIGINT)
     self.assertEqual(popen.return_value.send_signal.call_count, 1)
示例#3
0
 def _short_cmd(self, popen, returncode):
     proc = popen.return_value
     proc.poll.return_value = True  # command completed
     proc.returncode = returncode
     stop = threading.Event()
     lines = []
     runner('gogo', stop_event=stop, log=lines.append)
     return lines
示例#4
0
 def test_long_command_no_status_output(self, popen, sleep):
     proc = popen.return_value
     proc.returncode = 1  # FIXME: what's the real exit code for a SIGKILL?
     proc.poll.return_value = False  # command not completed
     proc.wait.side_effect = [
         subprocess.TimeoutExpired('gogo', 2), lambda *_: True]
     log_mock = MagicMock()
     runner('gogo', stop_event=make_event(is_set=True), log=log_mock)
     self.assertEqual(log_mock.call_count, 4)  # calls to add in spacing