1*00b67f09SDavid van Moolenbroek#!/bin/sh 2*00b67f09SDavid van Moolenbroek# 3*00b67f09SDavid van Moolenbroek# Copyright (C) 2010-2013 Internet Systems Consortium, Inc. ("ISC") 4*00b67f09SDavid van Moolenbroek# 5*00b67f09SDavid van Moolenbroek# Permission to use, copy, modify, and/or distribute this software for any 6*00b67f09SDavid van Moolenbroek# purpose with or without fee is hereby granted, provided that the above 7*00b67f09SDavid van Moolenbroek# copyright notice and this permission notice appear in all copies. 8*00b67f09SDavid van Moolenbroek# 9*00b67f09SDavid van Moolenbroek# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH 10*00b67f09SDavid van Moolenbroek# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY 11*00b67f09SDavid van Moolenbroek# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, 12*00b67f09SDavid van Moolenbroek# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM 13*00b67f09SDavid van Moolenbroek# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE 14*00b67f09SDavid van Moolenbroek# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 15*00b67f09SDavid van Moolenbroek# PERFORMANCE OF THIS SOFTWARE. 16*00b67f09SDavid van Moolenbroek 17*00b67f09SDavid van Moolenbroek# Id: tests.sh,v 1.6 2011/06/17 23:47:49 tbox Exp 18*00b67f09SDavid van Moolenbroek 19*00b67f09SDavid van MoolenbroekSYSTEMTESTTOP=.. 20*00b67f09SDavid van Moolenbroek. $SYSTEMTESTTOP/conf.sh 21*00b67f09SDavid van Moolenbroek 22*00b67f09SDavid van MoolenbroekDIGOPTS="+tcp +nosea +nostat +nocmd +norec +noques +noauth +noadd +nostats +dnssec -p 5300" 23*00b67f09SDavid van Moolenbroekstatus=0 24*00b67f09SDavid van Moolenbroekn=0 25*00b67f09SDavid van Moolenbroek 26*00b67f09SDavid van Moolenbroekecho "I:checking normally loaded zone ($n)" 27*00b67f09SDavid van Moolenbroekret=0 28*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.2 a.normal.example a > dig.out.ns2.$n || ret=1 29*00b67f09SDavid van Moolenbroekgrep 'status: NOERROR' dig.out.ns2.$n > /dev/null || ret=1 30*00b67f09SDavid van Moolenbroekgrep '^a.normal.example' dig.out.ns2.$n > /dev/null || ret=1 31*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 32*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 33*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 34*00b67f09SDavid van Moolenbroek 35*00b67f09SDavid van Moolenbroekecho "I:checking previously added zone ($n)" 36*00b67f09SDavid van Moolenbroekret=0 37*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.2 a.previous.example a > dig.out.ns2.$n || ret=1 38*00b67f09SDavid van Moolenbroekgrep 'status: NOERROR' dig.out.ns2.$n > /dev/null || ret=1 39*00b67f09SDavid van Moolenbroekgrep '^a.previous.example' dig.out.ns2.$n > /dev/null || ret=1 40*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 41*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 42*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 43*00b67f09SDavid van Moolenbroek 44*00b67f09SDavid van Moolenbroekecho "I:adding new zone ($n)" 45*00b67f09SDavid van Moolenbroekret=0 46*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 addzone 'added.example { type master; file "added.db"; };' 2>&1 | sed 's/^/I:ns2 /' 47*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.2 a.added.example a > dig.out.ns2.$n || ret=1 48*00b67f09SDavid van Moolenbroekgrep 'status: NOERROR' dig.out.ns2.$n > /dev/null || ret=1 49*00b67f09SDavid van Moolenbroekgrep '^a.added.example' dig.out.ns2.$n > /dev/null || ret=1 50*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 51*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 52*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 53*00b67f09SDavid van Moolenbroek 54*00b67f09SDavid van Moolenbroekecho "I:adding a zone that requires quotes ($n)" 55*00b67f09SDavid van Moolenbroekret=0 56*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 addzone '"32/1.0.0.127-in-addr.added.example" { check-names ignore; type master; file "added.db"; };' 2>&1 | sed 's/^/I:ns2 /' 57*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.2 "a.32/1.0.0.127-in-addr.added.example" a > dig.out.ns2.$n || ret=1 58*00b67f09SDavid van Moolenbroekgrep 'status: NOERROR' dig.out.ns2.$n > /dev/null || ret=1 59*00b67f09SDavid van Moolenbroekgrep '^a.32/1.0.0.127-in-addr.added.example' dig.out.ns2.$n > /dev/null || ret=1 60*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 61*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 62*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 63*00b67f09SDavid van Moolenbroek 64*00b67f09SDavid van Moolenbroekecho "I:adding a zone with a quote in the name ($n)" 65*00b67f09SDavid van Moolenbroekret=0 66*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 addzone '"foo\"bar.example" { check-names ignore; type master; file "added.db"; };' 2>&1 | sed 's/^/I:ns2 /' 67*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.2 "a.foo\"bar.example" a > dig.out.ns2.$n || ret=1 68*00b67f09SDavid van Moolenbroekgrep 'status: NOERROR' dig.out.ns2.$n > /dev/null || ret=1 69*00b67f09SDavid van Moolenbroekgrep '^a.foo\\"bar.example' dig.out.ns2.$n > /dev/null || ret=1 70*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 71*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 72*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 73*00b67f09SDavid van Moolenbroek 74*00b67f09SDavid van Moolenbroekecho "I:adding new zone with missing master file ($n)" 75*00b67f09SDavid van Moolenbroekret=0 76*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS +all @10.53.0.2 a.missing.example a > dig.out.ns2.pre.$n || ret=1 77*00b67f09SDavid van Moolenbroekgrep "status: REFUSED" dig.out.ns2.pre.$n > /dev/null || ret=1 78*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 addzone 'missing.example { type master; file "missing.db"; };' 2> rndc.out.ns2.$n 79*00b67f09SDavid van Moolenbroekgrep "file not found" rndc.out.ns2.$n > /dev/null || ret=1 80*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS +all @10.53.0.2 a.missing.example a > dig.out.ns2.post.$n || ret=1 81*00b67f09SDavid van Moolenbroekgrep "status: REFUSED" dig.out.ns2.post.$n > /dev/null || ret=1 82*00b67f09SDavid van Moolenbroek$PERL ../digcomp.pl dig.out.ns2.pre.$n dig.out.ns2.post.$n || ret=1 83*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 84*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 85*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 86*00b67f09SDavid van Moolenbroek 87*00b67f09SDavid van Moolenbroekecho "I:verifying no comments in nzf file ($n)" 88*00b67f09SDavid van Moolenbroekret=0 89*00b67f09SDavid van Moolenbroekhcount=`grep "^# New zone file for view: _default" ns2/3bf305731dd26307.nzf | wc -l` 90*00b67f09SDavid van Moolenbroek[ $hcount -eq 0 ] || ret=1 91*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 92*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 93*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 94*00b67f09SDavid van Moolenbroek 95*00b67f09SDavid van Moolenbroekecho "I:deleting previously added zone ($n)" 96*00b67f09SDavid van Moolenbroekret=0 97*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 delzone previous.example 2>&1 | sed 's/^/I:ns2 /' 98*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.2 a.previous.example a > dig.out.ns2.$n 99*00b67f09SDavid van Moolenbroekgrep 'status: REFUSED' dig.out.ns2.$n > /dev/null || ret=1 100*00b67f09SDavid van Moolenbroekgrep '^a.previous.example' dig.out.ns2.$n > /dev/null && ret=1 101*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 102*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 103*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 104*00b67f09SDavid van Moolenbroek 105*00b67f09SDavid van Moolenbroekecho "I:checking nzf file now has comment ($n)" 106*00b67f09SDavid van Moolenbroekret=0 107*00b67f09SDavid van Moolenbroekhcount=`grep "^# New zone file for view: _default" ns2/3bf305731dd26307.nzf | wc -l` 108*00b67f09SDavid van Moolenbroek[ $hcount -eq 1 ] || ret=1 109*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 110*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 111*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 112*00b67f09SDavid van Moolenbroek 113*00b67f09SDavid van Moolenbroekecho "I:deleting newly added zone ($n)" 114*00b67f09SDavid van Moolenbroekret=0 115*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 delzone added.example 2>&1 | sed 's/^/I:ns2 /' 116*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.2 a.added.example a > dig.out.ns2.$n 117*00b67f09SDavid van Moolenbroekgrep 'status: REFUSED' dig.out.ns2.$n > /dev/null || ret=1 118*00b67f09SDavid van Moolenbroekgrep '^a.added.example' dig.out.ns2.$n > /dev/null && ret=1 119*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 120*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 121*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 122*00b67f09SDavid van Moolenbroek 123*00b67f09SDavid van Moolenbroekecho "I:deleting newly added zone with escaped quote ($n)" 124*00b67f09SDavid van Moolenbroekret=0 125*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 delzone "foo\\\"bar.example" 2>&1 | sed 's/^/I:ns2 /' 126*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.2 "a.foo\"bar.example" a > dig.out.ns2.$n 127*00b67f09SDavid van Moolenbroekgrep 'status: REFUSED' dig.out.ns2.$n > /dev/null || ret=1 128*00b67f09SDavid van Moolenbroekgrep "^a.foo\"bar.example" dig.out.ns2.$n > /dev/null && ret=1 129*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 130*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 131*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 132*00b67f09SDavid van Moolenbroek 133*00b67f09SDavid van Moolenbroekecho "I:attempt to delete a normally-loaded zone ($n)" 134*00b67f09SDavid van Moolenbroekret=0 135*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 delzone normal.example 2> rndc.out.ns2.$n 136*00b67f09SDavid van Moolenbroekgrep "permission denied" rndc.out.ns2.$n > /dev/null || ret=1 137*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.2 a.normal.example a > dig.out.ns2.$n 138*00b67f09SDavid van Moolenbroekgrep 'status: NOERROR' dig.out.ns2.$n > /dev/null || ret=1 139*00b67f09SDavid van Moolenbroekgrep '^a.normal.example' dig.out.ns2.$n > /dev/null || ret=1 140*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 141*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 142*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 143*00b67f09SDavid van Moolenbroek 144*00b67f09SDavid van Moolenbroekecho "I:attempting to add master zone with inline signing ($n)" 145*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 addzone 'inline.example { type master; file "inline.db"; inline-signing yes; };' 2>&1 | sed 's/^/I:ns2 /' 146*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 147*00b67f09SDavid van Moolenbroekdo 148*00b67f09SDavid van Moolenbroekret=0 149*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.2 a.inline.example a > dig.out.ns2.$n || ret=1 150*00b67f09SDavid van Moolenbroekgrep 'status: NOERROR' dig.out.ns2.$n > /dev/null || ret=1 151*00b67f09SDavid van Moolenbroekgrep '^a.inline.example' dig.out.ns2.$n > /dev/null || ret=1 152*00b67f09SDavid van Moolenbroek[ $ret = 0 ] && break 153*00b67f09SDavid van Moolenbroeksleep 1 154*00b67f09SDavid van Moolenbroekdone 155*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 156*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 157*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 158*00b67f09SDavid van Moolenbroek 159*00b67f09SDavid van Moolenbroekecho "I:attempting to add master zone with inline signing and missing master ($n)" 160*00b67f09SDavid van Moolenbroekret=0 161*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 addzone 'inlinemissing.example { type master; file "missing.db"; inline-signing yes; };' 2> rndc.out.ns2.$n 162*00b67f09SDavid van Moolenbroekgrep "file not found" rndc.out.ns2.$n > /dev/null || ret=1 163*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 164*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 165*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 166*00b67f09SDavid van Moolenbroek 167*00b67f09SDavid van Moolenbroekecho "I:attempting to add slave zone with inline signing ($n)" 168*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 addzone 'inlineslave.example { type slave; masters { 10.53.0.1; }; file "inlineslave.bk"; inline-signing yes; };' 2>&1 | sed 's/^/I:ns2 /' 169*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 170*00b67f09SDavid van Moolenbroekdo 171*00b67f09SDavid van Moolenbroekret=0 172*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.2 a.inlineslave.example a > dig.out.ns2.$n || ret=1 173*00b67f09SDavid van Moolenbroekgrep 'status: NOERROR' dig.out.ns2.$n > /dev/null || ret=1 174*00b67f09SDavid van Moolenbroekgrep '^a.inlineslave.example' dig.out.ns2.$n > /dev/null || ret=1 175*00b67f09SDavid van Moolenbroek[ $ret = 0 ] && break 176*00b67f09SDavid van Moolenbroeksleep 1 177*00b67f09SDavid van Moolenbroekdone 178*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 179*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 180*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 181*00b67f09SDavid van Moolenbroek 182*00b67f09SDavid van Moolenbroekecho "I:attempting to delete slave zone with inline signing ($n)" 183*00b67f09SDavid van Moolenbroekret=0 184*00b67f09SDavid van Moolenbroekfor i in 0 1 2 3 4 5 6 7 8 9 185*00b67f09SDavid van Moolenbroekdo 186*00b67f09SDavid van Moolenbroek test -f ns2/inlineslave.bk.signed -a -f ns2/inlineslave.bk && break 187*00b67f09SDavid van Moolenbroek sleep 1 188*00b67f09SDavid van Moolenbroekdone 189*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 delzone inlineslave.example 2>&1 > rndc.out2.test$n 190*00b67f09SDavid van Moolenbroektest -f inlineslave.bk || 191*00b67f09SDavid van Moolenbroekgrep '^inlineslave.bk$' rndc.out2.test$n > /dev/null || { 192*00b67f09SDavid van Moolenbroek echo "I:failed to report inlineslave.bk"; ret=1; 193*00b67f09SDavid van Moolenbroek} 194*00b67f09SDavid van Moolenbroektest ! -f inlineslave.bk.signed || 195*00b67f09SDavid van Moolenbroekgrep '^inlineslave.bk.signed$' rndc.out2.test$n > /dev/null || { 196*00b67f09SDavid van Moolenbroek echo "I:failed to report inlineslave.bk.signed"; ret=1; 197*00b67f09SDavid van Moolenbroek} 198*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 199*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 200*00b67f09SDavid van Moolenbroek 201*00b67f09SDavid van Moolenbroekecho "I:restoring slave zone with inline signing ($n)" 202*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 addzone 'inlineslave.example { type slave; masters { 10.53.0.1; }; file "inlineslave.bk"; inline-signing yes; };' 2>&1 | sed 's/^/I:ns2 /' 203*00b67f09SDavid van Moolenbroekfor i in 1 2 3 4 5 204*00b67f09SDavid van Moolenbroekdo 205*00b67f09SDavid van Moolenbroekret=0 206*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.2 a.inlineslave.example a > dig.out.ns2.$n || ret=1 207*00b67f09SDavid van Moolenbroekgrep 'status: NOERROR' dig.out.ns2.$n > /dev/null || ret=1 208*00b67f09SDavid van Moolenbroekgrep '^a.inlineslave.example' dig.out.ns2.$n > /dev/null || ret=1 209*00b67f09SDavid van Moolenbroek[ $ret = 0 ] && break 210*00b67f09SDavid van Moolenbroeksleep 1 211*00b67f09SDavid van Moolenbroekdone 212*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 213*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 214*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 215*00b67f09SDavid van Moolenbroek 216*00b67f09SDavid van Moolenbroekecho "I:deleting slave zone with automatic zone file removal ($n)" 217*00b67f09SDavid van Moolenbroekret=0 218*00b67f09SDavid van Moolenbroekfor i in 0 1 2 3 4 5 6 7 8 9 219*00b67f09SDavid van Moolenbroekdo 220*00b67f09SDavid van Moolenbroek test -f ns2/inlineslave.bk.signed -a -f ns2/inlineslave.bk && break 221*00b67f09SDavid van Moolenbroek sleep 1 222*00b67f09SDavid van Moolenbroekdone 223*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 delzone -clean inlineslave.example 2>&1 > /dev/null 224*00b67f09SDavid van Moolenbroekfor i in 0 1 2 3 4 5 6 7 8 9 225*00b67f09SDavid van Moolenbroekdo 226*00b67f09SDavid van Moolenbroek ret=0 227*00b67f09SDavid van Moolenbroek test -f ns2/inlineslave.bk.signed -a -f ns2/inlineslave.bk && ret=1 228*00b67f09SDavid van Moolenbroek [ $ret = 0 ] && break 229*00b67f09SDavid van Moolenbroek sleep 1 230*00b67f09SDavid van Moolenbroekdone 231*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 232*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 233*00b67f09SDavid van Moolenbroek 234*00b67f09SDavid van Moolenbroekecho "I:reconfiguring server with multiple views" 235*00b67f09SDavid van Moolenbroekrm -f ns2/named.conf 236*00b67f09SDavid van Moolenbroekcp -f ns2/named2.conf ns2/named.conf 237*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 reconfig 2>&1 | sed 's/^/I:ns2 /' 238*00b67f09SDavid van Moolenbroeksleep 5 239*00b67f09SDavid van Moolenbroek 240*00b67f09SDavid van Moolenbroekecho "I:adding new zone to external view ($n)" 241*00b67f09SDavid van Moolenbroek# NOTE: The internal view has "recursion yes" set, and so queries for 242*00b67f09SDavid van Moolenbroek# nonexistent zones should return NOERROR. The external view is 243*00b67f09SDavid van Moolenbroek# "recursion no", so queries for nonexistent zones should return 244*00b67f09SDavid van Moolenbroek# REFUSED. This behavior should be the same regardless of whether 245*00b67f09SDavid van Moolenbroek# the zone does not exist because a) it has not yet been loaded, b) 246*00b67f09SDavid van Moolenbroek# it failed to load, or c) it has been deleted. 247*00b67f09SDavid van Moolenbroekret=0 248*00b67f09SDavid van Moolenbroek$DIG +norec $DIGOPTS @10.53.0.2 -b 10.53.0.2 a.added.example a > dig.out.ns2.intpre.$n || ret=1 249*00b67f09SDavid van Moolenbroekgrep 'status: NOERROR' dig.out.ns2.intpre.$n > /dev/null || ret=1 250*00b67f09SDavid van Moolenbroek$DIG +norec $DIGOPTS @10.53.0.4 -b 10.53.0.4 a.added.example a > dig.out.ns2.extpre.$n || ret=1 251*00b67f09SDavid van Moolenbroekgrep 'status: REFUSED' dig.out.ns2.extpre.$n > /dev/null || ret=1 252*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 addzone 'added.example in external { type master; file "added.db"; };' 2>&1 | sed 's/^/I:ns2 /' 253*00b67f09SDavid van Moolenbroek$DIG +norec $DIGOPTS @10.53.0.2 -b 10.53.0.2 a.added.example a > dig.out.ns2.int.$n || ret=1 254*00b67f09SDavid van Moolenbroekgrep 'status: NOERROR' dig.out.ns2.int.$n > /dev/null || ret=1 255*00b67f09SDavid van Moolenbroek$DIG +norec $DIGOPTS @10.53.0.4 -b 10.53.0.4 a.added.example a > dig.out.ns2.ext.$n || ret=1 256*00b67f09SDavid van Moolenbroekgrep 'status: NOERROR' dig.out.ns2.ext.$n > /dev/null || ret=1 257*00b67f09SDavid van Moolenbroekgrep '^a.added.example' dig.out.ns2.ext.$n > /dev/null || ret=1 258*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 259*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 260*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 261*00b67f09SDavid van Moolenbroek 262*00b67f09SDavid van Moolenbroekecho "I:checking new nzf file has comment ($n)" 263*00b67f09SDavid van Moolenbroekret=0 264*00b67f09SDavid van Moolenbroekhcount=`grep "^# New zone file for view: external" ns2/3c4623849a49a539.nzf | wc -l` 265*00b67f09SDavid van Moolenbroek[ $hcount -eq 1 ] || ret=1 266*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 267*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 268*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 269*00b67f09SDavid van Moolenbroek 270*00b67f09SDavid van Moolenbroek 271*00b67f09SDavid van Moolenbroekecho "I:deleting newly added zone ($n)" 272*00b67f09SDavid van Moolenbroekret=0 273*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 delzone 'added.example in external' 2>&1 | sed 's/^/I:ns2 /' 274*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.4 -b 10.53.0.4 a.added.example a > dig.out.ns2.$n || ret=1 275*00b67f09SDavid van Moolenbroekgrep 'status: REFUSED' dig.out.ns2.$n > /dev/null || ret=1 276*00b67f09SDavid van Moolenbroekgrep '^a.added.example' dig.out.ns2.$n > /dev/null && ret=1 277*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 278*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 279*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 280*00b67f09SDavid van Moolenbroek 281*00b67f09SDavid van Moolenbroekecho "I:attempting to add zone to internal view ($n)" 282*00b67f09SDavid van Moolenbroekret=0 283*00b67f09SDavid van Moolenbroek$DIG +norec $DIGOPTS @10.53.0.2 -b 10.53.0.2 a.added.example a > dig.out.ns2.pre.$n || ret=1 284*00b67f09SDavid van Moolenbroekgrep 'status: NOERROR' dig.out.ns2.pre.$n > /dev/null || ret=1 285*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 addzone 'added.example in internal { type master; file "added.db"; };' 2> rndc.out.ns2.$n 286*00b67f09SDavid van Moolenbroekgrep "permission denied" rndc.out.ns2.$n > /dev/null || ret=1 287*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.2 -b 10.53.0.2 a.added.example a > dig.out.ns2.int.$n || ret=1 288*00b67f09SDavid van Moolenbroekgrep 'status: NOERROR' dig.out.ns2.int.$n > /dev/null || ret=1 289*00b67f09SDavid van Moolenbroek$DIG $DIGOPTS @10.53.0.4 -b 10.53.0.4 a.added.example a > dig.out.ns2.ext.$n || ret=1 290*00b67f09SDavid van Moolenbroekgrep 'status: REFUSED' dig.out.ns2.ext.$n > /dev/null || ret=1 291*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 292*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 293*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 294*00b67f09SDavid van Moolenbroek 295*00b67f09SDavid van Moolenbroekecho "I:ensure the configuration context is cleaned up correctly ($n)" 296*00b67f09SDavid van Moolenbroekret=0 297*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 reconfig > /dev/null 2>&1 || ret=1 298*00b67f09SDavid van Moolenbroeksleep 5 299*00b67f09SDavid van Moolenbroek$RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 status > /dev/null 2>&1 || ret=1 300*00b67f09SDavid van Moolenbroekn=`expr $n + 1` 301*00b67f09SDavid van Moolenbroekif [ $ret != 0 ]; then echo "I:failed"; fi 302*00b67f09SDavid van Moolenbroekstatus=`expr $status + $ret` 303*00b67f09SDavid van Moolenbroek 304*00b67f09SDavid van Moolenbroekecho "I:exit status: $status" 305*00b67f09SDavid van Moolenbroekexit $status 306