tests.sh revision cef76ee5bd845a80e06da934edce4225bdba22a1
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellington# Copyright (C) 2011-2014 Internet Systems Consortium, Inc. ("ISC")
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews#
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellington# Permission to use, copy, modify, and/or distribute this software for any
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews# purpose with or without fee is hereby granted, provided that the above
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews# copyright notice and this permission notice appear in all copies.
0c27b3fe77ac1d5094ba3521e8142d9e7973133fMark Andrews#
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellington# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellington# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
ab023a65562e62b85a824509d829b6fad87e00b1Rob Austein# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
d4ef65050feac78554addf6e16a06c6e2e0bd331Brian Wellington# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington# PERFORMANCE OF THIS SOFTWARE.
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington# $Id$
368aedf188d7c7782cae8a5ce2a978be47b5a764Evan Hunt
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
5cd7e9d4db393c314dd1a761c52d2cb3a4da9b72Andreas Gustafsson# test response policy zones (RPZ)
7332e47e11ceb87928f801b925269aa6a91838b1David Lawrence
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark AndrewsSYSTEMTESTTOP=..
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington. $SYSTEMTESTTOP/conf.sh
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonns=10.53.0
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonns1=$ns.1 # root, defining the others
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonns2=$ns.2 # authoritative server whose records are rewritten
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonns3=$ns.3 # main rewriting resolver
669e9657c731176df235832367f61435f7b83ddfAndreas Gustafssonns4=$ns.4 # another authoritative server that is rewritten
c2bc56dc65b4b103a5600565680eb5f33fa4c90bMark Andrewsns5=$ns.5 # another rewriting resolver
c2bc56dc65b4b103a5600565680eb5f33fa4c90bMark Andrewsns6=$ns.6 # a forwarding server
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonns7=$ns.7 # another rewriting resolver
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian WellingtonHAVE_CORE=
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian WellingtonSAVE_RESULTS=
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian WellingtonUSAGE="$0: [-x]"
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewswhile getopts "x" c; do
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington case $c in
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington x) set -x;;
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington *) echo "$USAGE" 1>&2; exit 1;;
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington esac
3dfc806ddf433d0569340d9c4ccc5af8ec41a27bBrian Wellingtondone
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonshift `expr $OPTIND - 1 || true`
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonif test "$#" -ne 0; then
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington echo "$USAGE" 1>&2
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington exit 1
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonfi
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington# really quit on control-C
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtontrap 'exit 1' 1 2 15
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian WellingtonTS='%H:%M:%S '
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian WellingtonTS=
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtoncomment () {
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington if test -n "$TS"; then
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington date "+I:${TS}$*"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington fi
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington}
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian WellingtonRNDCCMD="$RNDC -c $SYSTEMTESTTOP/common/rndc.conf -p 9953 -s"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtondigcmd () {
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington if test "$1" = TCP; then
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington shift
4eb998928b9aef0ceda42d7529980d658138698aEvan Hunt fi
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington # Default to +noauth and @$ns3
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington # Also default to -bX where X is the @value so that OS X will choose
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington # the right IP source address.
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington digcmd_args=`echo "+noadd +time=1 +tries=1 -p 5300 $*" | \
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington sed -e "/@/!s/.*/& @$ns3/" \
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington -e '/-b/!s/@\([^ ]*\)/@\1 -b\1/' \
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington -e '/+n?o?auth/!s/.*/+noauth &/'`
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington #echo I:dig $digcmd_args 1>&2
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington $DIG $digcmd_args
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington}
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Hunt
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington# set DIGNM=file name for dig output
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark AndrewsGROUP_NM=
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian WellingtonTEST_NUM=0
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonmake_dignm () {
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington TEST_NUM=`expr $TEST_NUM + 1`
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington DIGNM=dig.out$GROUP_NM-$TEST_NUM
532989b206894bdaf6de6cb883d2e31169c4bfacAndreas Gustafsson while test -f $DIGNM; do
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington TEST_NUM="$TEST_NUM+"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington DIGNM=dig.out$GROUP_NM-$TEST_NUM
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington done
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington}
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonsetret () {
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington ret=1
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington status=`expr $status + 1`
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington echo "$*"
4423c99613db1399dbb5c51e86ef0d351a1418c2Mark Andrews}
4423c99613db1399dbb5c51e86ef0d351a1418c2Mark Andrews
4423c99613db1399dbb5c51e86ef0d351a1418c2Mark Andrews# (re)load the reponse policy zones with the rules in the file $TEST_FILE
4423c99613db1399dbb5c51e86ef0d351a1418c2Mark Andrewsload_db () {
58f7af60e79a5aaf58f6a8861c306d4c617fb1d1Mukund Sivaraman if test -n "$TEST_FILE"; then
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington if $NSUPDATE -v $TEST_FILE; then :
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington $RNDCCMD $ns3 sync
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington else
532989b206894bdaf6de6cb883d2e31169c4bfacAndreas Gustafsson echo "I:failed to update policy zone with $TEST_FILE"
532989b206894bdaf6de6cb883d2e31169c4bfacAndreas Gustafsson $RNDCCMD $ns3 sync
532989b206894bdaf6de6cb883d2e31169c4bfacAndreas Gustafsson exit 1
b32e75f3e1822f14681c538d7657bdbccd7fcd45Brian Wellington fi
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrews fi
532989b206894bdaf6de6cb883d2e31169c4bfacAndreas Gustafsson}
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonrestart () {
091329e690b20755aa80b86cc7389d25c5d32c9bBrian Wellington # try to ensure that the server really has stopped
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington # and won't mess with ns$1/name.pid
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrews if test -z "$HAVE_CORE" -a -f ns$1/named.pid; then
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrews $RNDCCMD $ns$1 halt >/dev/null 2>&1
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington if test -f ns$1/named.pid; then
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington sleep 1
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington PID=`cat ns$1/named.pid 2>/dev/null`
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington if test -n "$PID"; then
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington echo "I:killing ns$1 server $PID"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington kill -9 $PID
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington fi
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington fi
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington fi
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington rm -f ns$1/*.jnl
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington if test -f ns$1/base.db; then
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington for NM in ns$1/bl*.db; do
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington cp -f ns$1/base.db $NM
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington done
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington fi
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington $PERL $SYSTEMTESTTOP/start.pl --noclean --restart . ns$1
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington load_db
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington}
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington# $1=server and irrelevant args $2=error message
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonckalive () {
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington CKALIVE_NS=`expr "$1" : '.*@ns\([1-9]\).*'`
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington if test -z "$CKALIVE_NS"; then
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington CKALIVE_NS=3
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington fi
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington eval CKALIVE_IP=\$ns$CKALIVE_NS
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington $RNDCCMD $CKALIVE_IP status >/dev/null 2>&1 && return 0
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington HAVE_CORE=yes
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington setret "$2"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington # restart the server to avoid stalling waiting for it to stop
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington restart $CKALIVE_NS
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington return 1
3a0da183bb40bd120698102b20b61ef12665c09bMark Andrews}
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonckstats () {
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington HOST=$1
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington LABEL="$2"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington NSDIR="$3"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington EXPECTED="$4"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington $RNDCCMD $HOST stats
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington NEW_CNT=0`sed -n -e 's/[ ]*\([0-9]*\).response policy.*/\1/p' \
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington $NSDIR/named.stats | tail -1`
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington eval "OLD_CNT=0\$${NSDIR}_CNT"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington GOT=`expr $NEW_CNT - $OLD_CNT`
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington if test "$GOT" -ne "$EXPECTED"; then
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington setret "I:wrong $LABEL $NSDIR statistics of $GOT instead of $EXPECTED"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington fi
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Hunt eval "${NSDIR}_CNT=$NEW_CNT"
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Hunt}
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Hunt
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonckstatsrange () {
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington HOST=$1
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington LABEL="$2"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington NSDIR="$3"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington MIN="$4"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington MAX="$5"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington $RNDCCMD $HOST stats
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington NEW_CNT=0`sed -n -e 's/[ ]*\([0-9]*\).response policy.*/\1/p' \
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington $NSDIR/named.stats | tail -1`
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington eval "OLD_CNT=0\$${NSDIR}_CNT"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington GOT=`expr $NEW_CNT - $OLD_CNT`
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington if test "$GOT" -lt "$MIN" -o "$GOT" -gt "$MAX"; then
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington setret "I:wrong $LABEL $NSDIR statistics of $GOT instead of ${MIN}..${MAX}"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington fi
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington eval "${NSDIR}_CNT=$NEW_CNT"
19d80ce5844e00a021643759adcbe27c11b485a0Witold Krecicki}
19d80ce5844e00a021643759adcbe27c11b485a0Witold Krecicki
19d80ce5844e00a021643759adcbe27c11b485a0Witold Krecicki# $1=message $2=optional test file name
19d80ce5844e00a021643759adcbe27c11b485a0Witold Krecickistart_group () {
19d80ce5844e00a021643759adcbe27c11b485a0Witold Krecicki ret=0
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington test -n "$1" && date "+I:${TS}checking $1"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington TEST_FILE=$2
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington if test -n "$TEST_FILE"; then
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington GROUP_NM="-$TEST_FILE"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington load_db
32d248107a5bc92b4bf9fc77deaa55b3da969ba2Andreas Gustafsson else
32d248107a5bc92b4bf9fc77deaa55b3da969ba2Andreas Gustafsson GROUP_NM=
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington fi
ed3418751ebdf7de397df76753dae97851d2bdf9Brian Wellington TEST_NUM=0
ed3418751ebdf7de397df76753dae97851d2bdf9Brian Wellington}
ed3418751ebdf7de397df76753dae97851d2bdf9Brian Wellington
32d248107a5bc92b4bf9fc77deaa55b3da969ba2Andreas Gustafssonend_group () {
32d248107a5bc92b4bf9fc77deaa55b3da969ba2Andreas Gustafsson if test -n "$TEST_FILE"; then
ed3418751ebdf7de397df76753dae97851d2bdf9Brian Wellington # remove the previous set of test rules
ed3418751ebdf7de397df76753dae97851d2bdf9Brian Wellington sed -e 's/[ ]add[ ]/ delete /' $TEST_FILE | $NSUPDATE
ed3418751ebdf7de397df76753dae97851d2bdf9Brian Wellington TEST_FILE=
ed3418751ebdf7de397df76753dae97851d2bdf9Brian Wellington fi
ed3418751ebdf7de397df76753dae97851d2bdf9Brian Wellington ckalive $ns3 "I:failed; ns3 server crashed and restarted"
4423c99613db1399dbb5c51e86ef0d351a1418c2Mark Andrews GROUP_NM=
4423c99613db1399dbb5c51e86ef0d351a1418c2Mark Andrews}
ed3418751ebdf7de397df76753dae97851d2bdf9Brian Wellington
ed3418751ebdf7de397df76753dae97851d2bdf9Brian Wellingtonclean_result () {
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington if test -z "$SAVE_RESULTS"; then
32d248107a5bc92b4bf9fc77deaa55b3da969ba2Andreas Gustafsson rm -f $*
32d248107a5bc92b4bf9fc77deaa55b3da969ba2Andreas Gustafsson fi
32d248107a5bc92b4bf9fc77deaa55b3da969ba2Andreas Gustafsson}
32d248107a5bc92b4bf9fc77deaa55b3da969ba2Andreas Gustafsson
32d248107a5bc92b4bf9fc77deaa55b3da969ba2Andreas Gustafsson# $1=dig args $2=other dig output file
32d248107a5bc92b4bf9fc77deaa55b3da969ba2Andreas Gustafssonckresult () {
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington #ckalive "$1" "I:server crashed by 'dig $1'" || return 1
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington if grep "flags:.* aa .*ad;" $DIGNM; then
32d248107a5bc92b4bf9fc77deaa55b3da969ba2Andreas Gustafsson setret "I:'dig $1' AA and AD set;"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington elif grep "flags:.* aa .*ad;" $DIGNM; then
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington setret "I:'dig $1' AD set;"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington fi
32d248107a5bc92b4bf9fc77deaa55b3da969ba2Andreas Gustafsson if $PERL $SYSTEMTESTTOP/digcomp.pl $DIGNM $2 >/dev/null; then
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington NEED_TCP=`echo "$1" | sed -n -e 's/[Tt][Cc][Pp].*/TCP/p'`
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington RESULT_TCP=`sed -n -e 's/.*Truncated, retrying in TCP.*/TCP/p' $DIGNM`
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington if test "$NEED_TCP" != "$RESULT_TCP"; then
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington setret "I:'dig $1' wrong; no or unexpected truncation in $DIGNM"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington return 1
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington fi
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington clean_result ${DIGNM}*
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington return 0
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington fi
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington setret "I:'dig $1' wrong; diff $DIGNM $2"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington return 1
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington}
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington# check only that the server does not crash
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington# $1=target domain $2=optional query type
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonnocrash () {
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington digcmd $* >/dev/null
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington ckalive "$*" "I:server crashed by 'dig $*'"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington}
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington# check rewrite to NXDOMAIN
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington# $1=target domain $2=optional query type
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonnxdomain () {
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington make_dignm
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington digcmd $* \
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington | sed -e 's/^[a-z].* IN CNAME /;xxx &/' \
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington -e 's/^[a-z].* IN RRSIG /;xxx &/' \
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington >$DIGNM
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington ckresult "$*" proto.nxdomain
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington}
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington# check rewrite to NODATA
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington# $1=target domain $2=optional query type
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonnodata () {
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington make_dignm
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington digcmd $* \
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington | sed -e 's/^[a-z].* IN CNAME /;xxx &/' >$DIGNM
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington ckresult "$*" proto.nodata
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington}
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington# check rewrite to an address
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington# modify the output so that it is easily compared, but save the original line
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington# $1=IPv4 address $2=digcmd args $3=optional TTL
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonaddr () {
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington ADDR=$1
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington make_dignm
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington digcmd $2 >$DIGNM
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington #ckalive "$2" "I:server crashed by 'dig $2'" || return 1
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington ADDR_ESC=`echo "$ADDR" | sed -e 's/\./\\\\./g'`
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington ADDR_TTL=`sed -n -e "s/^[-.a-z0-9]\{1,\} *\([0-9]*\) IN AA* ${ADDR_ESC}\$/\1/p" $DIGNM`
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington if test -z "$ADDR_TTL"; then
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington setret "I:'dig $2' wrong; no address $ADDR record in $DIGNM"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington return 1
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington fi
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington if test -n "$3" && test "$ADDR_TTL" -ne "$3"; then
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington setret "I:'dig $2' wrong; TTL=$ADDR_TTL instead of $3 in $DIGNM"
091329e690b20755aa80b86cc7389d25c5d32c9bBrian Wellington return 1
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington fi
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington clean_result ${DIGNM}*
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington}
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington# Check that a response is not rewritten
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington# Use $ns1 instead of the authority for most test domains, $ns2 to prevent
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington# spurious differences for `dig +norecurse`
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington# $1=optional "TCP" remaining args for dig
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonnochange () {
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington make_dignm
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington digcmd $* >$DIGNM
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington digcmd $* @$ns1 >${DIGNM}_OK
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington ckresult "$*" ${DIGNM}_OK && clean_result ${DIGNM}_OK
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington}
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington# check against a 'here document'
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonhere () {
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington make_dignm
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington sed -e 's/^[ ]*//' >${DIGNM}_OK
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington digcmd $* >$DIGNM
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington ckresult "$*" ${DIGNM}_OK
091329e690b20755aa80b86cc7389d25c5d32c9bBrian Wellington}
091329e690b20755aa80b86cc7389d25c5d32c9bBrian Wellington
091329e690b20755aa80b86cc7389d25c5d32c9bBrian Wellington# check dropped response
091329e690b20755aa80b86cc7389d25c5d32c9bBrian WellingtonDROPPED='^;; connection timed out; no servers could be reached'
091329e690b20755aa80b86cc7389d25c5d32c9bBrian Wellingtondrop () {
091329e690b20755aa80b86cc7389d25c5d32c9bBrian Wellington make_dignm
091329e690b20755aa80b86cc7389d25c5d32c9bBrian Wellington digcmd $* >$DIGNM
091329e690b20755aa80b86cc7389d25c5d32c9bBrian Wellington if grep "$DROPPED" $DIGNM >/dev/null; then
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington clean_result ${DIGNM}*
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington return 0
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington fi
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington setret "I:'dig $1' wrong; response in $DIGNM"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington return 1
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington}
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington# make prototype files to check against rewritten results
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtondigcmd nonexistent @$ns2 >proto.nxdomain
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtondigcmd txt-only.tld2 @$ns2 >proto.nodata
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonstatus=0
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonstart_group "QNAME rewrites" test1
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonnochange . # 1 do not crash or rewrite root
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonnxdomain a0-1.tld2 # 2
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonnodata a3-1.tld2 # 3
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonnodata a3-2.tld2 # 4 nodata at DNAME itself
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonnochange sub.a3-2.tld2 # 5 miss where DNAME might work
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonnxdomain a4-2.tld2 # 6 rewrite based on CNAME target
4eb998928b9aef0ceda42d7529980d658138698aEvan Huntnxdomain a4-2-cname.tld2 # 7
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonnodata a4-3-cname.tld2 # 8
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonaddr 12.12.12.12 a4-1.sub1.tld2 # 9 A replacement
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonaddr 12.12.12.12 a4-1.sub2.tld2 # 10 A replacement with wildcard
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonaddr 12.12.12.12 nxc1.sub1.tld2 # 11 replace NXDOMAIN with CNAME
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Huntaddr 12.12.12.12 nxc2.sub1.tld2 # 12 replace NXDOMAIN with CNAME chain
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonaddr 127.4.4.1 a4-4.tld2 # 13 prefer 1st conflicting QNAME zone
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonnochange a6-1.tld2 # 14
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewsaddr 127.6.2.1 a6-2.tld2 # 15
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewsaddr 56.56.56.56 a3-6.tld2 # 16 wildcard CNAME
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewsaddr 57.57.57.57 a3-7.sub1.tld2 # 17 wildcard CNAME
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewsaddr 127.0.0.16 a4-5-cname3.tld2 # 18 CNAME chain
9e804040a29b9c3066c8471b43835f30707039b7Evan Huntaddr 127.0.0.17 a4-6-cname3.tld2 # 19 stop short in CNAME chain
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonnochange a5-2.tld2 +norecurse # 20 check that RD=1 is required
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonnochange a5-3.tld2 +norecurse # 21
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonnochange a5-4.tld2 +norecurse # 22
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonnochange sub.a5-4.tld2 +norecurse # 23
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonnxdomain c1.crash2.tld3 # 24 assert in rbtdb.c
4eb998928b9aef0ceda42d7529980d658138698aEvan Huntnxdomain a0-1.tld2 +dnssec # 25 simple DO=1 without signatures
c2da4f9d8a153ffeb2b659541130abef2d586789Brian Wellingtonnxdomain a0-1.tld2s +nodnssec # 26 simple DO=0 with signatures
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Huntnochange a0-1.tld2s +dnssec # 27 simple DO=1 with signatures
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonnxdomain a0-1s-cname.tld2s +dnssec # 28 DNSSEC too early in CNAME chain
2f012d936b5ccdf6520c96a4de23721dc58a2221Automatic Updaternochange a0-1-scname.tld2 +dnssec # 29 DNSSEC on target in CNAME chain
2f012d936b5ccdf6520c96a4de23721dc58a2221Automatic Updaternochange a0-1.tld2s srv +auth +dnssec # 30 no write for DNSSEC and no record
2f012d936b5ccdf6520c96a4de23721dc58a2221Automatic Updaternxdomain a0-1.tld2s srv +nodnssec # 31
640923da589bc5b8492ac407ef89ea1ee9a1c358Andreas Gustafssondrop a3-8.tld2 any # 32 drop
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonnochange tcp a3-9.tld2 # 33 tcp-only
091329e690b20755aa80b86cc7389d25c5d32c9bBrian Wellingtonhere x.servfail <<'EOF' # 34 qname-wait-recurse yes
091329e690b20755aa80b86cc7389d25c5d32c9bBrian Wellington ;; status: SERVFAIL, x
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian WellingtonEOF
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonaddr 35.35.35.35 "x.servfail @$ns5" # 35 qname-wait-recurse no
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonend_group
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonckstats $ns3 test1 ns3 22
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonckstats $ns5 test1 ns5 1
c2da4f9d8a153ffeb2b659541130abef2d586789Brian Wellingtonckstats $ns6 test1 ns6 0
c2da4f9d8a153ffeb2b659541130abef2d586789Brian Wellington
c2da4f9d8a153ffeb2b659541130abef2d586789Brian Wellingtonstart_group "NXDOMAIN/NODATA action on QNAME trigger" test1
c2da4f9d8a153ffeb2b659541130abef2d586789Brian Wellingtonnxdomain a0-1.tld2 @$ns6 # 1
c2da4f9d8a153ffeb2b659541130abef2d586789Brian Wellingtonnodata a3-1.tld2 @$ns6 # 2
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Huntnodata a3-2.tld2 @$ns6 # 3 nodata at DNAME itself
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Huntnxdomain a4-2.tld2 @$ns6 # 4 rewrite based on CNAME target
c2da4f9d8a153ffeb2b659541130abef2d586789Brian Wellingtonnxdomain a4-2-cname.tld2 @$ns6 # 5
c2da4f9d8a153ffeb2b659541130abef2d586789Brian Wellingtonnodata a4-3-cname.tld2 @$ns6 # 6
c2da4f9d8a153ffeb2b659541130abef2d586789Brian Wellingtonaddr 12.12.12.12 "a4-1.sub1.tld2 @$ns6" # 7 A replacement
c2da4f9d8a153ffeb2b659541130abef2d586789Brian Wellingtonaddr 12.12.12.12 "a4-1.sub2.tld2 @$ns6" # 8 A replacement with wildcard
c2da4f9d8a153ffeb2b659541130abef2d586789Brian Wellingtonaddr 127.4.4.1 "a4-4.tld2 @$ns6" # 9 prefer 1st conflicting QNAME zone
e851ea826066ac5a5b01c2c23218faa0273a12e8Evan Huntaddr 12.12.12.12 "nxc1.sub1.tld2 @$ns6" # 10 replace NXDOMAIN w/ CNAME
c2da4f9d8a153ffeb2b659541130abef2d586789Brian Wellingtonaddr 12.12.12.12 "nxc2.sub1.tld2 @$ns6" # 11 replace NXDOMAIN w/ CNAME chain
4eb998928b9aef0ceda42d7529980d658138698aEvan Huntaddr 127.6.2.1 "a6-2.tld2 @$ns6" # 12
4eb998928b9aef0ceda42d7529980d658138698aEvan Huntaddr 56.56.56.56 "a3-6.tld2 @$ns6" # 13 wildcard CNAME
4eb998928b9aef0ceda42d7529980d658138698aEvan Huntaddr 57.57.57.57 "a3-7.sub1.tld2 @$ns6" # 14 wildcard CNAME
c2da4f9d8a153ffeb2b659541130abef2d586789Brian Wellingtonaddr 127.0.0.16 "a4-5-cname3.tld2 @$ns6" # 15 CNAME chain
c2da4f9d8a153ffeb2b659541130abef2d586789Brian Wellingtonaddr 127.0.0.17 "a4-6-cname3.tld2 @$ns6" # 16 stop short in CNAME chain
546c2bf791782df1077217bdaf1865235fa95a93Mark Andrewsnxdomain c1.crash2.tld3 @$ns6 # 17 assert in rbtdb.c
c298583db573a329f37d43301d8c3c812500ac85Mark Andrewsnxdomain a0-1.tld2 +dnssec @$ns6 # 18 simple DO=1 without sigs
c298583db573a329f37d43301d8c3c812500ac85Mark Andrewsnxdomain a0-1s-cname.tld2s +dnssec @$ns6 # 19
c298583db573a329f37d43301d8c3c812500ac85Mark Andrewsdrop a3-8.tld2 any @$ns6 # 20 drop
c298583db573a329f37d43301d8c3c812500ac85Mark Andrews
c2da4f9d8a153ffeb2b659541130abef2d586789Brian Wellingtonend_group
c2da4f9d8a153ffeb2b659541130abef2d586789Brian Wellingtonckstatsrange $ns3 test1 ns3 22 24
c2da4f9d8a153ffeb2b659541130abef2d586789Brian Wellingtonckstats $ns5 test1 ns5 0
c2da4f9d8a153ffeb2b659541130abef2d586789Brian Wellingtonckstats $ns6 test1 ns6 0
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonstart_group "IP rewrites" test2
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonnodata a3-1.tld2 # 1 NODATA
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonnochange a3-2.tld2 # 2 no policy record so no change
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonnochange a4-1.tld2 # 3 obsolete PASSTHRU record style
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonnxdomain a4-2.tld2 # 4
546c2bf791782df1077217bdaf1865235fa95a93Mark Andrewsnochange a4-2.tld2 -taaaa # 5 no A => no policy rewrite
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonnochange a4-2.tld2 -ttxt # 6 no A => no policy rewrite
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonnxdomain a4-2.tld2 -tany # 7 no A => no policy rewrite
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewsnodata a4-3.tld2 # 8
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewsnxdomain a3-1.tld2 -taaaa # 9 IPv6 policy
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewsnochange a4-1-aaaa.tld2 -taaaa # 10
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewsaddr 127.0.0.1 a5-1-2.tld2 # 11 prefer smallest policy address
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewsaddr 127.0.0.1 a5-3.tld2 # 12 prefer first conflicting IP zone
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewsnochange a5-4.tld2 +norecurse # 13 check that RD=1 is required for #14
a2b15b3305acd52179e6f3dc7d073b07fbc40b8eMark Andrewsaddr 14.14.14.14 a5-4.tld2 # 14 prefer QNAME to IP
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewsnochange a4-4.tld2 # 15 PASSTHRU
546c2bf791782df1077217bdaf1865235fa95a93Mark Andrewsnxdomain c2.crash2.tld3 # 16 assert in rbtdb.c
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewsaddr 127.0.0.17 "a4-4.tld2 -b $ns1" # 17 client-IP address trigger
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewsnxdomain a7-1.tld2 # 18 slave policy zone (RT34450)
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewscp ns2/blv2.tld2.db.in ns2/bl.tld2.db
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrews$RNDCCMD 10.53.0.2 reload bl.tld2
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewsgoodsoa="rpz.tld2. hostmaster.ns.tld2. 2 3600 1200 604800 60"
546c2bf791782df1077217bdaf1865235fa95a93Mark Andrewsfor i in 0 1 2 3 4 5 6 7 8 9 10
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewsdo
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrews soa=`$DIG -p 5300 +short soa bl.tld2 @10.53.0.3 -b10.53.0.3`
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrews test "$soa" = "$goodsoa" && break
546c2bf791782df1077217bdaf1865235fa95a93Mark Andrews sleep 1
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewsdone
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewsnochange a7-1.tld2 # 19 PASSTHRU
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewssleep 1 # ensure that a clock tick has occured so that the reload takes effect
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewscp ns2/blv3.tld2.db.in ns2/bl.tld2.db
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewsgoodsoa="rpz.tld2. hostmaster.ns.tld2. 3 3600 1200 604800 60"
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrews$RNDCCMD 10.53.0.2 reload bl.tld2
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewsfor i in 0 1 2 3 4 5 6 7 8 9 10
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewsdo
546c2bf791782df1077217bdaf1865235fa95a93Mark Andrews soa=`$DIG -p 5300 +short soa bl.tld2 @10.53.0.3 -b10.53.0.3`
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrews test "$soa" = "$goodsoa" && break
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrews sleep 1
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewsdone
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewsnxdomain a7-1.tld2 # 20 slave policy zone (RT34450)
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewsend_group
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewsckstats $ns3 test2 ns3 12
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrews
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrews# check that IP addresses for previous group were deleted from the radix tree
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewsstart_group "radix tree deletions"
2f012d936b5ccdf6520c96a4de23721dc58a2221Automatic Updaternochange a3-1.tld2
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewsnochange a3-2.tld2
546c2bf791782df1077217bdaf1865235fa95a93Mark Andrewsnochange a4-1.tld2
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewsnochange a4-2.tld2
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewsnochange a4-2.tld2 -taaaa
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewsnochange a4-2.tld2 -ttxt
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewsnochange a4-2.tld2 -tany
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewsnochange a4-3.tld2
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewsnochange a3-1.tld2 -tAAAA
546c2bf791782df1077217bdaf1865235fa95a93Mark Andrewsnochange a4-1-aaaa.tld2 -tAAAA
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewsnochange a5-1-2.tld2
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewsend_group
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Huntckstats $ns3 'radix tree deletions' ns3 0
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Hunt
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Huntif ./rpz nsdname; then
c1e88f8d8679501def1896fb4c4af927a70813ebEvan Hunt # these tests assume "min-ns-dots 0"
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrews start_group "NSDNAME rewrites" test3
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrews nochange a3-1.tld2 # 1
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrews nochange a3-1.tld2 +dnssec # 2 this once caused problems
c1e88f8d8679501def1896fb4c4af927a70813ebEvan Hunt nxdomain a3-1.sub1.tld2 # 3 NXDOMAIN *.sub1.tld2 by NSDNAME
c1e88f8d8679501def1896fb4c4af927a70813ebEvan Hunt nxdomain a3-1.subsub.sub1.tld2
c1e88f8d8679501def1896fb4c4af927a70813ebEvan Hunt nxdomain a3-1.subsub.sub1.tld2 -tany
c1e88f8d8679501def1896fb4c4af927a70813ebEvan Hunt addr 12.12.12.12 a4-2.subsub.sub2.tld2 # 6 walled garden for *.sub2.tld2
c1e88f8d8679501def1896fb4c4af927a70813ebEvan Hunt nochange a3-2.tld2. # 7 exempt rewrite by name
58f7af60e79a5aaf58f6a8861c306d4c617fb1d1Mukund Sivaraman nochange a0-1.tld2. # 8 exempt rewrite by address block
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington addr 12.12.12.12 a4-1.tld2 # 9 prefer QNAME policy to NSDNAME
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington addr 127.0.0.1 a3-1.sub3.tld2 # 10 prefer policy for largest NSDNAME
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington addr 127.0.0.2 a3-1.subsub.sub3.tld2
546c2bf791782df1077217bdaf1865235fa95a93Mark Andrews nxdomain xxx.crash1.tld2 # 12 dns_db_detachnode() crash
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington end_group
9e804040a29b9c3066c8471b43835f30707039b7Evan Hunt ckstats $ns3 test3 ns3 7
9e804040a29b9c3066c8471b43835f30707039b7Evan Huntelse
9e804040a29b9c3066c8471b43835f30707039b7Evan Hunt echo "I:NSDNAME not checked; named configured with --disable-rpz-nsdname"
9e804040a29b9c3066c8471b43835f30707039b7Evan Huntfi
9e804040a29b9c3066c8471b43835f30707039b7Evan Hunt
9e804040a29b9c3066c8471b43835f30707039b7Evan Huntif ./rpz nsip; then
9e804040a29b9c3066c8471b43835f30707039b7Evan Hunt # these tests assume "min-ns-dots 0"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington start_group "NSIP rewrites" test4
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington nxdomain a3-1.tld2 # 1 NXDOMAIN for all of tld2
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington nochange a3-2.tld2. # 2 exempt rewrite by name
546c2bf791782df1077217bdaf1865235fa95a93Mark Andrews nochange a0-1.tld2. # 3 exempt rewrite by address block
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington nochange a3-1.tld4 # 4 different NS IP address
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington end_group
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Hunt start_group "walled garden NSIP rewrites" test4a
e4cd5a1e5d0358abeee7618b02b4592c055d957fBrian Wellington addr 41.41.41.41 a3-1.tld2 # 1 walled garden for all of tld2
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Hunt addr 2041::41 'a3-1.tld2 AAAA' # 2 walled garden for all of tld2
e4cd5a1e5d0358abeee7618b02b4592c055d957fBrian Wellington here a3-1.tld2 TXT <<'EOF' # 3 text message for all of tld2
546c2bf791782df1077217bdaf1865235fa95a93Mark Andrews ;; status: NOERROR, x
e4cd5a1e5d0358abeee7618b02b4592c055d957fBrian Wellington a3-1.tld2. x IN TXT "NSIP walled garden"
e4cd5a1e5d0358abeee7618b02b4592c055d957fBrian WellingtonEOF
e4cd5a1e5d0358abeee7618b02b4592c055d957fBrian Wellington end_group
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrews ckstats $ns3 test4 ns3 4
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrewselse
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrews echo "I:NSIP not checked; named configured with --disable-rpz-nsip"
546c2bf791782df1077217bdaf1865235fa95a93Mark Andrewsfi
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrews
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Hunt# policies in ./test5 overridden by response-policy{} in ns3/named.conf
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Hunt# and in ns5/named.conf
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Huntstart_group "policy overrides" test5
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Huntaddr 127.0.0.1 a3-1.tld2 # 1 bl-given
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Huntnochange a3-2.tld2 # 2 bl-passthru
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Huntnochange a3-3.tld2 # 3 bl-no-op obsolete for passthru
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Huntnochange a3-4.tld2 # 4 bl-disabled
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Huntnodata a3-5.tld2 # 5 bl-nodata zone recursive-only no
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Huntnodata a3-5.tld2 +norecurse # 6 bl-nodata zone recursive-only no
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Huntnodata a3-5.tld2 # 7 bl-nodata not needed
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Huntnxdomain a3-5.tld2 +norecurse @$ns5 # 8 bl-nodata global recursive-only no
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Huntnxdomain a3-5.tld2s @$ns5 # 9 bl-nodata global break-dnssec
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonnxdomain a3-5.tld2s +dnssec @$ns5 # 10 bl-nodata global break-dnssec
546c2bf791782df1077217bdaf1865235fa95a93Mark Andrewsnxdomain a3-6.tld2 # 11 bl-nxdomain
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Hunthere a3-7.tld2 -tany <<'EOF'
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Hunt ;; status: NOERROR, x
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Hunt a3-7.tld2. x IN CNAME txt-only.tld2.
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Hunt txt-only.tld2. x IN TXT "txt-only-tld2"
e32d354f754a5d7847a0862bcd6302827ea225bfEvan HuntEOF
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Huntaddr 58.58.58.58 a3-8.tld2 # 13 bl_wildcname
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonaddr 59.59.59.59 a3-9.sub9.tld2 # 14 bl_wildcname
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonaddr 12.12.12.12 a3-15.tld2 # 15 bl-garden via CNAME to a12.tld2
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonaddr 127.0.0.16 a3-16.tld2 100 # 16 bl max-policy-ttl 100
546c2bf791782df1077217bdaf1865235fa95a93Mark Andrewsaddr 17.17.17.17 "a3-17.tld2 @$ns5" 90 # 17 ns5 bl max-policy-ttl 90
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtondrop a3-18.tld2 any # 18 bl-drop
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonnxdomain TCP a3-19.tld2 # 19 bl-tcp-only
546c2bf791782df1077217bdaf1865235fa95a93Mark Andrewsend_group
546c2bf791782df1077217bdaf1865235fa95a93Mark Andrewsckstats $ns3 test5 ns3 12
546c2bf791782df1077217bdaf1865235fa95a93Mark Andrewsckstats $ns5 test5 ns5 4
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Hunt
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington# check that miscellaneous bugs are still absent
546c2bf791782df1077217bdaf1865235fa95a93Mark Andrewsstart_group "crashes" test6
546c2bf791782df1077217bdaf1865235fa95a93Mark Andrewsfor Q in RRSIG SIG ANY 'ANY +dnssec'; do
546c2bf791782df1077217bdaf1865235fa95a93Mark Andrews nocrash a3-1.tld2 -t$Q
546c2bf791782df1077217bdaf1865235fa95a93Mark Andrews nocrash a3-2.tld2 -t$Q
546c2bf791782df1077217bdaf1865235fa95a93Mark Andrews nocrash a3-5.tld2 -t$Q
546c2bf791782df1077217bdaf1865235fa95a93Mark Andrews nocrash www.redirect -t$Q
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Hunt nocrash www.credirect -t$Q
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Huntdone
546c2bf791782df1077217bdaf1865235fa95a93Mark Andrews
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington# This is not a bug, because any data leaked by writing 24.4.3.2.10.rpz-ip
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington# (or whatever) is available by publishing "foo A 10.2.3.4" and then
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington# resolving foo.
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington# nxdomain 32.3.2.1.127.rpz-ip
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonend_group
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonckstats $ns3 bugs ns3 8
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington# superficial test for major performance bugs
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian WellingtonQPERF=`sh qperf.sh`
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonif test -n "$QPERF"; then
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington perf () {
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington date "+I:${TS}checking performance $1"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington # Dry run to prime everything
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington comment "before dry run $1"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington $QPERF -c -1 -l30 -d ns5/requests -s $ns5 -p 5300 >/dev/null
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington comment "before real test $1"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington PFILE="ns5/$2.perf"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington $RNDCCMD $ns5 notrace
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington $QPERF -c -1 -l30 -d ns5/requests -s $ns5 -p 5300 >$PFILE
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington comment "after test $1"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington X=`sed -n -e 's/.*Returned *\([^ ]*:\) *\([0-9]*\) .*/\1\2/p' $PFILE \
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington | tr '\n' ' '`
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington if test "$X" != "$3"; then
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington setret "I:wrong results '$X' in $PFILE"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington fi
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington ckalive $ns5 "I:failed; server #5 crashed"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington }
2f012d936b5ccdf6520c96a4de23721dc58a2221Automatic Updater trim () {
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington sed -n -e 's/.*Queries per second: *\([0-9]*\).*/\1/p' ns5/$1.perf
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington }
9b17fd447c684a84b2f5fbfb04ad6e890ae2078cMukund Sivaraman
9b17fd447c684a84b2f5fbfb04ad6e890ae2078cMukund Sivaraman # get qps with rpz
9b17fd447c684a84b2f5fbfb04ad6e890ae2078cMukund Sivaraman perf 'with RPZ' rpz 'NOERROR:2900 NXDOMAIN:100 '
9b17fd447c684a84b2f5fbfb04ad6e890ae2078cMukund Sivaraman RPZ=`trim rpz`
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington # turn off rpz and measure qps again
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Hunt echo "# RPZ off" >ns5/rpz-switch
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington RNDCCMD_OUT=`$RNDCCMD $ns5 reload`
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington perf 'without RPZ' norpz 'NOERROR:3000 '
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington NORPZ=`trim norpz`
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington PERCENT=`expr \( "$RPZ" \* 100 + \( $NORPZ / 2 \) \) / $NORPZ`
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington echo "I:$RPZ qps with RPZ is $PERCENT% of $NORPZ qps without RPZ"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington MIN_PERCENT=30
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington if test "$PERCENT" -lt $MIN_PERCENT; then
72ddc4cef9c6a6de53aae530dea1ddbb90631131Mark Andrews echo "I:$RPZ qps with rpz or $PERCENT% is below $MIN_PERCENT% of $NORPZ qps"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington fi
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington if test "$PERCENT" -ge 100; then
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington echo "I:$RPZ qps with RPZ or $PERCENT% of $NORPZ qps without RPZ is too high"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington fi
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington ckstats $ns5 performance ns5 200
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonelse
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington echo "I:performance not checked; queryperf not available"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonfi
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Hunt
e32d354f754a5d7847a0862bcd6302827ea225bfEvan Hunt
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington# restart the main test RPZ server to see if that creates a core file
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonif test -z "$HAVE_CORE"; then
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington $PERL $SYSTEMTESTTOP/stop.pl . ns3
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington restart 3
19d80ce5844e00a021643759adcbe27c11b485a0Witold Krecicki HAVE_CORE=`find ns* -name '*core*' -print`
19d80ce5844e00a021643759adcbe27c11b485a0Witold Krecicki test -z "$HAVE_CORE" || setret "I:found $HAVE_CORE; memory leak?"
19d80ce5844e00a021643759adcbe27c11b485a0Witold Krecickifi
19d80ce5844e00a021643759adcbe27c11b485a0Witold Krecicki
19d80ce5844e00a021643759adcbe27c11b485a0Witold Krecicki# look for complaints from lib/dns/rpz.c and bin/name/query.c
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian WellingtonEMSGS=`egrep -l 'invalid rpz|rpz.*failed' ns*/named.run`
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonif test -n "$EMSGS"; then
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington setret "I:error messages in $EMSGS starting with:"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington egrep 'invalid rpz|rpz.*failed' ns*/named.run | sed -e '10,$d' -e 's/^/I: /'
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonfi
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonecho "I:checking that ttl values are not zeroed when qtype is '*'"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington$DIG +noall +answer -p 5300 @$ns3 any a3-2.tld2 > dig.out.any
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonttl=`awk '/a3-2 tld2 text/ {print $2}' dig.out.any`
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonif test ${ttl:=0} -eq 0; then setret I:failed; fi
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonecho "I:checking rpz updates/transfers with parent nodes added after children"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington# regression test for RT #36272: the success condition
32d248107a5bc92b4bf9fc77deaa55b3da969ba2Andreas Gustafsson# is the slave server not crashing.
32d248107a5bc92b4bf9fc77deaa55b3da969ba2Andreas Gustafssonnsd() {
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington $NSUPDATE -p 5300 << EOF
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonserver $1
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonttl 300
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonupdate $2 $3 IN CNAME .
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonupdate $2 $4 IN CNAME .
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonsend
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian WellingtonEOF
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington sleep 2
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington}
96ea71632887c58a9d00f47eb318bf76b35903c3Mark Andrews
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonfor i in 1 2 3 4 5; do
4423c99613db1399dbb5c51e86ef0d351a1418c2Mark Andrews nsd $ns5 add example.com.policy1. '*.example.com.policy1.'
4423c99613db1399dbb5c51e86ef0d351a1418c2Mark Andrews nsd $ns5 delete example.com.policy1. '*.example.com.policy1.'
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtondone
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonfor i in 1 2 3 4 5; do
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington nsd $ns5 add '*.example.com.policy1.' example.com.policy1.
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington nsd $ns5 delete '*.example.com.policy1.' example.com.policy1.
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtondone
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
b541c10d0442d9804d94567a97956cec3bd2912dBrian Wellingtonecho "I:checking checking that going from a empty policy zone works"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonnsd $ns5 add '*.x.servfail.policy2.' x.servfail.policy2.
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonsleep 1
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington$RNDCCMD $ns7 reload policy2
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington$DIG z.x.servfail -p 5300 @$ns7 > dig.out.ns7
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtongrep NXDOMAIN dig.out.ns7 > /dev/null || setret I:failed;
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonecho "I:exit status: $status"
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellingtonexit $status
1b4e6163bed546ca7f8ad186f3eabfebacc36bc1Brian Wellington