mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
Issue #17992: Add timeouts to asyncore and asynchat tests so that they won't accidentally hang.
This commit is contained in:
parent
0d4f08cee3
commit
3cb09064a3
3 changed files with 35 additions and 10 deletions
|
@ -15,6 +15,7 @@ except ImportError:
|
|||
|
||||
HOST = support.HOST
|
||||
SERVER_QUIT = b'QUIT\n'
|
||||
TIMEOUT = 3.0
|
||||
|
||||
if threading:
|
||||
class echo_server(threading.Thread):
|
||||
|
@ -123,7 +124,9 @@ class TestAsynchat(unittest.TestCase):
|
|||
c.push(b"I'm not dead yet!" + term)
|
||||
c.push(SERVER_QUIT)
|
||||
asyncore.loop(use_poll=self.usepoll, count=300, timeout=.01)
|
||||
s.join()
|
||||
s.join(timeout=TIMEOUT)
|
||||
if s.is_alive():
|
||||
self.fail("join() timed out")
|
||||
|
||||
self.assertEqual(c.contents, [b"hello world", b"I'm not dead yet!"])
|
||||
|
||||
|
@ -154,7 +157,9 @@ class TestAsynchat(unittest.TestCase):
|
|||
c.push(data)
|
||||
c.push(SERVER_QUIT)
|
||||
asyncore.loop(use_poll=self.usepoll, count=300, timeout=.01)
|
||||
s.join()
|
||||
s.join(timeout=TIMEOUT)
|
||||
if s.is_alive():
|
||||
self.fail("join() timed out")
|
||||
|
||||
self.assertEqual(c.contents, [data[:termlen]])
|
||||
|
||||
|
@ -174,7 +179,9 @@ class TestAsynchat(unittest.TestCase):
|
|||
c.push(data)
|
||||
c.push(SERVER_QUIT)
|
||||
asyncore.loop(use_poll=self.usepoll, count=300, timeout=.01)
|
||||
s.join()
|
||||
s.join(timeout=TIMEOUT)
|
||||
if s.is_alive():
|
||||
self.fail("join() timed out")
|
||||
|
||||
self.assertEqual(c.contents, [])
|
||||
self.assertEqual(c.buffer, data)
|
||||
|
@ -186,7 +193,9 @@ class TestAsynchat(unittest.TestCase):
|
|||
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)
|
||||
s.join()
|
||||
s.join(timeout=TIMEOUT)
|
||||
if s.is_alive():
|
||||
self.fail("join() timed out")
|
||||
|
||||
self.assertEqual(c.contents, [b"hello world", b"I'm not dead yet!"])
|
||||
|
||||
|
@ -196,7 +205,9 @@ class TestAsynchat(unittest.TestCase):
|
|||
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)
|
||||
s.join()
|
||||
s.join(timeout=TIMEOUT)
|
||||
if s.is_alive():
|
||||
self.fail("join() timed out")
|
||||
|
||||
self.assertEqual(c.contents, [b"hello world", b"I'm not dead yet!"])
|
||||
|
||||
|
@ -207,7 +218,9 @@ class TestAsynchat(unittest.TestCase):
|
|||
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)
|
||||
s.join()
|
||||
s.join(timeout=TIMEOUT)
|
||||
if s.is_alive():
|
||||
self.fail("join() timed out")
|
||||
|
||||
self.assertEqual(c.contents,
|
||||
[b"hello world", b"", b"I'm not dead yet!"])
|
||||
|
@ -226,7 +239,9 @@ class TestAsynchat(unittest.TestCase):
|
|||
# where the server echoes all of its data before we can check that it
|
||||
# got any down below.
|
||||
s.start_resend_event.set()
|
||||
s.join()
|
||||
s.join(timeout=TIMEOUT)
|
||||
if s.is_alive():
|
||||
self.fail("join() timed out")
|
||||
|
||||
self.assertEqual(c.contents, [])
|
||||
# the server might have been able to send a byte or two back, but this
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue