Skip to content

Commit

Permalink
bpo-38614: Use default join_thread() timeout in tests (pythonGH-17559)
Browse files Browse the repository at this point in the history
Tests no longer pass a timeout value to join_thread() of
test.support: use the default join_thread() timeout instead
(SHORT_TIMEOUT constant of test.support).
  • Loading branch information
vstinner authored Dec 10, 2019
1 parent 07871b2 commit bbc8b79
Show file tree
Hide file tree
Showing 7 changed files with 26 additions and 34 deletions.
17 changes: 8 additions & 9 deletions Lib/test/test_asynchat.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@

HOST = support.HOST
SERVER_QUIT = b'QUIT\n'
TIMEOUT = 3.0


class echo_server(threading.Thread):
Expand Down Expand Up @@ -122,7 +121,7 @@ def line_terminator_check(self, term, server_chunk):
c.push(b"I'm not dead yet!" + term)
c.push(SERVER_QUIT)
asyncore.loop(use_poll=self.usepoll, count=300, timeout=.01)
support.join_thread(s, timeout=TIMEOUT)
support.join_thread(s)

self.assertEqual(c.contents, [b"hello world", b"I'm not dead yet!"])

Expand Down Expand Up @@ -153,7 +152,7 @@ def numeric_terminator_check(self, termlen):
c.push(data)
c.push(SERVER_QUIT)
asyncore.loop(use_poll=self.usepoll, count=300, timeout=.01)
support.join_thread(s, timeout=TIMEOUT)
support.join_thread(s)

self.assertEqual(c.contents, [data[:termlen]])

Expand All @@ -173,7 +172,7 @@ def test_none_terminator(self):
c.push(data)
c.push(SERVER_QUIT)
asyncore.loop(use_poll=self.usepoll, count=300, timeout=.01)
support.join_thread(s, timeout=TIMEOUT)
support.join_thread(s)

self.assertEqual(c.contents, [])
self.assertEqual(c.buffer, data)
Expand All @@ -185,7 +184,7 @@ def test_simple_producer(self):
p = asynchat.simple_producer(data+SERVER_QUIT, buffer_size=8)
c.push_with_producer(p)
asyncore.loop(use_poll=self.usepoll, count=300, timeout=.01)
support.join_thread(s, timeout=TIMEOUT)
support.join_thread(s)

self.assertEqual(c.contents, [b"hello world", b"I'm not dead yet!"])

Expand All @@ -195,7 +194,7 @@ def test_string_producer(self):
data = b"hello world\nI'm not dead yet!\n"
c.push_with_producer(data+SERVER_QUIT)
asyncore.loop(use_poll=self.usepoll, count=300, timeout=.01)
support.join_thread(s, timeout=TIMEOUT)
support.join_thread(s)

self.assertEqual(c.contents, [b"hello world", b"I'm not dead yet!"])

Expand All @@ -206,7 +205,7 @@ def test_empty_line(self):
c.push(b"hello world\n\nI'm not dead yet!\n")
c.push(SERVER_QUIT)
asyncore.loop(use_poll=self.usepoll, count=300, timeout=.01)
support.join_thread(s, timeout=TIMEOUT)
support.join_thread(s)

self.assertEqual(c.contents,
[b"hello world", b"", b"I'm not dead yet!"])
Expand All @@ -225,7 +224,7 @@ def test_close_when_done(self):
# where the server echoes all of its data before we can check that it
# got any down below.
s.start_resend_event.set()
support.join_thread(s, timeout=TIMEOUT)
support.join_thread(s)

self.assertEqual(c.contents, [])
# the server might have been able to send a byte or two back, but this
Expand All @@ -246,7 +245,7 @@ def test_push(self):
self.assertRaises(TypeError, c.push, 'unicode')
c.push(SERVER_QUIT)
asyncore.loop(use_poll=self.usepoll, count=300, timeout=.01)
support.join_thread(s, timeout=TIMEOUT)
support.join_thread(s)
self.assertEqual(c.contents, [b'bytes', b'bytes', b'bytes'])


Expand Down
2 changes: 1 addition & 1 deletion Lib/test/test_asyncio/test_events.py
Original file line number Diff line number Diff line change
Expand Up @@ -699,7 +699,7 @@ def client():
proto.transport.close()
lsock.close()

support.join_thread(thread, timeout=1)
support.join_thread(thread)
self.assertFalse(thread.is_alive())
self.assertEqual(proto.state, 'CLOSED')
self.assertEqual(proto.nbytes, len(message))
Expand Down
5 changes: 2 additions & 3 deletions Lib/test/test_asyncore.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
raise unittest.SkipTest("test is not helpful for PGO")


TIMEOUT = 3
HAS_UNIX_SOCKETS = hasattr(socket, 'AF_UNIX')

class dummysocket:
Expand Down Expand Up @@ -360,7 +359,7 @@ def test_send(self):

self.assertEqual(cap.getvalue(), data*2)
finally:
support.join_thread(t, timeout=TIMEOUT)
support.join_thread(t)


