diff options
author | Vitor Pereira <vmsousapereira@gmail.com> | 2017-07-18 15:34:23 (GMT) |
---|---|---|
committer | Antoine Pitrou <pitrou@free.fr> | 2017-07-18 15:34:23 (GMT) |
commit | ba75af713078966cc594fc7f0809ed53c532c58f (patch) | |
tree | d55ae73192947f840b4e28457fec3d7fc32f875e /Lib/test/_test_multiprocessing.py | |
parent | f474c5a3f3c1fbc0383800b88e8518d43a52d1d1 (diff) | |
download | cpython-ba75af713078966cc594fc7f0809ed53c532c58f.zip cpython-ba75af713078966cc594fc7f0809ed53c532c58f.tar.gz cpython-ba75af713078966cc594fc7f0809ed53c532c58f.tar.bz2 |
bpo-30794: added kill() method to multiprocessing.Process (#2528)
* bpo-30794: added kill() method to multiprocessing.Process
* Added entries to documentation and NEWS
* Refactored test_terminate and test_kill
* Fix SIGTERM and SIGKILL being used on Windows for the tests
* Added "versionadded" marker to the documentation
* Fix trailing whitespace in doc
Diffstat (limited to 'Lib/test/_test_multiprocessing.py')
-rw-r--r-- | Lib/test/_test_multiprocessing.py | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/Lib/test/_test_multiprocessing.py b/Lib/test/_test_multiprocessing.py index d83b5a7..0515730 100644 --- a/Lib/test/_test_multiprocessing.py +++ b/Lib/test/_test_multiprocessing.py @@ -277,18 +277,18 @@ class _TestProcess(BaseTestCase): self.assertNotIn(p, self.active_children()) @classmethod - def _test_terminate(cls): + def _sleep_some(cls): time.sleep(100) @classmethod def _test_sleep(cls, delay): time.sleep(delay) - def test_terminate(self): + def _kill_process(self, meth): if self.TYPE == 'threads': self.skipTest('test not appropriate for {}'.format(self.TYPE)) - p = self.Process(target=self._test_terminate) + p = self.Process(target=self._sleep_some) p.daemon = True p.start() @@ -309,7 +309,7 @@ class _TestProcess(BaseTestCase): # XXX maybe terminating too soon causes the problems on Gentoo... time.sleep(1) - p.terminate() + meth(p) if hasattr(signal, 'alarm'): # On the Gentoo buildbot waitpid() often seems to block forever. @@ -333,9 +333,17 @@ class _TestProcess(BaseTestCase): p.join() - # sometimes get p.exitcode == 0 on Windows ... + return p.exitcode + + def test_terminate(self): + exitcode = self._kill_process(multiprocessing.Process.terminate) + if os.name != 'nt': + self.assertEqual(exitcode, -signal.SIGTERM) + + def test_kill(self): + exitcode = self._kill_process(multiprocessing.Process.kill) if os.name != 'nt': - self.assertEqual(p.exitcode, -signal.SIGTERM) + self.assertEqual(exitcode, -signal.SIGKILL) def test_cpu_count(self): try: @@ -462,7 +470,7 @@ class _TestProcess(BaseTestCase): for p in procs: self.assertEqual(p.exitcode, 0) - procs = [self.Process(target=self._test_terminate) + procs = [self.Process(target=self._sleep_some) for i in range(N)] for p in procs: p.start() |