xref: /minix3/external/bsd/bind/dist/bin/tests/system/addzone/tests.sh (revision 00b67f09dd46474d133c95011a48590a8e8f94c7)
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