bpo-31234: fork_wait tests now join threads (#3139) (#3535)

fork_wait.py tests now joins threads, to not leak running threads in
the background.

(cherry picked from commit c99d41f9c0)
This commit is contained in:
Victor Stinner 2017-09-13 03:26:54 -07:00 committed by GitHub
parent 40996d3f6f
commit 42f7e0d8b0
1 changed files with 17 additions and 6 deletions

View File

@ -13,8 +13,9 @@ the same application, the present example should work just fine. DC
"""
import os, sys, time, unittest
import test.test_support as test_support
thread = test_support.import_module('thread')
import test.support as support
threading = support.import_module('threading')
LONGSLEEP = 2
SHORTSLEEP = 0.5
@ -23,8 +24,19 @@ NUM_THREADS = 4
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
del self.threads[:]
support.threading_cleanup(*self._threading_key)
def f(self, id):
while not self.stop:
@ -48,7 +60,9 @@ class ForkWait(unittest.TestCase):
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)
time.sleep(LONGSLEEP)
@ -74,6 +88,3 @@ class ForkWait(unittest.TestCase):
else:
# Parent
self.wait_impl(cpid)
# Tell threads to die
self.stop = 1
time.sleep(2*SHORTSLEEP) # Wait for threads to die