diff options
-rw-r--r-- | Lib/test/test_asyncore.py | 54 |
1 files changed, 29 insertions, 25 deletions
diff --git a/Lib/test/test_asyncore.py b/Lib/test/test_asyncore.py index ba89f125db..98a0819707 100644 --- a/Lib/test/test_asyncore.py +++ b/Lib/test/test_asyncore.py @@ -320,40 +320,44 @@ class DispatcherWithSendTests(unittest.TestCase): def tearDown(self): asyncore.close_all() + @support.reap_threads def test_send(self): - self.evt = threading.Event() - self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - self.sock.settimeout(3) - self.port = support.bind_port(self.sock) + evt = threading.Event() + sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + sock.settimeout(3) + port = support.bind_port(sock) cap = BytesIO() - args = (self.evt, cap, self.sock) - threading.Thread(target=capture_server, args=args).start() - - # wait a little longer for the server to initialize (it sometimes - # refuses connections on slow machines without this wait) - time.sleep(0.2) + args = (evt, cap, sock) + t = threading.Thread(target=capture_server, args=args) + t.start() + try: + # wait a little longer for the server to initialize (it sometimes + # refuses connections on slow machines without this wait) + time.sleep(0.2) - data = b"Suppose there isn't a 16-ton weight?" - d = dispatcherwithsend_noread() - d.create_socket(socket.AF_INET, socket.SOCK_STREAM) - d.connect((HOST, self.port)) + data = b"Suppose there isn't a 16-ton weight?" + d = dispatcherwithsend_noread() + d.create_socket(socket.AF_INET, socket.SOCK_STREAM) + d.connect((HOST, port)) - # give time for socket to connect - time.sleep(0.1) + # give time for socket to connect + time.sleep(0.1) - d.send(data) - d.send(data) - d.send(b'\n') + d.send(data) + d.send(data) + d.send(b'\n') - n = 1000 - while d.out_buffer and n > 0: - asyncore.poll() - n -= 1 + n = 1000 + while d.out_buffer and n > 0: + asyncore.poll() + n -= 1 - self.evt.wait() + evt.wait() - self.assertEqual(cap.getvalue(), data*2) + self.assertEqual(cap.getvalue(), data*2) + finally: + t.join() class DispatcherWithSendTests_UsePoll(DispatcherWithSendTests): |