]> granicus.if.org Git - pdns/commitdiff
Add regression tests for root zone serving
authorPieter Lexis <pieter.lexis@powerdns.com>
Thu, 11 Feb 2016 15:03:44 +0000 (16:03 +0100)
committermind04 <mind04@monshouwer.org>
Fri, 25 Mar 2016 18:47:59 +0000 (19:47 +0100)
48 files changed:
.travis.yml
regression-tests.rootzone/.gitignore [new symlink]
regression-tests.rootzone/backends [new symlink]
regression-tests.rootzone/check_stest_source [new symlink]
regression-tests.rootzone/cleandig [new symlink]
regression-tests.rootzone/ext [new symlink]
regression-tests.rootzone/modules [new symlink]
regression-tests.rootzone/named.conf [new file with mode: 0644]
regression-tests.rootzone/runtests [new symlink]
regression-tests.rootzone/start-test-stop [new symlink]
regression-tests.rootzone/tests/.gitignore [new symlink]
regression-tests.rootzone/tests/00dnssec-grabkeys/command [new file with mode: 0755]
regression-tests.rootzone/tests/00dnssec-grabkeys/description [new file with mode: 0644]
regression-tests.rootzone/tests/00dnssec-grabkeys/expected_result [new file with mode: 0644]
regression-tests.rootzone/tests/00dnssec-grabkeys/expected_result.dnssec [new file with mode: 0644]
regression-tests.rootzone/tests/direct-ns/command [new file with mode: 0755]
regression-tests.rootzone/tests/direct-ns/description [new file with mode: 0644]
regression-tests.rootzone/tests/direct-ns/expected_result [new file with mode: 0644]
regression-tests.rootzone/tests/direct-ns/expected_result.dnssec [new file with mode: 0644]
regression-tests.rootzone/tests/direct-root/command [new file with mode: 0755]
regression-tests.rootzone/tests/direct-root/description [new file with mode: 0644]
regression-tests.rootzone/tests/direct-root/expected_result [new file with mode: 0644]
regression-tests.rootzone/tests/nx-2ld/command [new file with mode: 0755]
regression-tests.rootzone/tests/nx-2ld/description [new file with mode: 0644]
regression-tests.rootzone/tests/nx-2ld/expected_result [new file with mode: 0644]
regression-tests.rootzone/tests/ref-3ld/command [new file with mode: 0755]
regression-tests.rootzone/tests/ref-3ld/description [new file with mode: 0644]
regression-tests.rootzone/tests/ref-3ld/expected_result [new file with mode: 0644]
regression-tests.rootzone/tests/ref-3ld/expected_result.dnssec [new file with mode: 0644]
regression-tests.rootzone/tests/verify-dnssec-zone/command [new file with mode: 0755]
regression-tests.rootzone/tests/verify-dnssec-zone/description [new file with mode: 0644]
regression-tests.rootzone/tests/verify-dnssec-zone/expected_result [new file with mode: 0644]
regression-tests.rootzone/tests/verify-dnssec-zone/skip.narrow [new file with mode: 0644]
regression-tests.rootzone/tests/verify-dnssec-zone/skip.nodnssec [new file with mode: 0644]
regression-tests.rootzone/tests/verify-dnssec-zone/skip.oracle-nsec [new file with mode: 0644]
regression-tests.rootzone/tests/verify-dnssec-zone/skip.oracle-nsec3 [new file with mode: 0644]
regression-tests.rootzone/timestamp [new symlink]
regression-tests.rootzone/totar [new symlink]
regression-tests.rootzone/toxml [new symlink]
regression-tests.rootzone/zones/.gitignore [new file with mode: 0644]
regression-tests.rootzone/zones/ROOT [new file with mode: 0644]
regression-tests/backends/bind-master
regression-tests/backends/bind-slave
regression-tests/backends/gmysql-slave
regression-tests/backends/godbc_mssql-slave
regression-tests/backends/gpgsql-slave
regression-tests/backends/gsql-common
regression-tests/backends/gsqlite3-slave

index a5227b1d856215f52ed95703264e271948c6ff69..bb4e1f525b679f8b9a1693f2a19fff88f347158a 100644 (file)
@@ -257,6 +257,38 @@ script:
   - ./timestamp ./start-test-stop 5300 tinydns
   - cd ..
 
+  - cd regression-tests.rootzone
+  - ./timestamp ./start-test-stop 5300 bind-both
+#FIXME 400, NSEC record synthesis for root zones is broken
+#  - ./timestamp ./start-test-stop 5300 bind-dnssec-both
+  - ./timestamp ./start-test-stop 5300 bind-dnssec-nsec3-both
+#FIXME 400, NSEC record synthesis for root zones is broken
+#  - ./timestamp ./start-test-stop 5300 bind-dnssec-nsec3-optout-both
+  - ./timestamp ./start-test-stop 5300 bind-dnssec-nsec3-narrow
+  - ./timestamp ./start-test-stop 5300 bind-hybrid-nsec3
+
+  - ./timestamp ./start-test-stop 5300 gmysql-nodnssec-both
+  - ./timestamp ./start-test-stop 5300 gmysql-both
+#FIXME 400, NSEC3 record synthesis for root zones is broken
+#  - ./timestamp ./start-test-stop 5300 gmysql-nsec3-both
+#  - ./timestamp ./start-test-stop 5300 gmysql-nsec3-optout-both
+#  - ./timestamp ./start-test-stop 5300 gmysql-nsec3-narrow
+
+  - ./timestamp ./start-test-stop 5300 gpgsql-nodnssec-both
+  - ./timestamp ./start-test-stop 5300 gpgsql-both
+#FIXME 400, NSEC3 record synthesis for root zones is broken
+#  - ./timestamp ./start-test-stop 5300 gpgsql-nsec3-both
+#  - ./timestamp ./start-test-stop 5300 gpgsql-nsec3-optout-both
+#  - ./timestamp ./start-test-stop 5300 gpgsql-nsec3-narrow
+
+  - ./timestamp ./start-test-stop 5300 gsqlite3-nodnssec-both
+  - ./timestamp ./start-test-stop 5300 gsqlite3-both
+#FIXME 400, NSEC3 record synthesis for root zones is broken
+#  - ./timestamp ./start-test-stop 5300 gsqlite3-nsec3-both
+#  - ./timestamp ./start-test-stop 5300 gsqlite3-nsec3-optout-both
+#  - ./timestamp ./start-test-stop 5300 gsqlite3-nsec3-narrow
+
+  - cd ..
 
   ### recursor ###
 
