From: Richard Oudkerk <shibturn@gmail.com>
Date: Sat, 12 Oct 2013 23:49:27 +0000 (+0100)
Subject: Make test_terminate() succeed or fail quickly.
X-Git-Tag: v3.4.0a4~140^2~1
X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=4f35079858695e4d74a82a304332f70a0aa98e92;p=python

Make test_terminate() succeed or fail quickly.

This does not fix #19227, but should stop the Gentoo buildbot from hanging.
---

diff --git a/Lib/test/test_multiprocessing.py b/Lib/test/test_multiprocessing.py
index 6d20782a15..2b3ddcfcda 100644
--- a/Lib/test/test_multiprocessing.py
+++ b/Lib/test/test_multiprocessing.py
@@ -270,7 +270,7 @@ class _TestProcess(BaseTestCase):
 
     @classmethod
     def _test_terminate(cls):
-        time.sleep(1000)
+        time.sleep(100)
 
     def test_terminate(self):
         if self.TYPE == 'threads':
@@ -296,7 +296,19 @@ class _TestProcess(BaseTestCase):
 
         p.terminate()
 
-        self.assertEqual(join(), None)
+        if hasattr(signal, 'alarm'):
+            def handler(*args):
+                raise RuntimeError('join took too long: pid=%s' % p.pid)
+            old_handler = signal.signal(signal.SIGALRM, handler)
+            try:
+                signal.alarm(10)
+                self.assertEqual(join(), None)
+                signal.alarm(0)
+            finally:
+                signal.signal(signal.SIGALRM, old_handler)
+        else:
+            self.assertEqual(join(), None)
+
         self.assertTimingAlmostEqual(join.elapsed, 0.0)
 
         self.assertEqual(p.is_alive(), False)