From 7942bc93e27334f4bfa56ac1e08fa1ad701980dc Mon Sep 17 00:00:00 2001 From: Evan Hunt Date: Wed, 23 Jan 2019 18:32:36 -0800 Subject: [PATCH] fix sfcache test use a lame server configuration to force SERVFAILs instead of killing ns2. this prevents test failures that occurred due to a different behavior of the netowrking stack in windows. --- bin/tests/system/sfcache/ns1/root.db.in | 2 ++ bin/tests/system/sfcache/tests.sh | 26 ++++++++++++------------- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/bin/tests/system/sfcache/ns1/root.db.in b/bin/tests/system/sfcache/ns1/root.db.in index dab5cea7f7..9ee20905b7 100644 --- a/bin/tests/system/sfcache/ns1/root.db.in +++ b/bin/tests/system/sfcache/ns1/root.db.in @@ -20,3 +20,5 @@ a.root-servers.nil. A 10.53.0.1 example. NS ns2.example. ns2.example. A 10.53.0.2 +example2. NS ns2.example2. +ns2.example2. A 10.53.0.2 diff --git a/bin/tests/system/sfcache/tests.sh b/bin/tests/system/sfcache/tests.sh index 40c9f86347..19e34a724e 100644 --- a/bin/tests/system/sfcache/tests.sh +++ b/bin/tests/system/sfcache/tests.sh @@ -59,20 +59,20 @@ n=$((n+1)) if [ $ret != 0 ]; then echo_i "failed"; fi status=$((status+ret)) -echo_i "disabling server to force non-dnssec SERVFAIL" -"$PERL" "$SYSTEMTESTTOP/stop.pl" --use-rndc --port "${CONTROLPORT}" sfcache ns2 +echo_i "switching to non-dnssec SERVFAIL tests" +ret=0 +rndc_with_opts 10.53.0.5 flush 2>&1 | sed 's/^/I:ns5 /' +rndc_with_opts 10.53.0.5 dumpdb -all 2>&1 | sed 's/^/I:ns5 /' awk '/SERVFAIL/ { next; out=1 } /Zone/ { out=0 } { if (out) print }' ns5/named_dump.db echo_i "checking SERVFAIL is cached ($n)" -ret=0 -dig_with_opts bar.example. a @10.53.0.5 > dig.out.ns5.test$n || ret=1 -rndc_with_opts 10.53.0.5 dumpdb -all 2>&1 | sed 's/^/I:ns5 /' -# shellcheck disable=SC2034 +dig_with_opts bar.example2. a @10.53.0.5 > dig.out.ns5.test$n || ret=1 for i in 1 2 3 4 5 6 7 8 9 10; do + rndc_with_opts 10.53.0.5 dumpdb -all 2>&1 | sed 's/^/I:ns5 /' + sleep 1 awk '/Zone/{out=0} { if (out) print } /SERVFAIL/{out=1}' ns5/named_dump.db > sfcache.$n [ -s "sfcache.$n" ] && break - sleep 1 done -grep "^; bar.example/A" sfcache.$n > /dev/null || ret=1 +grep "^; bar.example2/A" sfcache.$n > /dev/null || ret=1 n=$((n+1)) if [ $ret != 0 ]; then echo_i "failed"; fi status=$((status+ret)) @@ -80,17 +80,17 @@ status=$((status+ret)) echo_i "checking SERVFAIL is returned from cache ($n)" ret=0 nextpart ns5/named.run > /dev/null -dig_with_opts bar.example. a @10.53.0.5 > dig.out.ns5.test$n || ret=1 +dig_with_opts bar.example2. a @10.53.0.5 > dig.out.ns5.test$n || ret=1 grep "SERVFAIL" dig.out.ns5.test$n > /dev/null || ret=1 nextpart ns5/named.run > ns5/named.run.part$n -grep 'servfail cache hit bar.example/A (CD=0)' ns5/named.run.part$n > /dev/null || ret=1 +grep 'servfail cache hit bar.example2/A (CD=0)' ns5/named.run.part$n > /dev/null || ret=1 n=$((n+1)) if [ $ret != 0 ]; then echo_i "failed"; fi status=$((status+ret)) echo_i "checking cache is bypassed with +cd query ($n)" ret=0 -dig_with_opts +cd bar.example. a @10.53.0.5 > dig.out.ns5.test$n || ret=1 +dig_with_opts +cd bar.example2. a @10.53.0.5 > dig.out.ns5.test$n || ret=1 grep "SERVFAIL" dig.out.ns5.test$n > /dev/null || ret=1 nextpart ns5/named.run > ns5/named.run.part$n grep 'servfail cache hit' ns5/named.run.part$n > /dev/null && ret=1 @@ -100,10 +100,10 @@ status=$((status+ret)) echo_i "checking cache is used for subsequent +cd query ($n)" ret=0 -dig_with_opts +dnssec bar.example. a @10.53.0.5 > dig.out.ns5.test$n || ret=1 +dig_with_opts +dnssec bar.example2. a @10.53.0.5 > dig.out.ns5.test$n || ret=1 grep "SERVFAIL" dig.out.ns5.test$n > /dev/null || ret=1 nextpart ns5/named.run > ns5/named.run.part$n -grep 'servfail cache hit bar.example/A (CD=1)' ns5/named.run.part$n > /dev/null || ret=1 +grep 'servfail cache hit bar.example2/A (CD=1)' ns5/named.run.part$n > /dev/null || ret=1 n=$((n+1)) if [ $ret != 0 ]; then echo_i "failed"; fi status=$((status+ret))