tests.sh revision 222d38735f97f771054e223b03f84c5858252332
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# Copyright (C) 2010, 2012 Internet Systems Consortium, Inc. ("ISC")
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# Permission to use, copy, modify, and/or distribute this software for any
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# purpose with or without fee is hereby granted, provided that the above
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# copyright notice and this permission notice appear in all copies.
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# PERFORMANCE OF THIS SOFTWARE.
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# $Id: tests.sh,v 1.3 2010/12/02 23:22:41 marka Exp $
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# Test of allow-query statement.
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# allow-query takes an address match list and can be included in either the
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# options statement or in the zone statement. This test assumes that the
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# acl tests cover the details of the address match list and uses a limited
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# number of address match test cases to ensure that allow-query finds the
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# expected match.
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# default (any), any, none, [localhost, localnets],
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# allowed address, not allowed address, denied address,
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# allowed key, not allowed key, denied key
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# allowed acl, not allowed acl, denied acl (acls pointing to addresses)
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# Each of these tests requires changing to a new configuration
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# file and using rndc to update the server
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# In view, with nothing in options (default to any)
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# default (any), any, none, [localhost, localnets],
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# allowed address, not allowed address, denied address,
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# allowed key, not allowed key, denied key
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# allowed acl, not allowed acl, denied acl (acls pointing to addresses)
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# In view, with options set to none, view set to any
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# In view, with options set to any, view set to none
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# In zone, with nothing in options (default to any)
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# any, none, [localhost, localnets],
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# allowed address, denied address,
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# allowed key, not allowed key, denied key
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# allowed acl, not allowed acl, denied acl (acls pointing to addresses),
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# In zone, with options set to none, zone set to any
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# In zone, with options set to any, zone set to none
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# In zone, with view set to none, zone set to any
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# In zone, with view set to any, zone set to none
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# zone types of master, slave and stub can be tested in parallel by using
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# multiple instances (ns2 as master, ns3 as slave, ns4 as stub) and querying
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# as necessary.
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉DIGOPTS="+tcp +nosea +nostat +nocmd +norec +noques +noauth +noadd +nostats +dnssec -p 5300"
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# Test 1 - default, query allowed
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉echo "I:test $n: default - query allowed"
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉$DIG $DIGOPTS @10.53.0.2 -b 10.53.0.2 a.normal.example a > dig.out.ns2.$n || ret=1
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉grep 'status: NOERROR' dig.out.ns2.$n > /dev/null || ret=1
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉grep '^a.normal.example' dig.out.ns2.$n > /dev/null || ret=1
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉if [ $ret != 0 ]; then echo "I:failed"; fi
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# Test 2 - explicit any, query allowed
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉$RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 reload 2>&1 | sed 's/^/I:ns2 /'
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉echo "I:test $n: explicit any - query allowed"
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉$DIG $DIGOPTS @10.53.0.2 -b 10.53.0.2 a.normal.example a > dig.out.ns2.$n || ret=1
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉grep 'status: NOERROR' dig.out.ns2.$n > /dev/null || ret=1
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉grep '^a.normal.example' dig.out.ns2.$n > /dev/null || ret=1
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉if [ $ret != 0 ]; then echo "I:failed"; fi
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# Test 3 - none, query refused
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉$RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 reload 2>&1 | sed 's/^/I:ns2 /'
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉echo "I:test $n: none - query refused"
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉$DIG $DIGOPTS @10.53.0.2 -b 10.53.0.2 a.normal.example a > dig.out.ns2.$n || ret=1
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉grep 'status: REFUSED' dig.out.ns2.$n > /dev/null || ret=1
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉grep '^a.normal.example' dig.out.ns2.$n > /dev/null && ret=1
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉if [ $ret != 0 ]; then echo "I:failed"; fi
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# Test 4 - address allowed, query allowed
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉$RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 reload 2>&1 | sed 's/^/I:ns2 /'
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉echo "I:test $n: address allowed - query allowed"
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉$DIG $DIGOPTS @10.53.0.2 -b 10.53.0.2 a.normal.example a > dig.out.ns2.$n || ret=1
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉grep 'status: NOERROR' dig.out.ns2.$n > /dev/null || ret=1
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉grep '^a.normal.example' dig.out.ns2.$n > /dev/null || ret=1
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉if [ $ret != 0 ]; then echo "I:failed"; fi
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# Test 5 - address not allowed, query refused
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉$RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 reload 2>&1 | sed 's/^/I:ns2 /'
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉echo "I:test $n: address not allowed - query refused"
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉$DIG $DIGOPTS @10.53.0.2 -b 10.53.0.2 a.normal.example a > dig.out.ns2.$n || ret=1
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉grep 'status: REFUSED' dig.out.ns2.$n > /dev/null || ret=1
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉grep '^a.normal.example' dig.out.ns2.$n > /dev/null && ret=1
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉if [ $ret != 0 ]; then echo "I:failed"; fi
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# Test 6 - address disallowed, query refused
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉$RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 reload 2>&1 | sed 's/^/I:ns2 /'
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉echo "I:test $n: address disallowed - query refused"
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉$DIG $DIGOPTS @10.53.0.2 -b 10.53.0.2 a.normal.example a > dig.out.ns2.$n || ret=1
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉grep 'status: REFUSED' dig.out.ns2.$n > /dev/null || ret=1
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉grep '^a.normal.example' dig.out.ns2.$n > /dev/null && ret=1
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉if [ $ret != 0 ]; then echo "I:failed"; fi
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# Test 7 - acl allowed, query allowed
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉$RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 reload 2>&1 | sed 's/^/I:ns2 /'
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉echo "I:test $n: acl allowed - query allowed"
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉$DIG $DIGOPTS @10.53.0.2 -b 10.53.0.2 a.normal.example a > dig.out.ns2.$n || ret=1
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉grep 'status: NOERROR' dig.out.ns2.$n > /dev/null || ret=1
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉grep '^a.normal.example' dig.out.ns2.$n > /dev/null || ret=1
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉if [ $ret != 0 ]; then echo "I:failed"; fi
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# Test 8 - acl not allowed, query refused
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉$RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 reload 2>&1 | sed 's/^/I:ns2 /'
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉echo "I:test $n: acl not allowed - query refused"
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉$DIG $DIGOPTS @10.53.0.2 -b 10.53.0.2 a.normal.example a > dig.out.ns2.$n || ret=1
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉grep 'status: REFUSED' dig.out.ns2.$n > /dev/null || ret=1
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉grep '^a.normal.example' dig.out.ns2.$n > /dev/null && ret=1
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉if [ $ret != 0 ]; then echo "I:failed"; fi
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# Test 9 - acl disallowed, query refused
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉$RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 reload 2>&1 | sed 's/^/I:ns2 /'
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉echo "I:test $n: acl disallowed - query refused"
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉$DIG $DIGOPTS @10.53.0.2 -b 10.53.0.2 a.normal.example a > dig.out.ns2.$n || ret=1
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉grep 'status: REFUSED' dig.out.ns2.$n > /dev/null || ret=1
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉grep '^a.normal.example' dig.out.ns2.$n > /dev/null && ret=1
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉if [ $ret != 0 ]; then echo "I:failed"; fi
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉# Test 10 - key allowed, query allowed
307d2084502eddc7ce921e5ce439aec3531d90e0Tatuya JINMEI 神明達哉$RNDC -c ../common/rndc.conf -s 10.53.0.2 -p 9953 reload 2>&1 | sed 's/^/I:ns2 /'
$DIG $DIGOPTS @10.53.0.2 -b 10.53.0.2 -y one:1234abcd8765 a.normal.example a > dig.out.ns2.$n || ret=1
n=`expr $n + 1`
$DIG $DIGOPTS @10.53.0.2 -b 10.53.0.2 -y two:1234efgh8765 a.normal.example a > dig.out.ns2.$n || ret=1
n=`expr $n + 1`
$DIG $DIGOPTS @10.53.0.2 -b 10.53.0.2 -y one:1234abcd8765 a.normal.example a > dig.out.ns2.$n || ret=1
n=`expr $n + 1`
n=`expr $n + 1`
n=`expr $n + 1`
n=`expr $n + 1`
n=`expr $n + 1`
n=`expr $n + 1`
n=`expr $n + 1`
n=`expr $n + 1`
n=`expr $n + 1`
n=`expr $n + 1`
$DIG $DIGOPTS @10.53.0.2 -b 10.53.0.2 -y one:1234abcd8765 a.normal.example a > dig.out.ns2.$n || ret=1
n=`expr $n + 1`
$DIG $DIGOPTS @10.53.0.2 -b 10.53.0.2 -y two:1234efgh8765 a.normal.example a > dig.out.ns2.$n || ret=1
n=`expr $n + 1`
$DIG $DIGOPTS @10.53.0.2 -b 10.53.0.2 -y one:1234abcd8765 a.normal.example a > dig.out.ns2.$n || ret=1
n=`expr $n + 1`
n=`expr $n + 1`
n=`expr $n + 1`
n=`expr $n + 1`
n=`expr $n + 1`
n=`expr $n + 1`
n=`expr $n + 1`
n=`expr $n + 1`
n=`expr $n + 1`
n=`expr $n + 1`
n=`expr $n + 1`
n=`expr $n + 1`
$DIG $DIGOPTS @10.53.0.2 -b 10.53.0.2 -y one:1234abcd8765 a.keyallow.example a > dig.out.ns2.$n || ret=1
n=`expr $n + 1`
$DIG $DIGOPTS @10.53.0.2 -b 10.53.0.2 -y two:1234efgh8765 a.keyallow.example a > dig.out.ns2.$n || ret=1
n=`expr $n + 1`
$DIG $DIGOPTS @10.53.0.2 -b 10.53.0.2 -y one:1234abcd8765 a.keydisallow.example a > dig.out.ns2.$n || ret=1
n=`expr $n + 1`
n=`expr $n + 1`
n=`expr $n + 1`
n=`expr $n + 1`
n=`expr $n + 1`
echo "I:exit status: $status"
exit $status