]> granicus.if.org Git - python/commitdiff
Make test_terminate() succeed or fail quickly.
authorRichard Oudkerk <shibturn@gmail.com>
Sat, 12 Oct 2013 23:49:27 +0000 (00:49 +0100)
committerRichard Oudkerk <shibturn@gmail.com>
Sat, 12 Oct 2013 23:49:27 +0000 (00:49 +0100)
This does not fix #19227, but should stop the Gentoo buildbot from hanging.

Lib/test/test_multiprocessing.py

index 6d20782a1585315862cbffa9aed5e63b9b7894c8..2b3ddcfcda7bf22a58254653012917e2778b2f38 100644 (file)
@@ -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)