diff --git a/tests/test_dns_records.py b/tests/test_dns_records.py index 69dd51e6a460ab100233c4b5b0319d56844b8ec7..49e990b25f5b2ed581846929412af5f0d49aa222 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