Пример #1
0
    def test_no_timeout(self):
        """Tests when no timeout is specified."""

        common.wait_timeout(mock.Mock(), None)

        self.assert_n_calls(
            0, [self.mock.sleep, self.mock.getpgid, self.mock.killpg])
Пример #2
0
    def test_timeout(self):
        """Tests when the process must be killed."""
        self.proc.poll.return_value = None

        common.wait_timeout(self.proc, 5)

        self.mock.kill.assert_called_once_with(self.proc)
        self.assert_exact_calls(self.mock.sleep, [mock.call(0.5)] * 10)
Пример #3
0
    def test_die_before(self):
        """Tests when the process exits without needing to be killed."""
        self.proc.poll.side_effect = [None, None, None, 1]

        common.wait_timeout(self.proc, 5)

        self.mock.kill.assert_called_once_with(self.proc)
        self.assert_exact_calls(self.mock.sleep, [mock.call(0.5)] * 4)
Пример #4
0
  def test_kill_needed(self):
    """Tests when the process must be killed."""

    self.mock.getpgid.return_value = 345
    class ProcMock(object):
      pid = 1234
      def poll(self):
        return None
    proc = ProcMock()

    common.wait_timeout(proc, 5)

    self.assert_exact_calls(self.mock.killpg, [mock.call(345, 15)])
    self.assert_exact_calls(self.mock.getpgid, [mock.call(1234)])
    self.assert_n_calls(11, [self.mock.sleep])
Пример #5
0
  def test_kill_not_needed(self):
    """Tests when the process exits without needing to be killed."""

    class ProcMock(object):
      poll_results = [1, None, None, None]
      pid = 1234
      def poll(self):
        return self.poll_results.pop()
    proc = ProcMock()

    common.wait_timeout(proc, 5)

    self.assert_n_calls(0, [self.mock.killpg])
    self.assert_exact_calls(self.mock.sleep, [mock.call(0.5), mock.call(0.5),
                                              mock.call(0.5), mock.call(0.5)])
Пример #6
0
  def test_no_process(self):
    """Tests when process died maturely."""
    error = OSError()
    error.errno = 3  # No such process.
    self.mock.killpg.side_effect = error

    self.mock.getpgid.return_value = 345
    class ProcMock(object):
      pid = 1234
      def poll(self):
        return None
    proc = ProcMock()

    common.wait_timeout(proc, 5)

    self.assert_exact_calls(self.mock.killpg, [mock.call(345, 15)])
    self.assert_exact_calls(self.mock.getpgid, [mock.call(1234)])
    self.assert_n_calls(10, [self.mock.sleep])
Пример #7
0
  def test_kill_error(self):
    """Test error when killing."""
    error = OSError()
    error.errno = 4
    self.mock.killpg.side_effect = error

    self.mock.getpgid.return_value = 345
    class ProcMock(object):
      pid = 1234
      def poll(self):
        return None
    proc = ProcMock()

    with self.assertRaises(OSError):
      common.wait_timeout(proc, 5)

    self.assert_exact_calls(self.mock.killpg, [mock.call(345, 15)])
    self.assert_exact_calls(self.mock.getpgid, [mock.call(1234)])
    self.assert_n_calls(10, [self.mock.sleep])
Пример #8
0
 def test_ignore_kill_error(self):
     """Tests ignoring error from killing."""
     self.mock.kill.side_effect = Exception()
     common.wait_timeout(self.proc, 5)
     self.mock.kill.assert_called_once_with(self.proc)
Пример #9
0
 def test_no_timeout(self):
     """Test no timeout."""
     common.wait_timeout(self.proc, None)
     self.assertEqual(0, self.mock.sleep.call_count)
     self.assertEqual(0, self.proc.poll.call_count)