diff options
author | Antoine Pitrou <solipsis@pitrou.net> | 2011-05-09 19:17:02 (GMT) |
---|---|---|
committer | Antoine Pitrou <solipsis@pitrou.net> | 2011-05-09 19:17:02 (GMT) |
commit | 606c3f548683a2fc8b7e53aeaafc279bb584eebf (patch) | |
tree | f9719378448a152ae4945fdbce23e576f79797dd | |
parent | 5aa878c61a7ecf043ac390672b997adbe7e340d0 (diff) | |
download | cpython-606c3f548683a2fc8b7e53aeaafc279bb584eebf.zip cpython-606c3f548683a2fc8b7e53aeaafc279bb584eebf.tar.gz cpython-606c3f548683a2fc8b7e53aeaafc279bb584eebf.tar.bz2 |
Issue #12041: Make test_wait3 more robust.
-rw-r--r-- | Lib/test/fork_wait.py | 10 | ||||
-rw-r--r-- | Lib/test/test_wait3.py | 7 | ||||
-rw-r--r-- | Misc/NEWS | 2 |
3 files changed, 13 insertions, 6 deletions
diff --git a/Lib/test/fork_wait.py b/Lib/test/fork_wait.py index 1caab1c..88527df 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 786e60b..bd06c8d 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)) @@ -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. |