From: Ben Darnell Date: Mon, 23 Dec 2013 21:10:42 +0000 (-0500) Subject: Minor cleanups for import deadlock test: X-Git-Tag: v3.2.0b1~23 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5863342896094d00315ced18b749d898f7197973;p=thirdparty%2Ftornado.git Minor cleanups for import deadlock test: * Avoid _test.py suffix for file that doesn't contain test cases. * Resolve localhost instead of tornadoweb.org to avoid network dependency. * Tighten timeout and add an alarm so failed tests don't leave orphaned child processes. * Avoid busy loop while waiting for child to exit. --- diff --git a/tornado/test/netutil_test.py b/tornado/test/netutil_test.py index 2501eab50..d99e524c2 100644 --- a/tornado/test/netutil_test.py +++ b/tornado/test/netutil_test.py @@ -1,5 +1,6 @@ from __future__ import absolute_import, division, print_function, with_statement +import signal import socket from subprocess import Popen import sys @@ -63,21 +64,24 @@ class ThreadedResolverTest(AsyncTestCase, _ResolverTestMixin): @unittest.skipIf(futures is None, "futures module not present") class ThreadedResolverImportTest(unittest.TestCase): def test_import(self): + TIMEOUT = 5 + # Test for a deadlock when importing a module that runs the # ThreadedResolver at import-time. See resolve_test.py for # full explanation. command = [ sys.executable, '-c', - 'import tornado.test.resolve_test'] + 'import tornado.test.resolve_test_helper'] start = time.time() - popen = Popen(command) - while time.time() - start < 20: + popen = Popen(command, preexec_fn=lambda: signal.alarm(TIMEOUT)) + while time.time() - start < TIMEOUT: return_code = popen.poll() if return_code is not None: self.assertEqual(0, return_code) return # Success. + time.sleep(0.05) self.fail("import timed out") diff --git a/tornado/test/resolve_test.py b/tornado/test/resolve_test_helper.py similarity index 82% rename from tornado/test/resolve_test.py rename to tornado/test/resolve_test_helper.py index 5df8061b7..b4032fc4a 100644 --- a/tornado/test/resolve_test.py +++ b/tornado/test/resolve_test_helper.py @@ -8,4 +8,4 @@ from tornado.util import u # this deadlock. resolver = ThreadedResolver() -IOLoop.current().run_sync(lambda: resolver.resolve(u('tornadoweb.org'), 80)) +IOLoop.current().run_sync(lambda: resolver.resolve(u('localhost'), 80))