]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
tcpclient_test: Attempt to deflake on windows 1999/head
authorBen Darnell <ben@bendarnell.com>
Sun, 2 Apr 2017 14:51:41 +0000 (10:51 -0400)
committerBen Darnell <ben@bendarnell.com>
Sun, 2 Apr 2017 14:51:41 +0000 (10:51 -0400)
It appears that on windows the client connect call can sometimes
succeed before the server has processed the request, so introduce
additional synchronization.

tornado/test/tcpclient_test.py

index f36d9a0a5edf70922e8e12800a8afca4f9e7e2bd..76206e85ea3735ad94103e209c6fabe7819ae86e 100644 (file)
@@ -22,6 +22,7 @@ import socket
 
 from tornado.concurrent import Future
 from tornado.netutil import bind_sockets, Resolver
+from tornado.queues import Queue
 from tornado.tcpclient import TCPClient, _Connector
 from tornado.tcpserver import TCPServer
 from tornado.testing import AsyncTestCase, gen_test
@@ -36,12 +37,14 @@ class TestTCPServer(TCPServer):
     def __init__(self, family):
         super(TestTCPServer, self).__init__()
         self.streams = []
+        self.queue = Queue()
         sockets = bind_sockets(None, 'localhost', family)
         self.add_sockets(sockets)
         self.port = sockets[0].getsockname()[1]
 
     def handle_stream(self, stream, address):
         self.streams.append(stream)
+        self.queue.put(stream)
 
     def stop(self):
         super(TestTCPServer, self).stop()
@@ -86,9 +89,10 @@ class TCPClientTest(AsyncTestCase):
         stream = yield self.client.connect(host, port,
                                            source_ip=source_ip,
                                            source_port=source_port)
+        server_stream = yield self.server.queue.get()
         with closing(stream):
             stream.write(b"hello")
-            data = yield self.server.streams[0].read_bytes(5)
+            data = yield server_stream.read_bytes(5)
             self.assertEqual(data, b"hello")
 
     def test_connect_ipv4_ipv4(self):