From 556a25da5d52bdf119a1d199df45da50257c41ea Mon Sep 17 00:00:00 2001 From: "A. Jesse Jiryu Davis" Date: Sun, 12 Apr 2015 13:28:46 -0400 Subject: [PATCH] Reliable Semaphore doctest. 100ms sleep doesn't always order the test output on Travis slaves. --- docs/locks.rst | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/docs/locks.rst b/docs/locks.rst index a2853898b..39e9123ad 100644 --- a/docs/locks.rst +++ b/docs/locks.rst @@ -119,14 +119,24 @@ multithreaded app.)* .. testsetup:: semaphore - from tornado import gen + from collections import deque - # Ensure reliable doctest output. - waits = [0.1, 0.2, 0.1] + from tornado import gen, ioloop + from tornado.concurrent import Future + + # Ensure reliable doctest output: resolve Futures one at a time. + futures_q = deque([Future() for _ in range(3)]) @gen.coroutine + def simulator(futures): + for f in futures: + yield gen.moment + f.set_result(None) + + ioloop.IOLoop.current().add_callback(simulator, list(futures_q)) + def use_some_resource(): - yield gen.sleep(waits.pop()) + return futures_q.popleft() .. testcode:: semaphore -- 2.47.2