From: Antoine Pitrou Date: Mon, 9 May 2011 19:17:02 +0000 (+0200) Subject: Issue #12041: Make test_wait3 more robust. X-Git-Tag: v3.3.0a1~2330 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=606c3f548683a2fc8b7e53aeaafc279bb584eebf;p=thirdparty%2FPython%2Fcpython.git Issue #12041: Make test_wait3 more robust. --- diff --git a/Lib/test/fork_wait.py b/Lib/test/fork_wait.py index 1caab1c491c2..88527df25e20 100644 --- a/Lib/test/fork_wait.py +++ b/Lib/test/fork_wait.py @@ -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 diff --git a/Lib/test/test_wait3.py b/Lib/test/test_wait3.py index 786e60b32724..bd06c8d8bd34 100644 --- a/Lib/test/test_wait3.py +++ b/Lib/test/test_wait3.py @@ -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)) diff --git a/Misc/NEWS b/Misc/NEWS index 1c5ce6991952..97d6e0d1d3d3 100644 --- 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.