From 9d57a0cdfc5bd738017fc74891720f0bd03e28e3 Mon Sep 17 00:00:00 2001 From: Ben Darnell Date: Sat, 28 Dec 2013 20:11:20 -0500 Subject: [PATCH] Disable the "bad_host" tests on CaresResolver This is an unfortunate hack, but c-ares doesn't handle fake NXDOMAIN responses in the same way as other resolvers. --- tornado/test/netutil_test.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/tornado/test/netutil_test.py b/tornado/test/netutil_test.py index 777fb4257..27f57fb2f 100644 --- a/tornado/test/netutil_test.py +++ b/tornado/test/netutil_test.py @@ -32,6 +32,13 @@ else: class _ResolverTestMixin(object): + def skipOnCares(self): + # Some DNS-hijacking ISPs (e.g. Time Warner) return non-empty results + # with an NXDOMAIN status code. Most resolvers treat this as an error; + # C-ares returns the results, making the "bad_host" tests unreliable. + if self.resolver.__class__.__name__ == 'CaresResolver': + self.skipTest("CaresResolver doesn't recognize fake NXDOMAIN") + def test_localhost(self): self.resolver.resolve('localhost', 80, callback=self.stop) result = self.wait() @@ -45,6 +52,7 @@ class _ResolverTestMixin(object): addrinfo) def test_bad_host(self): + self.skipOnCares() def handler(exc_typ, exc_val, exc_tb): self.stop(exc_val) return True # Halt propagation. @@ -57,6 +65,7 @@ class _ResolverTestMixin(object): @gen_test def test_future_interface_bad_host(self): + self.skipOnCares() with self.assertRaises(Exception): yield self.resolver.resolve('doesntexist', 80, socket.AF_UNSPEC) -- 2.47.2