Skip to content

Commit

Permalink
bpo-31234: fork_wait tests now join threads (#3139)
Browse files Browse the repository at this point in the history
fork_wait.py tests now joins threads, to not leak running threads in
the background.
  • Loading branch information
vstinner committed Aug 18, 2017
1 parent d73a960 commit c99d41f
Showing 1 changed file with 17 additions and 8 deletions.
25 changes: 17 additions & 8 deletions Lib/test/fork_wait.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@

import os, sys, time, unittest
import test.support as support
_thread = support.import_module('_thread')

threading = support.import_module('threading')

LONGSLEEP = 2
SHORTSLEEP = 0.5
Expand All @@ -20,8 +21,19 @@
class ForkWait(unittest.TestCase):

def setUp(self):
self._threading_key = support.threading_setup()
self.alive = {}
self.stop = 0
self.threads = []

def tearDown(self):
# Stop threads
self.stop = 1
for thread in self.threads:
thread.join()
thread = None
self.threads.clear()
support.threading_cleanup(*self._threading_key)

def f(self, id):
while not self.stop:
Expand All @@ -43,10 +55,11 @@ def wait_impl(self, cpid):
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,))
thread = threading.Thread(target=self.f, args=(i,))
thread.start()
self.threads.append(thread)

# busy-loop to wait for threads
deadline = time.monotonic() + 10.0
Expand Down Expand Up @@ -75,8 +88,4 @@ def test_wait(self):
os._exit(n)
else:
# Parent
try:
self.wait_impl(cpid)
finally:
# Tell threads to die
self.stop = 1
self.wait_impl(cpid)

0 comments on commit c99d41f

Please sign in to comment.