]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
Reliable Semaphore doctest. 1416/head
authorA. Jesse Jiryu Davis <jesse@mongodb.com>
Sun, 12 Apr 2015 17:28:46 +0000 (13:28 -0400)
committerA. Jesse Jiryu Davis <jesse@mongodb.com>
Sun, 12 Apr 2015 17:28:46 +0000 (13:28 -0400)
100ms sleep doesn't always order the test output on Travis slaves.

docs/locks.rst

index a2853898baa49905e43eafbe757e2bf30d602b32..39e9123add4ec7418ce4c5f254023788567173fd 100644 (file)
@@ -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