diff options
Diffstat (limited to 'bin/tests/system/ixfr/tests.sh')
-rw-r--r-- | bin/tests/system/ixfr/tests.sh | 132 |
1 files changed, 132 insertions, 0 deletions
diff --git a/bin/tests/system/ixfr/tests.sh b/bin/tests/system/ixfr/tests.sh new file mode 100644 index 0000000..109f01e --- /dev/null +++ b/bin/tests/system/ixfr/tests.sh @@ -0,0 +1,132 @@ +#!/bin/sh +# +# Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC") +# Copyright (C) 2001 Internet Software Consortium. +# +# Permission to use, copy, modify, and/or distribute this software for any +# purpose with or without fee is hereby granted, provided that the above +# copyright notice and this permission notice appear in all copies. +# +# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH +# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT, +# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE +# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +# PERFORMANCE OF THIS SOFTWARE. + +# $Id: tests.sh,v 1.5 2007/06/19 23:47:03 tbox Exp $ + +SYSTEMTESTTOP=.. +. $SYSTEMTESTTOP/conf.sh + +status=0 + +DIGOPTS="+tcp +noadd +nosea +nostat +noquest +nocomm +nocmd" +DIGCMD="$DIG $DIGOPTS @10.53.0.1 -p 5300" +SENDCMD="$PERL ../send.pl 10.53.0.2 5301" +RNDCCMD="$RNDC -s 10.53.0.1 -p 9953 -c ../common/rndc.conf" + +echo "I:testing initial AXFR" + +$SENDCMD <<EOF +/SOA/ +nil. 300 SOA ns.nil. root.nil. 1 300 300 604800 300 +/AXFR/ +nil. 300 SOA ns.nil. root.nil. 1 300 300 604800 300 +nil. 300 NS ns.nil. +nil. 300 TXT "initial AXFR" +a.nil. 60 A 10.0.0.61 +b.nil. 60 A 10.0.0.62 +nil. 300 SOA ns.nil. root.nil. 1 300 300 604800 300 +EOF + +sleep 1 + +# Initially, ns1 is not authoritative for anything (see setup.sh). +# Now that ans is up and running with the right data, we make it +# a slave for nil. + +cat <<EOF >>ns1/named.conf +zone "nil" { + type slave; + file "myftp.db"; + masters { 10.53.0.2; }; +}; +EOF + +$RNDCCMD reload + +sleep 2 + +$DIGCMD nil. TXT | grep 'initial AXFR' >/dev/null || { + echo "I:failed" + status=1 +} + +echo "I:testing successful IXFR" + +# We change the IP address of a.nil., and the TXT record at the apex. +# Then we do a SOA-only update. + +$SENDCMD <<EOF +/SOA/ +nil. 300 SOA ns.nil. root.nil. 3 300 300 604800 300 +/IXFR/ +nil. 300 SOA ns.nil. root.nil. 3 300 300 604800 300 +nil. 300 SOA ns.nil. root.nil. 1 300 300 604800 300 +a.nil. 60 A 10.0.0.61 +nil. 300 TXT "initial AXFR" +nil. 300 SOA ns.nil. root.nil. 2 300 300 604800 300 +nil. 300 TXT "successful IXFR" +a.nil. 60 A 10.0.1.61 +nil. 300 SOA ns.nil. root.nil. 2 300 300 604800 300 +nil. 300 SOA ns.nil. root.nil. 3 300 300 604800 300 +nil. 300 SOA ns.nil. root.nil. 3 300 300 604800 300 +EOF + +sleep 1 + +$RNDCCMD refresh nil + +sleep 2 + +$DIGCMD nil. TXT | grep 'successful IXFR' >/dev/null || { + echo "I:failed" + status=1 +} + +echo "I:testing AXFR fallback after IXFR failure" + +# Provide a broken IXFR response and a working fallback AXFR response + +$SENDCMD <<EOF +/SOA/ +nil. 300 SOA ns.nil. root.nil. 4 300 300 604800 300 +/IXFR/ +nil. 300 SOA ns.nil. root.nil. 4 300 300 604800 300 +nil. 300 SOA ns.nil. root.nil. 3 300 300 604800 300 +nil. 300 TXT "delete-nonexistent-txt-record" +nil. 300 SOA ns.nil. root.nil. 4 300 300 604800 300 +nil. 300 TXT "this-txt-record-would-be-added" +nil. 300 SOA ns.nil. root.nil. 4 300 300 604800 300 +/AXFR/ +nil. 300 SOA ns.nil. root.nil. 3 300 300 604800 300 +nil. 300 NS ns.nil. +nil. 300 TXT "fallback AXFR" +nil. 300 SOA ns.nil. root.nil. 3 300 300 604800 300 +EOF + +sleep 1 + +$RNDCCMD refresh nil + +sleep 2 + +$DIGCMD nil. TXT | grep 'fallback AXFR' >/dev/null || { + echo "I:failed" + status=1 +} + +echo "I:exit status: $status" +exit $status |