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