From 24f2a5093f5a361e071b663ea153d82b05ae42b5 Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Mon, 14 Jul 2014 21:29:23 +0200 Subject: [PATCH] Issue #21645: Add debug code to analyze a failure on FreeBSD 9 --- Lib/test/test_asyncio/test_streams.py | 50 ++++++++++++++++++--------- 1 file changed, 33 insertions(+), 17 deletions(-) diff --git a/Lib/test/test_asyncio/test_streams.py b/Lib/test/test_asyncio/test_streams.py index 8adc3b29215..0929495ea7f 100644 --- a/Lib/test/test_asyncio/test_streams.py +++ b/Lib/test/test_asyncio/test_streams.py @@ -609,25 +609,41 @@ os.close(fd) rfd, wfd = os.pipe() args = [sys.executable, '-c', code, str(wfd)] - pipe = open(rfd, 'rb', 0) - reader = asyncio.StreamReader(loop=self.loop, limit=1) - protocol = asyncio.StreamReaderProtocol(reader, loop=self.loop) - transport, _ = self.loop.run_until_complete( - self.loop.connect_read_pipe(lambda: protocol, pipe)) - - watcher = asyncio.SafeChildWatcher() - watcher.attach_loop(self.loop) + # FIXME: Debug code for issue #21645 + import logging + self.loop.set_debug(True) + logger = logging.getLogger('asyncio') + log_level = logger.level try: - asyncio.set_child_watcher(watcher) - proc = self.loop.run_until_complete( - asyncio.create_subprocess_exec(*args, pass_fds={wfd}, loop=self.loop)) - self.loop.run_until_complete(proc.wait()) - finally: - asyncio.set_child_watcher(None) + log_handler = logging.StreamHandler(sys.stderr) + logger.addHandler(log_handler) + logger.setLevel(logging.DEBUG) + # FIXME: Debug code for issue #21645 --- - os.close(wfd) - data = self.loop.run_until_complete(reader.read(-1)) - self.assertEqual(data, b'data') + pipe = open(rfd, 'rb', 0) + reader = asyncio.StreamReader(loop=self.loop, limit=1) + protocol = asyncio.StreamReaderProtocol(reader, loop=self.loop) + transport, _ = self.loop.run_until_complete( + self.loop.connect_read_pipe(lambda: protocol, pipe)) + + watcher = asyncio.SafeChildWatcher() + watcher.attach_loop(self.loop) + try: + asyncio.set_child_watcher(watcher) + proc = self.loop.run_until_complete( + asyncio.create_subprocess_exec(*args, pass_fds={wfd}, loop=self.loop)) + self.loop.run_until_complete(proc.wait()) + finally: + asyncio.set_child_watcher(None) + + os.close(wfd) + data = self.loop.run_until_complete(reader.read(-1)) + self.assertEqual(data, b'data') + finally: + # FIXME: Debug code for issue #21645 + logger.removeHandler(log_handler) + logger.setLevel(log_level) + # FIXME: Debug code for issue #21645 --- if __name__ == '__main__':