summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAntoine Pitrou <solipsis@pitrou.net>2013-10-20 01:51:25 +0200
committerAntoine Pitrou <solipsis@pitrou.net>2013-10-20 01:51:25 +0200
commitd20afad7d4f2d712da5f37a5108979d2a0c5d8ca (patch)
tree3f9d5a6a517955fb3ca7acbccb2726e3f3338fd4
parent0d9eefda3486057dbafd2453f03da39b667ca71d (diff)
downloadcpython-git-d20afad7d4f2d712da5f37a5108979d2a0c5d8ca.tar.gz
Issue #19305: try to fix sporadic test_asyncio failure on FreeBSD 10.0
-rw-r--r--Lib/asyncio/test_utils.py15
-rw-r--r--Lib/test/test_asyncio/test_events.py7
2 files changed, 20 insertions, 2 deletions
diff --git a/Lib/asyncio/test_utils.py b/Lib/asyncio/test_utils.py
index 91bbedbafa..d650c4476a 100644
--- a/Lib/asyncio/test_utils.py
+++ b/Lib/asyncio/test_utils.py
@@ -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.
diff --git a/Lib/test/test_asyncio/test_events.py b/Lib/test/test_asyncio/test_events.py
index 098cf71f89..f0f4810f67 100644
--- a/Lib/test/test_asyncio/test_events.py
+++ b/Lib/test/test_asyncio/test_events.py
@@ -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