summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVictor Stinner <victor.stinner@gmail.com>2014-02-10 10:47:50 (GMT)
committerVictor Stinner <victor.stinner@gmail.com>2014-02-10 10:47:50 (GMT)
commit1c143b19c88021e323d4a88315efc8879b1c631d (patch)
treed1e4160e098623b6a757353fcad2d094b05d952b
parent69a2547cd582370bcdc1754d10369cb6c7d6fcba (diff)
downloadcpython-1c143b19c88021e323d4a88315efc8879b1c631d.zip
cpython-1c143b19c88021e323d4a88315efc8879b1c631d.tar.gz
cpython-1c143b19c88021e323d4a88315efc8879b1c631d.tar.bz2
Issue #20505: Add debug info to analyze sporaric failures of
test_timeout_rounding() on Windows XP buildbots.
-rw-r--r--Lib/asyncio/base_events.py6
-rw-r--r--Lib/test/test_asyncio/test_events.py5
2 files changed, 10 insertions, 1 deletions
diff --git a/Lib/asyncio/base_events.py b/Lib/asyncio/base_events.py
index 558406c..4207a7e 100644
--- a/Lib/asyncio/base_events.py
+++ b/Lib/asyncio/base_events.py
@@ -633,7 +633,13 @@ class BaseEventLoop(events.AbstractEventLoop):
else:
logger.log(level, 'poll took %.3f seconds', t1-t0)
else:
+ t0 = self.time()
event_list = self._selector.select(timeout)
+ dt = self.time() - t0
+ if not event_list and timeout and dt < timeout:
+ print("asyncio: selector.select(%.3f ms) took %.3f ms"
+ % (timeout*1e3, dt*1e3),
+ file=sys.__stderr__, flush=True)
self._process_events(event_list)
# Handle 'later' callbacks that are ready.
diff --git a/Lib/test/test_asyncio/test_events.py b/Lib/test/test_asyncio/test_events.py
index 4fb4b25..e6a1c97 100644
--- a/Lib/test/test_asyncio/test_events.py
+++ b/Lib/test/test_asyncio/test_events.py
@@ -1182,7 +1182,10 @@ class EventLoopTestsMixin:
# may sleep at little bit less than timeout depending on the resolution
# of the clock used by the kernel. Tolerate 2 useless calls on these
# platforms.
- self.assertLessEqual(self.loop._run_once_counter, 8)
+ self.assertLessEqual(self.loop._run_once_counter, 8,
+ {'time_info': time.get_clock_info('time'),
+ 'monotonic_info': time.get_clock_info('monotonic'),
+ 'selector': self.loop._selector.__class__.__name__})
class SubprocessTestsMixin: