]> git.ipfire.org Git - thirdparty/bind9.git/commitdiff
Fix resolver tests: prefetch 40/41
authorDiego Fronza <diego@isc.org>
Mon, 2 Dec 2019 22:19:56 +0000 (19:19 -0300)
committerMichał Kępień <michal@isc.org>
Thu, 9 Jan 2020 10:27:23 +0000 (11:27 +0100)
These two tests were failing basically because in order for prefetching to
happen, the TTL for a given DNS record must be greater than or equal to
the prefetch config value + 9.

The previous TTL for both records was 10, while prefetch value in
configuration was 3, thus making only records with TTL >= 12 elligible
for prefetching.

TTL value for both records was adjusted to the value 13, and prefetch
value was set to 4 (inc by 1), so records with TTL (4 + 9) >= 13 are
elligible for prefetching.

Adjusting prefetch value to 4 gives the test 1 second more to avoid time
problems when sharing resources on a heavy loaded PC.

Also prefetch value in settings is now read by the script and used
by it to corrrectly calculate the amount of time needed to delay before
sending a request to trigger prefetch, adding a bit of flexibility to
fine tune the test in the future.

(cherry picked from commit a711d6f8c012d65da2635e857e0d6a04b859c428)

bin/tests/system/resolver/ns5/named.conf.in
bin/tests/system/resolver/ns6/example.net.db.in
bin/tests/system/resolver/ns6/fetch.tld.db
bin/tests/system/resolver/tests.sh

index b1d431e703859c23219f6d4083645c31dcf7b990..c81a3ba5de47ec99bb55aa5f03bb395e4bc45e80 100644 (file)
@@ -22,6 +22,7 @@ options {
        recursion yes;
        dnssec-validation yes;
        querylog yes;
+       prefetch 4 10;
 };
 
 server 10.53.0.7 {
index fa4e96aad842e3f101f7264c82d42110ac17ad6c..eab3267b79d367e7b6eb82378d7af40d830a524f 100644 (file)
@@ -16,6 +16,6 @@ mail  IN A    10.53.0.6
 fetch 10 IN TXT A short ttl
 non-zero 10 IN TXT A short ttl
 zero 0  IN TXT A zero ttl
-$TTL 10
+$TTL 13
 ds     IN NS   ns.ds
 ns.ds  IN A    10.53.0.6
index 3754373ec7cd8d13b3513cf2994697158081f10a..b38fd51601191cb5eb7ea889ad48db8b00d7c40b 100644 (file)
@@ -18,4 +18,4 @@ $TTL 300
 @                      NS      ns.fetch.tld.
 ns.fetch.tld.          A       10.53.0.6
 
-@      10              TXT     A short ttl
+@      13              TXT     A short ttl
index ee886fd0b29b40184d8e00d3b76e5e478ff6590e..73133bb1185e972d5acb9e05642c5cb5fdf9cb4a 100755 (executable)
@@ -451,10 +451,13 @@ status=`expr $status + $ret`
 n=`expr $n + 1`
 echo_i "check prefetch (${n})"
 ret=0
+# read prefetch value from config.
+PREFETCH=`sed -n "s/[[:space:]]*prefetch \([0-9]\).*/\1/p" ns5/named.conf`
 $DIG $DIGOPTS @10.53.0.5 fetch.tld txt > dig.out.1.${n} || ret=1
-ttl1=`awk '/"A" "short" "ttl"/ { print $2 - 2 }' dig.out.1.${n}`
+ttl1=`awk '/"A" "short" "ttl"/ { print $2 }' dig.out.1.${n}`
+interval=$((ttl1 - PREFETCH + 1))
 # sleep so we are in prefetch range
-sleep ${ttl1:-0}
+sleep ${interval:-0}
 # trigger prefetch
 $DIG $DIGOPTS @10.53.0.5 fetch.tld txt > dig.out.2.${n} || ret=1
 ttl2=`awk '/"A" "short" "ttl"/ { print $2 }' dig.out.2.${n}`
@@ -470,9 +473,10 @@ n=`expr $n + 1`
 echo_i "check prefetch of validated DS's RRSIG TTL is updated (${n})"
 ret=0
 $DIG $DIGOPTS +dnssec @10.53.0.5 ds.example.net ds > dig.out.1.${n} || ret=1
-dsttl1=`awk '$4 == "DS" && $7 == "1" { print $2 - 2 }' dig.out.1.${n}`
+dsttl1=`awk '$4 == "DS" && $7 == "1" { print $2 }' dig.out.1.${n}`
 # sleep so we are in prefetch range
-sleep ${dsttl1:-0}
+interval=$((dsttl1 - PREFETCH + 1))
+sleep ${interval:-0}
 # trigger prefetch
 $DIG $DIGOPTS @10.53.0.5 ds.example.net ds > dig.out.2.${n} || ret=1
 dsttl2=`awk '$4 == "DS" && $7 == "1" { print $2 }' dig.out.2.${n}`