mirror of
https://github.com/python/cpython.git
synced 2025-08-04 08:59:19 +00:00
Issue #12041: Make test_wait3 more robust.
This commit is contained in:
parent
5aa878c61a
commit
606c3f5486
3 changed files with 13 additions and 6 deletions
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue