| 208 | |
| 209 | @tests.util.retry_on_timeout |
| 210 | def testResolveName(self): |
| 211 | async def run1(): |
| 212 | return await dns.asyncresolver.resolve_name("dns.google.") |
| 213 | |
| 214 | answers = self.async_run(run1) |
| 215 | seen = set(answers.addresses()) |
| 216 | self.assertEqual(len(seen), 4) |
| 217 | self.assertIn("8.8.8.8", seen) |
| 218 | self.assertIn("8.8.4.4", seen) |
| 219 | self.assertIn("2001:4860:4860::8844", seen) |
| 220 | self.assertIn("2001:4860:4860::8888", seen) |
| 221 | |
| 222 | async def run2(): |
| 223 | return await dns.asyncresolver.resolve_name("dns.google.", socket.AF_INET) |
| 224 | |
| 225 | answers = self.async_run(run2) |
| 226 | seen = set(answers.addresses()) |
| 227 | self.assertEqual(len(seen), 2) |
| 228 | self.assertIn("8.8.8.8", seen) |
| 229 | self.assertIn("8.8.4.4", seen) |
| 230 | |
| 231 | async def run3(): |
| 232 | return await dns.asyncresolver.resolve_name("dns.google.", socket.AF_INET6) |
| 233 | |
| 234 | answers = self.async_run(run3) |
| 235 | seen = set(answers.addresses()) |
| 236 | self.assertEqual(len(seen), 2) |
| 237 | self.assertIn("2001:4860:4860::8844", seen) |
| 238 | self.assertIn("2001:4860:4860::8888", seen) |
| 239 | |
| 240 | async def run4(): |
| 241 | await dns.asyncresolver.resolve_name("nxdomain.dnspython.org") |
| 242 | |
| 243 | with self.assertRaises(dns.resolver.NXDOMAIN): |
| 244 | self.async_run(run4) |
| 245 | |
| 246 | async def run5(): |
| 247 | await dns.asyncresolver.resolve_name( |
| 248 | dns.reversename.from_address("8.8.8.8") |
| 249 | ) |
| 250 | |
| 251 | if not _is_docker: |
| 252 | # docker returns NXDOMAIN! |
| 253 | with self.assertRaises(dns.resolver.NoAnswer): |
| 254 | self.async_run(run5) |
| 255 | |
| 256 | @tests.util.retry_on_timeout |
| 257 | def testCanonicalNameNoCNAME(self): |