diff --git a/regression-tests.rootzone/.gitignore b/regression-tests.rootzone/.gitignore
new file mode 120000 (symlink)
index 0000000..5b73940
--- /dev/null
@@ -0,0 +1 @@
+../regression-tests/.gitignore
\ No newline at end of file
diff --git a/regression-tests.rootzone/backends b/regression-tests.rootzone/backends
new file mode 120000 (symlink)
index 0000000..7275f81
--- /dev/null
@@ -0,0 +1 @@
+../regression-tests/backends
\ No newline at end of file
diff --git a/regression-tests.rootzone/check_stest_source b/regression-tests.rootzone/check_stest_source
new file mode 120000 (symlink)
index 0000000..1cc76f2
--- /dev/null
@@ -0,0 +1 @@
+../regression-tests/check_stest_source
\ No newline at end of file
diff --git a/regression-tests.rootzone/cleandig b/regression-tests.rootzone/cleandig
new file mode 120000 (symlink)
index 0000000..d840bc7
--- /dev/null
@@ -0,0 +1 @@
+../regression-tests/cleandig
\ No newline at end of file
diff --git a/regression-tests.rootzone/ext b/regression-tests.rootzone/ext
new file mode 120000 (symlink)
index 0000000..e09fce4
--- /dev/null
@@ -0,0 +1 @@
+../regression-tests/ext
\ No newline at end of file
diff --git a/regression-tests.rootzone/modules b/regression-tests.rootzone/modules
new file mode 120000 (symlink)
index 0000000..71550f3
--- /dev/null
@@ -0,0 +1 @@
+../regression-tests/modules
\ No newline at end of file
diff --git a/regression-tests.rootzone/named.conf b/regression-tests.rootzone/named.conf
new file mode 100644 (file)
index 0000000..544a05a
--- /dev/null
@@ -0,0 +1,14 @@
+options {
+       directory "./zones/";
+       recursion no;
+       listen-on port 5300 {
+               127.0.0.1;
+       };
+       version "Meow!Meow!";
+       minimal-responses yes;
+};
+zone "."{
+       type master;
+       file "ROOT";
+};
+
diff --git a/regression-tests.rootzone/runtests b/regression-tests.rootzone/runtests
new file mode 120000 (symlink)
index 0000000..79e015a
--- /dev/null
@@ -0,0 +1 @@
+../regression-tests/runtests
\ No newline at end of file
diff --git a/regression-tests.rootzone/start-test-stop b/regression-tests.rootzone/start-test-stop
new file mode 120000 (symlink)
index 0000000..b528ae3
--- /dev/null
@@ -0,0 +1 @@
+../regression-tests/start-test-stop
\ No newline at end of file
diff --git a/regression-tests.rootzone/tests/.gitignore b/regression-tests.rootzone/tests/.gitignore
new file mode 120000 (symlink)
index 0000000..292559f
--- /dev/null
@@ -0,0 +1 @@
+../../regression-tests/tests/.gitignore
\ No newline at end of file
diff --git a/regression-tests.rootzone/tests/00dnssec-grabkeys/command b/regression-tests.rootzone/tests/00dnssec-grabkeys/command
new file mode 100755 (executable)
index 0000000..e001f9b
--- /dev/null
@@ -0,0 +1,24 @@
+#!/usr/bin/env bash
+rm -f trustedkeys
+rm -f unbound-host.conf
+
+for zone in $(grep 'zone ' named.conf  | cut -f2 -d\")
+do
+       if [ "${zone: 0:16}" != "secure-delegated" ]
+       then
+               drill -p $port -o rd -D dnskey $zone @$nameserver | grep $'DNSKEY\t257' | grep -v 'RRSIG' | grep -v '^;' | grep -v AwEAAarTiHhPgvD28WCN8UBXcEcf8f >> trustedkeys
+       fi
+       echo "stub-zone:" >> unbound-host.conf
+       echo "  name: $zone" >> unbound-host.conf
+       echo "  stub-addr: $nameserver@$port" >> unbound-host.conf
+       echo "" >> unbound-host.conf
+done
+
+echo "server:" >> unbound-host.conf
+echo "  do-not-query-address: 192.168.0.0/16" >> unbound-host.conf
+echo '  trust-anchor-file: "trustedkeys"' >> unbound-host.conf
+
+if [ -e trustedkeys ]
+then
+  cat trustedkeys | grep -c '.' # because wc -l is not portable enough!
+fi
diff --git a/regression-tests.rootzone/tests/00dnssec-grabkeys/description b/regression-tests.rootzone/tests/00dnssec-grabkeys/description
new file mode 100644 (file)
index 0000000..4315650
--- /dev/null
@@ -0,0 +1 @@
+Grab DNSKEY records for validation testing.
diff --git a/regression-tests.rootzone/tests/00dnssec-grabkeys/expected_result b/regression-tests.rootzone/tests/00dnssec-grabkeys/expected_result
new file mode 100644 (file)
index 0000000..573541a
--- /dev/null
@@ -0,0 +1 @@
+0
diff --git a/regression-tests.rootzone/tests/00dnssec-grabkeys/expected_result.dnssec b/regression-tests.rootzone/tests/00dnssec-grabkeys/expected_result.dnssec
new file mode 100644 (file)
index 0000000..d00491f
--- /dev/null
@@ -0,0 +1 @@
+1
diff --git a/regression-tests.rootzone/tests/direct-ns/command b/regression-tests.rootzone/tests/direct-ns/command
new file mode 100755 (executable)
index 0000000..3051e14
--- /dev/null
@@ -0,0 +1 @@
+cleandig net NS
diff --git a/regression-tests.rootzone/tests/direct-ns/description b/regression-tests.rootzone/tests/direct-ns/description
new file mode 100644 (file)
index 0000000..05a3732
--- /dev/null
@@ -0,0 +1 @@
+NS query for an existing TLD should get an answer
diff --git a/regression-tests.rootzone/tests/direct-ns/expected_result b/regression-tests.rootzone/tests/direct-ns/expected_result
new file mode 100644 (file)
index 0000000..80ae083
--- /dev/null
@@ -0,0 +1,29 @@
+1      net.    IN      NS      172800  a.gtld-servers.net.
+1      net.    IN      NS      172800  b.gtld-servers.net.
+1      net.    IN      NS      172800  c.gtld-servers.net.
+1      net.    IN      NS      172800  d.gtld-servers.net.
+1      net.    IN      NS      172800  e.gtld-servers.net.
+1      net.    IN      NS      172800  f.gtld-servers.net.
+1      net.    IN      NS      172800  g.gtld-servers.net.
+1      net.    IN      NS      172800  h.gtld-servers.net.
+1      net.    IN      NS      172800  i.gtld-servers.net.
+1      net.    IN      NS      172800  j.gtld-servers.net.
+1      net.    IN      NS      172800  k.gtld-servers.net.
+1      net.    IN      NS      172800  l.gtld-servers.net.
+1      net.    IN      NS      172800  m.gtld-servers.net.
+2      a.gtld-servers.net.     IN      A       172800  192.5.6.30
+2      a.gtld-servers.net.     IN      AAAA    172800  2001:503:a83e::2:30
+2      b.gtld-servers.net.     IN      A       172800  192.33.14.30
+2      b.gtld-servers.net.     IN      AAAA    172800  2001:503:231d::2:30
+2      c.gtld-servers.net.     IN      A       172800  192.26.92.30
+2      d.gtld-servers.net.     IN      A       172800  192.31.80.30
+2      e.gtld-servers.net.     IN      A       172800  192.12.94.30
+2      f.gtld-servers.net.     IN      A       172800  192.35.51.30
+2      g.gtld-servers.net.     IN      A       172800  192.42.93.30
+2      h.gtld-servers.net.     IN      A       172800  192.54.112.30
+2      i.gtld-servers.net.     IN      A       172800  192.43.172.30
+2      j.gtld-servers.net.     IN      A       172800  192.48.79.30
+2      k.gtld-servers.net.     IN      A       172800  192.52.178.30
+2      l.gtld-servers.net.     IN      A       172800  192.41.162.30
+Rcode: 0 (No Error), RD: 0, QR: 1, TC: 0, AA: 0, opcode: 0
+Reply to question for qname='net.', qtype=NS
diff --git a/regression-tests.rootzone/tests/direct-ns/expected_result.dnssec b/regression-tests.rootzone/tests/direct-ns/expected_result.dnssec
new file mode 100644 (file)
index 0000000..c9dd9fe
--- /dev/null
@@ -0,0 +1,27 @@
+1      net.    IN      DS      86400   35886 8 2 7862b27f5f516ebe19680444d4ce5e762981931842c465f00236401d8bd973ee
+1      net.    IN      NS      172800  a.gtld-servers.net.
+1      net.    IN      NS      172800  b.gtld-servers.net.
+1      net.    IN      NS      172800  c.gtld-servers.net.
+1      net.    IN      NS      172800  d.gtld-servers.net.
+1      net.    IN      NS      172800  e.gtld-servers.net.
+1      net.    IN      NS      172800  f.gtld-servers.net.
+1      net.    IN      NS      172800  g.gtld-servers.net.
+1      net.    IN      NS      172800  h.gtld-servers.net.
+1      net.    IN      NS      172800  i.gtld-servers.net.
+1      net.    IN      NS      172800  j.gtld-servers.net.
+1      net.    IN      NS      172800  k.gtld-servers.net.
+1      net.    IN      NS      172800  l.gtld-servers.net.
+1      net.    IN      NS      172800  m.gtld-servers.net.
+2      a.gtld-servers.net.     IN      A       172800  192.5.6.30
+2      a.gtld-servers.net.     IN      AAAA    172800  2001:503:a83e::2:30
+2      b.gtld-servers.net.     IN      A       172800  192.33.14.30
+2      b.gtld-servers.net.     IN      AAAA    172800  2001:503:231d::2:30
+2      c.gtld-servers.net.     IN      A       172800  192.26.92.30
+2      d.gtld-servers.net.     IN      A       172800  192.31.80.30
+2      e.gtld-servers.net.     IN      A       172800  192.12.94.30
+2      f.gtld-servers.net.     IN      A       172800  192.35.51.30
+2      g.gtld-servers.net.     IN      A       172800  192.42.93.30
+2      h.gtld-servers.net.     IN      A       172800  192.54.112.30
+2      i.gtld-servers.net.     IN      A       172800  192.43.172.30
+Rcode: 0 (No Error), RD: 0, QR: 1, TC: 0, AA: 0, opcode: 0
+Reply to question for qname='net.', qtype=NS
diff --git a/regression-tests.rootzone/tests/direct-root/command b/regression-tests.rootzone/tests/direct-root/command
new file mode 100755 (executable)
index 0000000..8d46ebf
--- /dev/null
@@ -0,0 +1 @@
+cleandig . NS | LC_ALL=C sort
diff --git a/regression-tests.rootzone/tests/direct-root/description b/regression-tests.rootzone/tests/direct-root/description
new file mode 100644 (file)
index 0000000..fe0b4a3
--- /dev/null
@@ -0,0 +1 @@
+An NS query for the root should get a proper referral
diff --git a/regression-tests.rootzone/tests/direct-root/expected_result b/regression-tests.rootzone/tests/direct-root/expected_result
new file mode 100644 (file)
index 0000000..865b5d1
--- /dev/null
@@ -0,0 +1,27 @@
+0      .       IN      NS      518400  a.root-servers.net.
+0      .       IN      NS      518400  b.root-servers.net.
+0      .       IN      NS      518400  c.root-servers.net.
+0      .       IN      NS      518400  d.root-servers.net.
+0      .       IN      NS      518400  e.root-servers.net.
+0      .       IN      NS      518400  f.root-servers.net.
+0      .       IN      NS      518400  g.root-servers.net.
+0      .       IN      NS      518400  h.root-servers.net.
+0      .       IN      NS      518400  i.root-servers.net.
+0      .       IN      NS      518400  j.root-servers.net.
+0      .       IN      NS      518400  k.root-servers.net.
+0      .       IN      NS      518400  l.root-servers.net.
+0      .       IN      NS      518400  m.root-servers.net.
+2      a.root-servers.net.     IN      A       518400  198.41.0.4
+2      a.root-servers.net.     IN      AAAA    518400  2001:503:ba3e::2:30
+2      b.root-servers.net.     IN      A       518400  192.228.79.201
+2      b.root-servers.net.     IN      AAAA    518400  2001:500:84::b
+2      c.root-servers.net.     IN      A       518400  192.33.4.12
+2      c.root-servers.net.     IN      AAAA    518400  2001:500:2::c
+2      d.root-servers.net.     IN      A       518400  199.7.91.13
+2      d.root-servers.net.     IN      AAAA    518400  2001:500:2d::d
+2      e.root-servers.net.     IN      A       518400  192.203.230.10
+2      f.root-servers.net.     IN      A       518400  192.5.5.241
+2      f.root-servers.net.     IN      AAAA    518400  2001:500:2f::f
+2      g.root-servers.net.     IN      A       518400  192.112.36.4
+Rcode: 0 (No Error), RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='.', qtype=NS
diff --git a/regression-tests.rootzone/tests/nx-2ld/command b/regression-tests.rootzone/tests/nx-2ld/command
new file mode 100755 (executable)
index 0000000..1830ecd
--- /dev/null
@@ -0,0 +1 @@
+cleandig com NS
diff --git a/regression-tests.rootzone/tests/nx-2ld/description b/regression-tests.rootzone/tests/nx-2ld/description
new file mode 100644 (file)
index 0000000..ad79cd7
--- /dev/null
@@ -0,0 +1 @@
+An NS query for a non-existing second-level domain should be NXDOMAIN
diff --git a/regression-tests.rootzone/tests/nx-2ld/expected_result b/regression-tests.rootzone/tests/nx-2ld/expected_result
new file mode 100644 (file)
index 0000000..270b102
--- /dev/null
@@ -0,0 +1,3 @@
+1      .       IN      SOA     86400   a.root-servers.net. nstld.verisign-grs.com. 2016021600 1800 900 604800 86400
+Rcode: 3 (Non-Existent domain), RD: 0, QR: 1, TC: 0, AA: 1, opcode: 0
+Reply to question for qname='com.', qtype=NS
diff --git a/regression-tests.rootzone/tests/ref-3ld/command b/regression-tests.rootzone/tests/ref-3ld/command
new file mode 100755 (executable)
index 0000000..9284a40
--- /dev/null
@@ -0,0 +1 @@
+cleandig some-host.domain.net A
diff --git a/regression-tests.rootzone/tests/ref-3ld/description b/regression-tests.rootzone/tests/ref-3ld/description
new file mode 100644 (file)
index 0000000..a8e683a
--- /dev/null
@@ -0,0 +1 @@
+An A query for a 3rd level domain name should result in a referral
diff --git a/regression-tests.rootzone/tests/ref-3ld/expected_result b/regression-tests.rootzone/tests/ref-3ld/expected_result
new file mode 100644 (file)
index 0000000..985face
--- /dev/null
@@ -0,0 +1,28 @@
+1      net.    IN      NS      172800  a.gtld-servers.net.
+1      net.    IN      NS      172800  b.gtld-servers.net.
+1      net.    IN      NS      172800  c.gtld-servers.net.
+1      net.    IN      NS      172800  d.gtld-servers.net.
+1      net.    IN      NS      172800  e.gtld-servers.net.
+1      net.    IN      NS      172800  f.gtld-servers.net.
+1      net.    IN      NS      172800  g.gtld-servers.net.
+1      net.    IN      NS      172800  h.gtld-servers.net.
+1      net.    IN      NS      172800  i.gtld-servers.net.
+1      net.    IN      NS      172800  j.gtld-servers.net.
+1      net.    IN      NS      172800  k.gtld-servers.net.
+1      net.    IN      NS      172800  l.gtld-servers.net.
+1      net.    IN      NS      172800  m.gtld-servers.net.
+2      a.gtld-servers.net.     IN      A       172800  192.5.6.30
+2      a.gtld-servers.net.     IN      AAAA    172800  2001:503:a83e::2:30
+2      b.gtld-servers.net.     IN      A       172800  192.33.14.30
+2      b.gtld-servers.net.     IN      AAAA    172800  2001:503:231d::2:30
+2      c.gtld-servers.net.     IN      A       172800  192.26.92.30
+2      d.gtld-servers.net.     IN      A       172800  192.31.80.30
+2      e.gtld-servers.net.     IN      A       172800  192.12.94.30
+2      f.gtld-servers.net.     IN      A       172800  192.35.51.30
+2      g.gtld-servers.net.     IN      A       172800  192.42.93.30
+2      h.gtld-servers.net.     IN      A       172800  192.54.112.30
+2      i.gtld-servers.net.     IN      A       172800  192.43.172.30
+2      j.gtld-servers.net.     IN      A       172800  192.48.79.30
+2      k.gtld-servers.net.     IN      A       172800  192.52.178.30
+Rcode: 0 (No Error), RD: 0, QR: 1, TC: 0, AA: 0, opcode: 0
+Reply to question for qname='some-host.domain.net.', qtype=A
diff --git a/regression-tests.rootzone/tests/ref-3ld/expected_result.dnssec b/regression-tests.rootzone/tests/ref-3ld/expected_result.dnssec
new file mode 100644 (file)
index 0000000..0e240a7
--- /dev/null
@@ -0,0 +1,26 @@
+1      net.    IN      DS      86400   35886 8 2 7862b27f5f516ebe19680444d4ce5e762981931842c465f00236401d8bd973ee
+1      net.    IN      NS      172800  a.gtld-servers.net.
+1      net.    IN      NS      172800  b.gtld-servers.net.
+1      net.    IN      NS      172800  c.gtld-servers.net.
+1      net.    IN      NS      172800  d.gtld-servers.net.
+1      net.    IN      NS      172800  e.gtld-servers.net.
+1      net.    IN      NS      172800  f.gtld-servers.net.
+1      net.    IN      NS      172800  g.gtld-servers.net.
+1      net.    IN      NS      172800  h.gtld-servers.net.
+1      net.    IN      NS      172800  i.gtld-servers.net.
+1      net.    IN      NS      172800  j.gtld-servers.net.
+1      net.    IN      NS      172800  k.gtld-servers.net.
+1      net.    IN      NS      172800  l.gtld-servers.net.
+1      net.    IN      NS      172800  m.gtld-servers.net.
+2      a.gtld-servers.net.     IN      A       172800  192.5.6.30
+2      a.gtld-servers.net.     IN      AAAA    172800  2001:503:a83e::2:30
+2      b.gtld-servers.net.     IN      A       172800  192.33.14.30
+2      b.gtld-servers.net.     IN      AAAA    172800  2001:503:231d::2:30
+2      c.gtld-servers.net.     IN      A       172800  192.26.92.30
+2      d.gtld-servers.net.     IN      A       172800  192.31.80.30
+2      e.gtld-servers.net.     IN      A       172800  192.12.94.30
+2      f.gtld-servers.net.     IN      A       172800  192.35.51.30
+2      g.gtld-servers.net.     IN      A       172800  192.42.93.30
+2      h.gtld-servers.net.     IN      A       172800  192.54.112.30
+Rcode: 0 (No Error), RD: 0, QR: 1, TC: 0, AA: 0, opcode: 0
+Reply to question for qname='some-host.domain.net.', qtype=A
diff --git a/regression-tests.rootzone/tests/verify-dnssec-zone/command b/regression-tests.rootzone/tests/verify-dnssec-zone/command
new file mode 100755 (executable)
index 0000000..70fe36d
--- /dev/null
@@ -0,0 +1,37 @@
+#!/usr/bin/env bash
+for zone in $(grep 'zone ' named.conf  | cut -f2 -d\" | grep -v '^\(example.com\|nztest.com\)$')
+do
+       TFILE=$(mktemp tmp.XXXXXXXXXX)
+       drill -p $port axfr $zone @$nameserver | ldns-read-zone -z > $TFILE
+       for validator in "ldns-verify-zone -V2" named-checkzone
+       do
+               echo --- $validator $zone
+               if [ "$validator" = "named-checkzone" ]
+               then
+                       named-checkzone -i local $zone $TFILE 2>&1 | grep -v 'addnode: NSEC node already exists'
+               else
+                       if [ ! -e ${testsdir}/${testname}/allow-missing ] || [[ $(type -P "$validator") ]]
+                       then
+                               $validator $TFILE 2>&1
+                       else
+                               #fake output for missing validators
+                               if [ "$validator" = "jdnssec-verifyzone" ]
+                               then
+                                       echo zone verified.
+                               fi
+                       fi
+               fi
+               RETVAL=$?
+               echo RETVAL: $RETVAL
+               if [ $RETVAL -gt 0 ] && { [[ $validator != ldns-verify-zone* ]] || { [[ $skipreasons != *nsec3* ]] && [[ $skipreasons != *optout* ]]; }; }
+               then
+                       echo $validator reported error, full zone content:
+                       echo ---
+                       cat $TFILE
+                       echo --- end of zone content
+               fi
+               echo
+       done
+       
+       rm -f $TFILE
+done
diff --git a/regression-tests.rootzone/tests/verify-dnssec-zone/description b/regression-tests.rootzone/tests/verify-dnssec-zone/description
new file mode 100644 (file)
index 0000000..0e96b68
--- /dev/null
@@ -0,0 +1 @@
+AXFR all zones except the big example.com, and test them with ldns-verify-zone
diff --git a/regression-tests.rootzone/tests/verify-dnssec-zone/expected_result b/regression-tests.rootzone/tests/verify-dnssec-zone/expected_result
new file mode 100644 (file)
index 0000000..707f17d
--- /dev/null
@@ -0,0 +1,8 @@
+--- ldns-verify-zone -V2 .
+RETVAL: 0
+
+--- named-checkzone .
+zone ./IN: loaded serial 2016021600 (DNSSEC signed)
+OK
+RETVAL: 0
+
diff --git a/regression-tests.rootzone/tests/verify-dnssec-zone/skip.narrow b/regression-tests.rootzone/tests/verify-dnssec-zone/skip.narrow
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/regression-tests.rootzone/tests/verify-dnssec-zone/skip.nodnssec b/regression-tests.rootzone/tests/verify-dnssec-zone/skip.nodnssec
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/regression-tests.rootzone/tests/verify-dnssec-zone/skip.oracle-nsec b/regression-tests.rootzone/tests/verify-dnssec-zone/skip.oracle-nsec
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/regression-tests.rootzone/tests/verify-dnssec-zone/skip.oracle-nsec3 b/regression-tests.rootzone/tests/verify-dnssec-zone/skip.oracle-nsec3
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/regression-tests.rootzone/timestamp b/regression-tests.rootzone/timestamp
new file mode 120000 (symlink)
index 0000000..04073d9
--- /dev/null
@@ -0,0 +1 @@
+../regression-tests/timestamp
\ No newline at end of file
diff --git a/regression-tests.rootzone/totar b/regression-tests.rootzone/totar
new file mode 120000 (symlink)
index 0000000..1b62347
--- /dev/null
@@ -0,0 +1 @@
+../regression-tests/totar
\ No newline at end of file
diff --git a/regression-tests.rootzone/toxml b/regression-tests.rootzone/toxml
new file mode 120000 (symlink)
index 0000000..683d375
--- /dev/null
@@ -0,0 +1 @@
+../regression-tests/toxml
\ No newline at end of file
diff --git a/regression-tests.rootzone/zones/.gitignore b/regression-tests.rootzone/zones/.gitignore
new file mode 100644 (file)
index 0000000..82dc9a0
--- /dev/null
@@ -0,0 +1 @@
+*-slave
diff --git a/regression-tests.rootzone/zones/ROOT b/regression-tests.rootzone/zones/ROOT
new file mode 100644 (file)
index 0000000..7dbcc89
--- /dev/null
@@ -0,0 +1,70 @@
+.                      86400   IN      SOA     a.root-servers.net. nstld.verisign-grs.com. 2016021600 1800 900 604800 86400
+.                      518400  IN      NS      a.root-servers.net.
+.                      518400  IN      NS      b.root-servers.net.
+.                      518400  IN      NS      c.root-servers.net.
+.                      518400  IN      NS      d.root-servers.net.
+.                      518400  IN      NS      e.root-servers.net.
+.                      518400  IN      NS      f.root-servers.net.
+.                      518400  IN      NS      g.root-servers.net.
+.                      518400  IN      NS      h.root-servers.net.
+.                      518400  IN      NS      i.root-servers.net.
+.                      518400  IN      NS      j.root-servers.net.
+.                      518400  IN      NS      k.root-servers.net.
+.                      518400  IN      NS      l.root-servers.net.
+.                      518400  IN      NS      m.root-servers.net.
+
+a.root-servers.net.    518400  IN      A       198.41.0.4
+a.root-servers.net.    518400  IN      AAAA    2001:503:ba3e:0:0:0:2:30
+b.root-servers.net.    518400  IN      A       192.228.79.201
+b.root-servers.net.    518400  IN      AAAA    2001:500:84:0:0:0:0:b
+c.root-servers.net.    518400  IN      A       192.33.4.12
+c.root-servers.net.    518400  IN      AAAA    2001:500:2:0:0:0:0:c
+d.root-servers.net.    518400  IN      A       199.7.91.13
+d.root-servers.net.    518400  IN      AAAA    2001:500:2d:0:0:0:0:d
+e.root-servers.net.    518400  IN      A       192.203.230.10
+f.root-servers.net.    518400  IN      A       192.5.5.241
+f.root-servers.net.    518400  IN      AAAA    2001:500:2f:0:0:0:0:f
+g.root-servers.net.    518400  IN      A       192.112.36.4
+h.root-servers.net.    518400  IN      A       198.97.190.53
+h.root-servers.net.    518400  IN      AAAA    2001:500:1:0:0:0:0:53
+i.root-servers.net.    518400  IN      A       192.36.148.17
+i.root-servers.net.    518400  IN      AAAA    2001:7fe:0:0:0:0:0:53
+j.root-servers.net.    518400  IN      A       192.58.128.30
+j.root-servers.net.    518400  IN      AAAA    2001:503:c27:0:0:0:2:30
+k.root-servers.net.    518400  IN      A       193.0.14.129
+k.root-servers.net.    518400  IN      AAAA    2001:7fd:0:0:0:0:0:1
+l.root-servers.net.    518400  IN      A       199.7.83.42
+l.root-servers.net.    518400  IN      AAAA    2001:500:3:0:0:0:0:42
+m.root-servers.net.    518400  IN      A       202.12.27.33
+m.root-servers.net.    518400  IN      AAAA    2001:dc3:0:0:0:0:0:35
+
+net.                   172800  IN      NS      a.gtld-servers.net.
+net.                   172800  IN      NS      b.gtld-servers.net.
+net.                   172800  IN      NS      c.gtld-servers.net.
+net.                   172800  IN      NS      d.gtld-servers.net.
+net.                   172800  IN      NS      e.gtld-servers.net.
+net.                   172800  IN      NS      f.gtld-servers.net.
+net.                   172800  IN      NS      g.gtld-servers.net.
+net.                   172800  IN      NS      h.gtld-servers.net.
+net.                   172800  IN      NS      i.gtld-servers.net.
+net.                   172800  IN      NS      j.gtld-servers.net.
+net.                   172800  IN      NS      k.gtld-servers.net.
+net.                   172800  IN      NS      l.gtld-servers.net.
+net.                   172800  IN      NS      m.gtld-servers.net.
+net.                   86400   IN      DS      35886 8 2 7862B27F5F516EBE19680444D4CE5E762981931842C465F00236401D8BD973EE
+
+a.gtld-servers.net.    172800  IN      A       192.5.6.30
+a.gtld-servers.net.    172800  IN      AAAA    2001:503:a83e:0:0:0:2:30
+b.gtld-servers.net.    172800  IN      A       192.33.14.30
+b.gtld-servers.net.    172800  IN      AAAA    2001:503:231d:0:0:0:2:30
+c.gtld-servers.net.    172800  IN      A       192.26.92.30
+d.gtld-servers.net.    172800  IN      A       192.31.80.30
+e.gtld-servers.net.    172800  IN      A       192.12.94.30
+f.gtld-servers.net.    172800  IN      A       192.35.51.30
+g.gtld-servers.net.    172800  IN      A       192.42.93.30
+h.gtld-servers.net.    172800  IN      A       192.54.112.30
+i.gtld-servers.net.    172800  IN      A       192.43.172.30
+j.gtld-servers.net.    172800  IN      A       192.48.79.30
+k.gtld-servers.net.    172800  IN      A       192.52.178.30
+l.gtld-servers.net.    172800  IN      A       192.41.162.30
+m.gtld-servers.net.    172800  IN      A       192.55.83.30
index 19ed1620c2b4077ea16d86fa274a4dcda7c6491e..04c9d125ed745beb68355c9961585aada7c8b9c9 100644 (file)
@@ -65,6 +65,10 @@ __EOF__
                        then
                                $PDNSUTIL --config-dir=. --config-name=bind set-nsec3 $zone '1 1 1 abcd' narrow 2>&1
                        fi
+                       if [ "$zone" = "tsig.com" ]; then
+                               $PDNSUTIL --config-dir=. --config-name=bind import-tsig-key test $ALGORITHM $KEY
+                               $PDNSUTIL --config-dir=. --config-name=bind activate-tsig-key tsig.com test master
+                       fi
                done
 
                if [ $context = bind-dnssec-nsec3 ] || [ $context = bind-hybrid-nsec3 ]
@@ -84,9 +88,6 @@ __EOF__
                        skipreasons="nodyndns"
                fi
 
-               $PDNSUTIL --config-dir=. --config-name=bind import-tsig-key test $ALGORITHM $KEY
-               $PDNSUTIL --config-dir=. --config-name=bind activate-tsig-key tsig.com test master
-
                $RUNWRAPPER $PDNS --daemon=no --local-port=$port --config-dir=. \
                        --config-name=bind --socket-dir=./ --no-shuffle \
                        --cache-ttl=$cachettl --dname-processing \
index 91d36040f6de425914d13f0c69eed0c8c8a7ccec..c9a79927270ca504ddf890ef88f63716219c72c0 100644 (file)
@@ -3,6 +3,9 @@
 
        for zone in $(grep 'zone ' named.conf  | cut -f2 -d\")
        do
+               if [ "$zone" = "." ]; then
+                       zone="ROOT"
+               fi
                rm -rf zones/$zone-slave
        done
 
        echo $skipreasons | grep -q nodnssec
        if [ $? -ne 0 ]
        then
-               sqlite3 dnssec-slave.sqlite3 "INSERT INTO tsigkeys (name, algorithm,secret) VALUES('test', '$ALGORITHM', '$KEY')"
-               sqlite3 dnssec-slave.sqlite3 "INSERT INTO domainmetadata (domain, kind, content) SELECT 'tsig.com', 'AXFR-MASTER-TSIG', 'test'"
+               sqlite3 dnssec-slave.sqlite3 "select name from domains where name = 'tsig.com'" | grep -q tsig.com
+               if [ $? -ne 0 ]; then
+                       sqlite3 dnssec-slave.sqlite3 "INSERT INTO tsigkeys (name, algorithm,secret) VALUES('test', '$ALGORITHM', '$KEY')"
+                       sqlite3 dnssec-slave.sqlite3 "INSERT INTO domainmetadata (domain, kind, content) SELECT 'tsig.com', 'AXFR-MASTER-TSIG', 'test'"
+               fi
                echo $skipreasons | grep -q nolua
                if [ $? -ne 0 ]
                then
index 5f4856f17202afcbb65960fc7e76bf24f3b0c4a8..3ce84f19da619c3385372b1e66ce22cb137ba127 100644 (file)
@@ -29,15 +29,17 @@ __EOF__
        do
                mysql --user="$GMYSQL2USER" --password="$GMYSQL2PASSWD" --host="$GMYSQL2HOST" \
                        "$GMYSQL2DB" -e "INSERT INTO domains (name, type, master) VALUES('$zone','SLAVE','127.0.0.1:$port')"
+               if [ "$zone" = "tsig.com" ]; then
+                       $PDNSUTIL --config-dir=. --config-name=gmysql2 import-tsig-key test $ALGORITHM $KEY
+                       $PDNSUTIL --config-dir=. --config-name=gmysql2 activate-tsig-key tsig.com test slave
+               fi
+               if [ "$zone" = "stest.com" ]; then
+                       if [[ $skipreasons != *nolua* ]]; then
+                               $PDNSUTIL --config-dir=. --config-name=gmysql2 set-meta stest.com AXFR-SOURCE 127.0.0.2
+                       fi
+               fi
        done
 
-       $PDNSUTIL --config-dir=. --config-name=gmysql2 import-tsig-key test $ALGORITHM $KEY
-       $PDNSUTIL --config-dir=. --config-name=gmysql2 activate-tsig-key tsig.com test slave
-       if [[ $skipreasons != *nolua* ]]
-       then
-               $PDNSUTIL --config-dir=. --config-name=gmysql2 set-meta stest.com AXFR-SOURCE 127.0.0.2
-       fi
-
        port=$((port+100))
 
        $RUNWRAPPER $PDNS2 --daemon=no --local-port=$port --config-dir=. \
index 7905dd76c573cc2af9dc1e79bc19720c0316159f..8a16b1bc66a2ee61f2565986df3a0b0e0197d493 100644 (file)
@@ -16,15 +16,17 @@ __EOF__
        for zone in $(grep 'zone ' named.conf  | cut -f2 -d\" | tac)
        do
                echo "INSERT INTO domains (name, type, master) VALUES('$zone','SLAVE','127.0.0.1:$port');" | $ISQL -b
+               if [ "$zone" = "tsig.com" ]; then
+                       ../pdns/pdnssec --config-dir=. --config-name=godbc2 import-tsig-key test $ALGORITHM $KEY
+                       ../pdns/pdnssec --config-dir=. --config-name=godbc2 activate-tsig-key tsig.com test slave
+               fi
+               if [ "$zone" = "stest.com" ]; then
+                       if [[ $skipreasons != *nolua* ]]; then
+                               $PDNSUTIL --config-dir=. --config-name=gmysql2 set-meta stest.com AXFR-SOURCE 127.0.0.2
+                       fi
+               fi
        done
 
-       ../pdns/pdnssec --config-dir=. --config-name=godbc2 import-tsig-key test $ALGORITHM $KEY
-       ../pdns/pdnssec --config-dir=. --config-name=godbc2 activate-tsig-key tsig.com test slave
-       if [[ $skipreasons != *nolua* ]]
-       then
-               ../pdns/pdnssec --config-dir=. --config-name=godbc2 set-meta stest.com AXFR-SOURCE 127.0.0.2
-       fi
-
        port=$((port+100))
 
        $RUNWRAPPER $PDNS2 --daemon=no --local-port=$port --config-dir=. \
index 903c3dbc805454b7c6fd1b0e3ee9a9aefaadfeef..bbeb81298ff9b1f6b1f5ec33a4f8af1f315c5adf 100644 (file)
@@ -23,15 +23,17 @@ __EOF__
                psql --user="$GPGSQL2USER" \
                -c "INSERT INTO domains (name, type, master) VALUES('$zone','SLAVE','127.0.0.1:$port')" \
                "$GPGSQL2DB"
+               if [ "$zone" = "tsig.com" ]; then
+                       $PDNSUTIL --config-dir=. --config-name=gpgsql2 import-tsig-key test $ALGORITHM $KEY
+                       $PDNSUTIL --config-dir=. --config-name=gpgsql2 activate-tsig-key tsig.com test slave
+               fi
+               if [ "$zone" = "stest.com" ]; then
+                       if [[ $skipreasons != *nolua* ]]; then
+                               $PDNSUTIL --config-dir=. --config-name=gmysql2 set-meta stest.com AXFR-SOURCE 127.0.0.2
+                       fi
+               fi
        done
 
-       $PDNSUTIL --config-dir=. --config-name=gpgsql2 import-tsig-key test $ALGORITHM $KEY
-       $PDNSUTIL --config-dir=. --config-name=gpgsql2 activate-tsig-key tsig.com test slave
-       if [[ $skipreasons != *nolua* ]]
-       then
-               $PDNSUTIL --config-dir=. --config-name=gpgsql2 set-meta stest.com AXFR-SOURCE 127.0.0.2
-       fi
-
        port=$((port+100))
 
        $RUNWRAPPER $PDNS2 --daemon=no --local-port=$port --config-dir=. \
index 99f1d3d4de8bd1b3abd9e7c241fca19802906011..a2e3b45ba60acb6ac4aab2047897b8d864226cab 100644 (file)
@@ -28,10 +28,12 @@ gsql_master()
                else
                        $PDNSUTIL --config-dir=. --config-name=$backend rectify-zone $zone 2>&1
                fi
+               if [ "$zone" = "tsig.com" ]; then
+                       $PDNSUTIL --config-dir=. --config-name=$backend import-tsig-key test $ALGORITHM $KEY
+                       $PDNSUTIL --config-dir=. --config-name=$backend activate-tsig-key tsig.com test master
+               fi
        done
 
-       $PDNSUTIL --config-dir=. --config-name=$backend import-tsig-key test $ALGORITHM $KEY
-       $PDNSUTIL --config-dir=. --config-name=$backend activate-tsig-key tsig.com test master
 
        $RUNWRAPPER $PDNS --daemon=no --local-port=$port --config-dir=. \
                --config-name=$backend --socket-dir=./ --no-shuffle \
index f7f8c450b57e5dc76f241e5cc4cfd03770073ba9..cfa7ffaa766735e128333c90229589d92fa855a8 100644 (file)
@@ -17,15 +17,17 @@ __EOF__
        for zone in $(grep 'zone ' named.conf  | cut -f2 -d\" | perl -e 'print reverse <STDIN>')
        do
                sqlite3 pdns.sqlite32 "INSERT INTO domains (name, type, master) VALUES('$zone','SLAVE','127.0.0.1:$port');"
+               if [ "$zone" = "tsig.com" ]; then
+                       $PDNSUTIL --config-dir=. --config-name=gsqlite32 import-tsig-key test $ALGORITHM $KEY
+                       $PDNSUTIL --config-dir=. --config-name=gsqlite32 activate-tsig-key tsig.com test slave
+               fi
+               if [ "$zone" = "stest.com" ]; then
+                       if [[ $skipreasons != *nolua* ]]; then
+                               $PDNSUTIL --config-dir=. --config-name=gmysql2 set-meta stest.com AXFR-SOURCE 127.0.0.2
+                       fi
+               fi
        done
 
-       $PDNSUTIL --config-dir=. --config-name=gsqlite32 import-tsig-key test $ALGORITHM $KEY
-       $PDNSUTIL --config-dir=. --config-name=gsqlite32 activate-tsig-key tsig.com test slave
-       if [[ $skipreasons != *nolua* ]]
-       then
-               $PDNSUTIL --config-dir=. --config-name=gsqlite32 set-meta stest.com AXFR-SOURCE 127.0.0.2
-       fi
-
        port=$((port+100))
 
        $RUNWRAPPER $PDNS2 --daemon=no --local-port=$port --config-dir=. \