@unittest.skipUnless(hasattr(asyncore, 'file_wrapper'),
Expand Down Expand Up @@ -788,7 +787,7 @@ def test_quick_connect(self):
except OSError:
pass
finally:
support.join_thread(t, timeout=TIMEOUT)
support.join_thread(t)

class TestAPI_UseIPv4Sockets(BaseTestAPI):
family = socket.AF_INET
Expand Down
2 changes: 1 addition & 1 deletion Lib/test/test_imaplib.py
Original file line number Diff line number Diff line change
Expand Up @@ -238,7 +238,7 @@ def _cleanup(self):
# cleanup the server
self.server.shutdown()
self.server.server_close()
support.join_thread(self.thread, 3.0)
support.join_thread(self.thread)
# Explicitly clear the attribute to prevent dangling thread
self.thread = None

Expand Down
26 changes: 10 additions & 16 deletions Lib/test/test_logging.py
Original file line number Diff line number Diff line change
Expand Up @@ -869,16 +869,13 @@ def serve_forever(self, poll_interval):
"""
asyncore.loop(poll_interval, map=self._map)

def stop(self, timeout=None):
def stop(self):
"""
Stop the thread by closing the server instance.
Wait for the server thread to terminate.
:param timeout: How long to wait for the server thread
to terminate.
"""
self.close()
support.join_thread(self._thread, timeout)
support.join_thread(self._thread)
self._thread = None
asyncore.close_all(map=self._map, ignore_all=True)

Expand Down Expand Up @@ -922,16 +919,13 @@ def serve_forever(self, poll_interval):
self.ready.set()
super(ControlMixin, self).serve_forever(poll_interval)

def stop(self, timeout=None):
def stop(self):
"""
Tell the server thread to stop, and wait for it to do so.
:param timeout: How long to wait for the server thread
to terminate.
"""
self.shutdown()
if self._thread is not None:
support.join_thread(self._thread, timeout)
support.join_thread(self._thread)
self._thread = None
self.server_close()
self.ready.clear()
Expand Down Expand Up @@ -1699,7 +1693,7 @@ def tearDown(self):
self.root_logger.removeHandler(self.sock_hdlr)
self.sock_hdlr.close()
if self.server:
self.server.stop(2.0)
self.server.stop()
finally:
BaseTest.tearDown(self)

Expand Down Expand Up @@ -1736,7 +1730,7 @@ def test_noserver(self):
# one-second timeout on socket.create_connection() (issue #16264).
self.sock_hdlr.retryStart = 2.5
# Kill the server
self.server.stop(2.0)
self.server.stop()
# The logging call should try to connect, which should fail
try:
raise RuntimeError('Deliberate mistake')
Expand Down Expand Up @@ -1810,7 +1804,7 @@ def tearDown(self):
"""Shutdown the UDP server."""
try:
if self.server:
self.server.stop(2.0)
self.server.stop()
if self.sock_hdlr:
self.root_logger.removeHandler(self.sock_hdlr)
self.sock_hdlr.close()
Expand Down Expand Up @@ -1891,7 +1885,7 @@ def tearDown(self):
"""Shutdown the server."""
try:
if self.server:
self.server.stop(2.0)
self.server.stop()
if self.sl_hdlr:
self.root_logger.removeHandler(self.sl_hdlr)
self.sl_hdlr.close()
Expand Down Expand Up @@ -2028,7 +2022,7 @@ def test_output(self):
self.assertEqual(d['funcName'], ['test_output'])
self.assertEqual(d['msg'], [msg])

self.server.stop(2.0)
self.server.stop()
self.root_logger.removeHandler(self.h_hdlr)
self.h_hdlr.close()

Expand Down Expand Up @@ -3228,7 +3222,7 @@ def setup_via_listener(self, text, verify=None):
finally:
t.ready.wait(2.0)
logging.config.stopListening()
support.join_thread(t, 2.0)
support.join_thread(t)

def test_listen_config_10_ok(self):
with support.captured_stdout() as output:
Expand Down
4 changes: 2 additions & 2 deletions Lib/test/test_queue.py
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ def do_blocking_test(self, block_func, block_args, trigger_func, trigger_args):
block_func)
return self.result
finally:
support.join_thread(thread, 10) # make sure the thread terminates
support.join_thread(thread) # make sure the thread terminates

# Call this instead if block_func is supposed to raise an exception.
def do_exceptional_blocking_test(self,block_func, block_args, trigger_func,
Expand All @@ -79,7 +79,7 @@ def do_exceptional_blocking_test(self,block_func, block_args, trigger_func,
self.fail("expected exception of kind %r" %
expected_exception_class)
finally:
support.join_thread(thread, 10) # make sure the thread terminates
support.join_thread(thread) # make sure the thread terminates
if not thread.startedEvent.is_set():
self.fail("trigger thread ended but event never set")

Expand Down
4 changes: 2 additions & 2 deletions Lib/test/test_sched.py
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ def test_enter_concurrent(self):
self.assertEqual(q.get(timeout=TIMEOUT), 5)
self.assertTrue(q.empty())
timer.advance(1000)
support.join_thread(t, timeout=TIMEOUT)
support.join_thread(t)
self.assertTrue(q.empty())
self.assertEqual(timer.time(), 5)

Expand Down Expand Up @@ -137,7 +137,7 @@ def test_cancel_concurrent(self):
self.assertEqual(q.get(timeout=TIMEOUT), 4)
self.assertTrue(q.empty())
timer.advance(1000)
support.join_thread(t, timeout=TIMEOUT)
support.join_thread(t)
self.assertTrue(q.empty())
self.assertEqual(timer.time(), 4)

Expand Down

0 comments on commit bbc8b79

Please sign in to comment.