]> granicus.if.org Git - python/commitdiff
Issue #12041: Make test_wait3 more robust.
authorAntoine Pitrou <solipsis@pitrou.net>
Mon, 9 May 2011 19:17:02 +0000 (21:17 +0200)
committerAntoine Pitrou <solipsis@pitrou.net>
Mon, 9 May 2011 19:17:02 +0000 (21:17 +0200)
Lib/test/fork_wait.py
Lib/test/test_wait3.py
Misc/NEWS

index 1caab1c491c2d3ca97f3ee819a544cfb35738bae..88527df25e203318cdbf0e038398765f6e0c805a 100644 (file)
@@ -43,6 +43,7 @@ class ForkWait(unittest.TestCase):
         self.assertEqual(spid, cpid)
         self.assertEqual(status, 0, "cause = %d, exit = %d" % (status&0xff, status>>8))
 
+    @support.reap_threads
     def test_wait(self):
         for i in range(NUM_THREADS):
             _thread.start_new(self.f, (i,))
@@ -69,7 +70,8 @@ class ForkWait(unittest.TestCase):
             os._exit(n)
         else:
             # Parent
-            self.wait_impl(cpid)
-            # Tell threads to die
-            self.stop = 1
-            time.sleep(2*SHORTSLEEP) # Wait for threads to die
+            try:
+                self.wait_impl(cpid)
+            finally:
+                # Tell threads to die
+                self.stop = 1
index 786e60b32724a868b84d5518d09792148c917522..bd06c8d8bd3471ded4e78b45350f2c307f8d5373 100644 (file)
@@ -19,13 +19,16 @@ except AttributeError:
 
 class Wait3Test(ForkWait):
     def wait_impl(self, cpid):
-        for i in range(10):
+        # This many iterations can be required, since some previously run
+        # tests (e.g. test_ctypes) could have spawned a lot of children
+        # very quickly.
+        for i in range(30):
             # wait3() shouldn't hang, but some of the buildbots seem to hang
             # in the forking tests.  This is an attempt to fix the problem.
             spid, status, rusage = os.wait3(os.WNOHANG)
             if spid == cpid:
                 break
-            time.sleep(1.0)
+            time.sleep(0.1)
 
         self.assertEqual(spid, cpid)
         self.assertEqual(status, 0, "cause = %d, exit = %d" % (status&0xff, status>>8))
index 1c5ce69919525c97e8714fe86ec5cd9652ef54c5..97d6e0d1d3d3d96c8667c2ac97b10c169b6803ed 100644 (file)
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -619,6 +619,8 @@ Extension Modules
 Tests
 -----
 
+- Issue #12041: Make test_wait3 more robust.
+
 - Issue #11873: Change regex in test_compileall to fix occasional failures when
   when the randomly generated temporary path happened to match the regex.