Issue #19305: try to fix sporadic test_asyncio failure on FreeBSD 10.0
This commit is contained in:
parent
0d9eefda34
commit
d20afad7d4
|
@ -7,6 +7,7 @@ import unittest.mock
|
|||
import os
|
||||
import sys
|
||||
import threading
|
||||
import time
|
||||
import unittest
|
||||
import unittest.mock
|
||||
from wsgiref.simple_server import make_server, WSGIRequestHandler, WSGIServer
|
||||
|
@ -46,6 +47,20 @@ def run_briefly(loop):
|
|||
gen.close()
|
||||
|
||||
|
||||
def run_until(loop, pred, timeout=None):
|
||||
if timeout is not None:
|
||||
deadline = time.time() + timeout
|
||||
while not pred():
|
||||
if timeout is not None:
|
||||
timeout = deadline - time.time()
|
||||
if timeout <= 0:
|
||||
return False
|
||||
loop.run_until_complete(tasks.sleep(timeout, loop=loop))
|
||||
else:
|
||||
run_briefly(loop)
|
||||
return True
|
||||
|
||||
|
||||
def run_once(loop):
|
||||
"""loop.stop() schedules _raise_stop_error()
|
||||
and run_forever() runs until _raise_stop_error() callback.
|
||||
|
|
|
@ -558,13 +558,14 @@ class EventLoopTestsMixin:
|
|||
self.assertEqual(host, '0.0.0.0')
|
||||
client = socket.socket()
|
||||
client.connect(('127.0.0.1', port))
|
||||
client.send(b'xxx')
|
||||
client.sendall(b'xxx')
|
||||
test_utils.run_briefly(self.loop)
|
||||
self.assertIsInstance(proto, MyProto)
|
||||
self.assertEqual('INITIAL', proto.state)
|
||||
test_utils.run_briefly(self.loop)
|
||||
self.assertEqual('CONNECTED', proto.state)
|
||||
test_utils.run_briefly(self.loop) # windows iocp
|
||||
test_utils.run_until(self.loop, lambda: proto.nbytes > 0,
|
||||
timeout=10)
|
||||
self.assertEqual(3, proto.nbytes)
|
||||
|
||||
# extra info is available
|
||||
|
@ -623,6 +624,8 @@ class EventLoopTestsMixin:
|
|||
self.assertIsInstance(proto, MyProto)
|
||||
test_utils.run_briefly(self.loop)
|
||||
self.assertEqual('CONNECTED', proto.state)
|
||||
test_utils.run_until(self.loop, lambda: proto.nbytes > 0,
|
||||
timeout=10)
|
||||
self.assertEqual(3, proto.nbytes)
|
||||
|
||||
# extra info is available
|
||||
|
|
Loading…
Reference in New Issue