From db897a3c0c1497eef2533a8ec41adac689ef5680 Mon Sep 17 00:00:00 2001 From: Nicolas KAROLAK <nicolas@karolak.fr> Date: Wed, 16 Oct 2019 13:11:14 +0000 Subject: [PATCH] use dns-resolver --- tests/test_dns_records.py | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/tests/test_dns_records.py b/tests/test_dns_records.py index 69dd51e6..49e990b2 100755 --- a/tests/test_dns_records.py +++ b/tests/test_dns_records.py @@ -9,6 +9,7 @@ from pathlib import Path import re import subprocess import sys +import dns.resolver try: import pydbus @@ -81,24 +82,20 @@ def check_dns(hostname: str, expected_ip: str, resolvers: set) -> tuple: warnings = 0 errors = 0 - for resolver in resolvers: - status, output = subprocess.getstatusoutput( - "host {} {}".format(hostname, resolver) - ) - if status == 0: - address = get_result(output) + resolver = dns.resolver.Resolver(configure=False) + resolver.nameservers = list(resolvers) + try: + answers = [rdata.address for rdata in resolver.query(hostname)] + except Exception as dns_err: + u.error("cannot resolve {}: {}".format(hostname, dns_err)) + errors += 1 + else: + for address in answers: if address == expected_ip: - u.success("dns({}): {} -> {}".format(resolver, hostname, address)) + u.success("{} -> {}".format(hostname, address)) else: - u.error( - "dns({}): {} -> {} (should be {})".format( - resolver, hostname, address, expected_ip - ) - ) + u.error("{} -> {} != {}".format(hostname, address, expected_ip)) errors += 1 - else: - u.error("dns({}): cannot resolve {}".format(resolver, hostname)) - errors += 1 return warnings, errors -- GitLab