From 6df9d13401857715256063c456935ed3653dd09e Mon Sep 17 00:00:00 2001 From: Daniel Salzman <daniel.salzman@nic.cz> Date: Tue, 11 Jun 2019 16:17:30 +0200 Subject: [PATCH] tests-extra: add ldns-verify-zone to Zonefile.dnssec_verify() --- tests-extra/README | 1 + .../tests/dnssec/key_rollovers/test.py | 2 +- tests-extra/tools/dnstest/server.py | 4 +-- tests-extra/tools/dnstest/zonefile.py | 33 ++++++++++++------- 4 files changed, 26 insertions(+), 14 deletions(-) diff --git a/tests-extra/README b/tests-extra/README index 2951c0e61e..80ee6edcbe 100644 --- a/tests-extra/README +++ b/tests-extra/README @@ -7,6 +7,7 @@ python3-psutil dnssec-signzone dnssec-keygen dnssec-verify +ldnsutils Bind >= 9.11 lsof gawk diff --git a/tests-extra/tests/dnssec/key_rollovers/test.py b/tests-extra/tests/dnssec/key_rollovers/test.py index cf19830fc6..0e66c6014d 100644 --- a/tests-extra/tests/dnssec/key_rollovers/test.py +++ b/tests-extra/tests/dnssec/key_rollovers/test.py @@ -70,7 +70,7 @@ def check_zone(server, zone, slave, dnskeys, dnskey_rrsigs, cdnskeys, soa_rrsigs t.xfr_diff(server, slave, zone) server.zone_backup(zone, flush=True) - server.zone_verify(zone) + server.zone_verify(zone, ldns_check=False) # ldns-verify-zone complains about RRSIG without corresponding DNSKEY def wait_for_rrsig_count(t, server, rrtype, rrsig_count, timeout): rtime = 0 diff --git a/tests-extra/tools/dnstest/server.py b/tests-extra/tools/dnstest/server.py index 6700f68c30..80cf8ef316 100644 --- a/tests-extra/tools/dnstest/server.py +++ b/tests-extra/tools/dnstest/server.py @@ -657,10 +657,10 @@ class Server(object): self.zones[zone.name].zfile.backup() - def zone_verify(self, zone): + def zone_verify(self, zone, bind_check=None, ldns_check=None): zone = zone_arg_check(zone) - self.zones[zone.name].zfile.dnssec_verify() + self.zones[zone.name].zfile.dnssec_verify(bind_check, ldns_check) def check_nsec(self, zone, nsec3=False, nonsec=False): zone = zone_arg_check(zone) diff --git a/tests-extra/tools/dnstest/zonefile.py b/tests-extra/tools/dnstest/zonefile.py index eb16010bd3..c35ea3e782 100644 --- a/tests-extra/tools/dnstest/zonefile.py +++ b/tests-extra/tools/dnstest/zonefile.py @@ -115,21 +115,32 @@ class ZoneFile(object): except OSError: raise Exception("Can't create zone file '%s'" % self.path) - def dnssec_verify(self): + def dnssec_verify(self, bind_check=True, ldns_check=True): '''Call dnssec-verify on the zone file.''' check_log("DNSSEC VERIFY for %s (%s)" % (self.name, self.path)) - # note: convert origin to lower case due to a bug in dnssec-verify - origin = self.name.lower() - cmd = Popen(["dnssec-verify", "-z", "-o", origin, self.path], - stdout=PIPE, stderr=PIPE, universal_newlines=True) - (out, err) = cmd.communicate() - - if cmd.returncode != 0: - set_err("DNSSEC VERIFY") - detail_log(err.strip()) - self.backup() + if bind_check: + # note: convert origin to lower case due to a bug in dnssec-verify + origin = self.name.lower() + cmd = Popen(["dnssec-verify", "-z", "-o", origin, self.path], + stdout=PIPE, stderr=PIPE, universal_newlines=True) + (out, err) = cmd.communicate() + + if cmd.returncode != 0: + set_err("DNSSEC VERIFY") + detail_log("dnssec-verify:\n" + err.strip()) + self.backup() + + if ldns_check: + cmd = Popen(["ldns-verify-zone", self.path], + stdout=PIPE, stderr=PIPE, universal_newlines=True) + (out, err) = cmd.communicate() + + if cmd.returncode != 0: + set_err("LDNS VERIFY") + detail_log("ldns-verify-zone:\n" + err.strip()) + self.backup() detail_log(SEP) -- GitLab