summaryrefslogtreecommitdiff
path: root/tests/test_resolver.py
diff options
context:
space:
mode:
authorBob Halley <halley@dnspython.org>2020-05-28 08:02:52 -0700
committerBob Halley <halley@dnspython.org>2020-05-28 08:02:52 -0700
commit62eb54ffc4fbeb8f83749afd674209dbd1de03eb (patch)
tree72a06e88df70c95767459d589dd475273346498e /tests/test_resolver.py
parent21dbd52f22a49b6198aece61842568d7d0e2837c (diff)
downloaddnspython-62eb54ffc4fbeb8f83749afd674209dbd1de03eb.tar.gz
only do multiple I/O backend testing for live tests, as testing everything 3 times is pointless work
Diffstat (limited to 'tests/test_resolver.py')
-rw-r--r--tests/test_resolver.py138
1 files changed, 71 insertions, 67 deletions
diff --git a/tests/test_resolver.py b/tests/test_resolver.py
index af0e932..23653b1 100644
--- a/tests/test_resolver.py
+++ b/tests/test_resolver.py
@@ -167,71 +167,6 @@ class BaseResolverTests(unittest.TestCase):
del answer[0]
self.assertRaises(IndexError, bad)
- @unittest.skipIf(not _network_available, "Internet not reachable")
- def testZoneForName1(self):
- name = dns.name.from_text('www.dnspython.org.')
- ezname = dns.name.from_text('dnspython.org.')
- zname = dns.resolver.zone_for_name(name)
- self.assertEqual(zname, ezname)
-
- @unittest.skipIf(not _network_available, "Internet not reachable")
- def testZoneForName2(self):
- name = dns.name.from_text('a.b.www.dnspython.org.')
- ezname = dns.name.from_text('dnspython.org.')
- zname = dns.resolver.zone_for_name(name)
- self.assertEqual(zname, ezname)
-
- @unittest.skipIf(not _network_available, "Internet not reachable")
- def testZoneForName3(self):
- name = dns.name.from_text('dnspython.org.')
- ezname = dns.name.from_text('dnspython.org.')
- zname = dns.resolver.zone_for_name(name)
- self.assertEqual(zname, ezname)
-
- def testZoneForName4(self):
- def bad():
- name = dns.name.from_text('dnspython.org', None)
- dns.resolver.zone_for_name(name)
- self.assertRaises(dns.resolver.NotAbsolute, bad)
-
- @unittest.skipIf(not _network_available, "Internet not reachable")
- def testResolve(self):
- answer = dns.resolver.resolve('dns.google.', 'A')
- seen = set([rdata.address for rdata in answer])
- self.assertTrue('8.8.8.8' in seen)
- self.assertTrue('8.8.4.4' in seen)
-
- @unittest.skipIf(not _network_available, "Internet not reachable")
- def testResolveAddress(self):
- answer = dns.resolver.resolve_address('8.8.8.8')
- dnsgoogle = dns.name.from_text('dns.google.')
- self.assertEqual(answer[0].target, dnsgoogle)
-
- @unittest.skipIf(not _network_available, "Internet not reachable")
- def testResolveNodataException(self):
- def bad():
- dns.resolver.resolve('dnspython.org.', 'TYPE3') # obsolete MB
- self.assertRaises(dns.resolver.NoAnswer, bad)
-
- @unittest.skipIf(not _network_available, "Internet not reachable")
- def testResolveNodataAnswer(self):
- qname = dns.name.from_text('dnspython.org')
- qclass = dns.rdataclass.from_text('IN')
- qtype = dns.rdatatype.from_text('TYPE3') # obsolete MB
- answer = dns.resolver.resolve(qname, qtype, raise_on_no_answer=False)
- self.assertRaises(KeyError,
- lambda: answer.response.find_rrset(answer.response.answer,
- qname, qclass, qtype))
-
- @unittest.skipIf(not _network_available, "Internet not reachable")
- def testResolveNXDOMAIN(self):
- qname = dns.name.from_text('nxdomain.dnspython.org')
- qclass = dns.rdataclass.from_text('IN')
- qtype = dns.rdatatype.from_text('A') # obsolete MB
- def bad():
- answer = dns.resolver.resolve(qname, qtype)
- self.assertRaises(dns.resolver.NXDOMAIN, bad)
-
def testLRUReplace(self):
cache = dns.resolver.LRUCache(4)
for i in range(0, 5):
@@ -337,6 +272,73 @@ class BaseResolverTests(unittest.TestCase):
qnames = res._get_qnames_to_try(qname, None)
self.assertEqual(qnames, [qname])
+class LiveResolverTests(unittest.TestCase):
+ @unittest.skipIf(not _network_available, "Internet not reachable")
+ def testZoneForName1(self):
+ name = dns.name.from_text('www.dnspython.org.')
+ ezname = dns.name.from_text('dnspython.org.')
+ zname = dns.resolver.zone_for_name(name)
+ self.assertEqual(zname, ezname)
+
+ @unittest.skipIf(not _network_available, "Internet not reachable")
+ def testZoneForName2(self):
+ name = dns.name.from_text('a.b.www.dnspython.org.')
+ ezname = dns.name.from_text('dnspython.org.')
+ zname = dns.resolver.zone_for_name(name)
+ self.assertEqual(zname, ezname)
+
+ @unittest.skipIf(not _network_available, "Internet not reachable")
+ def testZoneForName3(self):
+ name = dns.name.from_text('dnspython.org.')
+ ezname = dns.name.from_text('dnspython.org.')
+ zname = dns.resolver.zone_for_name(name)
+ self.assertEqual(zname, ezname)
+
+ def testZoneForName4(self):
+ def bad():
+ name = dns.name.from_text('dnspython.org', None)
+ dns.resolver.zone_for_name(name)
+ self.assertRaises(dns.resolver.NotAbsolute, bad)
+
+ @unittest.skipIf(not _network_available, "Internet not reachable")
+ def testResolve(self):
+ answer = dns.resolver.resolve('dns.google.', 'A')
+ seen = set([rdata.address for rdata in answer])
+ self.assertTrue('8.8.8.8' in seen)
+ self.assertTrue('8.8.4.4' in seen)
+
+ @unittest.skipIf(not _network_available, "Internet not reachable")
+ def testResolveAddress(self):
+ answer = dns.resolver.resolve_address('8.8.8.8')
+ dnsgoogle = dns.name.from_text('dns.google.')
+ self.assertEqual(answer[0].target, dnsgoogle)
+
+ @unittest.skipIf(not _network_available, "Internet not reachable")
+ def testResolveNodataException(self):
+ def bad():
+ dns.resolver.resolve('dnspython.org.', 'TYPE3') # obsolete MB
+ self.assertRaises(dns.resolver.NoAnswer, bad)
+
+ @unittest.skipIf(not _network_available, "Internet not reachable")
+ def testResolveNodataAnswer(self):
+ qname = dns.name.from_text('dnspython.org')
+ qclass = dns.rdataclass.from_text('IN')
+ qtype = dns.rdatatype.from_text('TYPE3') # obsolete MB
+ answer = dns.resolver.resolve(qname, qtype, raise_on_no_answer=False)
+ self.assertRaises(KeyError,
+ lambda: answer.response.find_rrset(answer.response.answer,
+ qname, qclass, qtype))
+
+ @unittest.skipIf(not _network_available, "Internet not reachable")
+ def testResolveNXDOMAIN(self):
+ qname = dns.name.from_text('nxdomain.dnspython.org')
+ qclass = dns.rdataclass.from_text('IN')
+ qtype = dns.rdatatype.from_text('A') # obsolete MB
+ def bad():
+ answer = dns.resolver.resolve(qname, qtype)
+ self.assertRaises(dns.resolver.NXDOMAIN, bad)
+
+
class PollingMonkeyPatchMixin(object):
def setUp(self):
self.__native_polling_backend = dns.query._polling_backend
@@ -349,12 +351,14 @@ class PollingMonkeyPatchMixin(object):
unittest.TestCase.tearDown(self)
-class SelectResolverTestCase(PollingMonkeyPatchMixin, BaseResolverTests, unittest.TestCase):
+
+class SelectResolverTestCase(PollingMonkeyPatchMixin, LiveResolverTests, unittest.TestCase):
def polling_backend(self):
return dns.query._select_for
+
if hasattr(select, 'poll'):
- class PollResolverTestCase(PollingMonkeyPatchMixin, BaseResolverTests, unittest.TestCase):
+ class PollResolverTestCase(PollingMonkeyPatchMixin, LiveResolverTests, unittest.TestCase):
def polling_backend(self):
return dns.query._poll_for