]> git.ipfire.org Git - thirdparty/tornado.git/commitdiff
Disable the "bad_host" tests on CaresResolver
authorBen Darnell <ben@bendarnell.com>
Sun, 29 Dec 2013 01:11:20 +0000 (20:11 -0500)
committerBen Darnell <ben@bendarnell.com>
Sun, 29 Dec 2013 01:11:20 +0000 (20:11 -0500)
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

index 777fb4257fe0b531142c6479abf07c7ba0069ab0..27f57fb2f20071335367a4e289b4c43994c73e4b 100644 (file)
@@ -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)