tests.sh revision c19cfefe7e345c37ef3bb98b0db2d14fe7b1d583
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halley# Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC")
279c6ec074be17dce62dd1b2c6ed7c2cc56a7b78David Lawrence#
703e1c0bb66f3cd3d300358ca0c1fdf3cb5fb1c5Brian Wellington# Permission to use, copy, modify, and/or distribute this software for any
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David Lawrence# purpose with or without fee is hereby granted, provided that the above
279c6ec074be17dce62dd1b2c6ed7c2cc56a7b78David Lawrence# copyright notice and this permission notice appear in all copies.
279c6ec074be17dce62dd1b2c6ed7c2cc56a7b78David Lawrence#
279c6ec074be17dce62dd1b2c6ed7c2cc56a7b78David Lawrence# THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
40f53fa8d9c6a4fc38c0014495e7a42b08f52481David Lawrence# REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
a14613fce99dee3cad5bf842fd6be78f8e463582Brian Wellington# AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
a14613fce99dee3cad5bf842fd6be78f8e463582Brian Wellington# INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
a14613fce99dee3cad5bf842fd6be78f8e463582Brian Wellington# LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
a14613fce99dee3cad5bf842fd6be78f8e463582Brian Wellington# OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
a14613fce99dee3cad5bf842fd6be78f8e463582Brian Wellington# PERFORMANCE OF THIS SOFTWARE.
a14613fce99dee3cad5bf842fd6be78f8e463582Brian Wellington
a14613fce99dee3cad5bf842fd6be78f8e463582Brian Wellington# $Id: tests.sh,v 1.11 2012/01/07 00:19:59 each Exp $
a14613fce99dee3cad5bf842fd6be78f8e463582Brian Wellington
279c6ec074be17dce62dd1b2c6ed7c2cc56a7b78David Lawrence# test response policy zones (RPZ)
279c6ec074be17dce62dd1b2c6ed7c2cc56a7b78David Lawrence
703e1c0bb66f3cd3d300358ca0c1fdf3cb5fb1c5Brian WellingtonSYSTEMTESTTOP=..
a14613fce99dee3cad5bf842fd6be78f8e463582Brian Wellington. $SYSTEMTESTTOP/conf.sh
279c6ec074be17dce62dd1b2c6ed7c2cc56a7b78David Lawrence
279c6ec074be17dce62dd1b2c6ed7c2cc56a7b78David Lawrencens1=10.53.0.1 # root, defining the other two
279c6ec074be17dce62dd1b2c6ed7c2cc56a7b78David Lawrencens2=10.53.0.2 # server whose answers are rewritten
279c6ec074be17dce62dd1b2c6ed7c2cc56a7b78David Lawrencens3=10.53.0.3 # resolve that does the rewriting
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halleyns4=10.53.0.4 # another server that is rewritten
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halley
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob HalleyRNDCCMD="$RNDC -c ../common/rndc.conf -s $ns3 -p 9953"
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halley
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob HalleyHAVE_CORE=
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halley
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob HalleyUSAGE="$0: [-x]"
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halleywhile getopts "x" c; do
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halley case $c in
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halley x) set -x;;
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halley *) echo "$USAGE" 1>&2; exit 1;;
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halley esac
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halleydone
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halleyshift `expr $OPTIND - 1 || true`
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halleyif test "$#" -ne 0; then
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halley echo "$USAGE" 1>&2
90407942d3afe50f04ccea361de3b164a5a1702dMichael Graff exit 1
90407942d3afe50f04ccea361de3b164a5a1702dMichael Grafffi
90407942d3afe50f04ccea361de3b164a5a1702dMichael Graff# really quit on control-C
90407942d3afe50f04ccea361de3b164a5a1702dMichael Grafftrap 'exit 1' 1 2 15
a30e7fc23415fd238d067a8a871607bca36068baMichael Graff
a30e7fc23415fd238d067a8a871607bca36068baMichael Graff
a30e7fc23415fd238d067a8a871607bca36068baMichael Graffdigcmd () {
8d4257cff01b3821abcb9a21f46c6c6a43bb1e72Bob Halley #echo I:dig +noadd +noauth +nosearch +time=1 +tries=1 -p 5300 $* 1>&2
8d4257cff01b3821abcb9a21f46c6c6a43bb1e72Bob Halley $DIG +noadd +noauth +nosearch +time=1 +tries=1 -p 5300 $*
8d4257cff01b3821abcb9a21f46c6c6a43bb1e72Bob Halley}
8d4257cff01b3821abcb9a21f46c6c6a43bb1e72Bob Halley
8d4257cff01b3821abcb9a21f46c6c6a43bb1e72Bob Halley# set DIGNM=file name for dig output
8d4257cff01b3821abcb9a21f46c6c6a43bb1e72Bob HalleyGROUP_NM=
dc97fe4ed08488d314ab5bc8e99ed839542cf411David LawrenceTEST_NUM=0
dc97fe4ed08488d314ab5bc8e99ed839542cf411David Lawrencemake_dignm () {
dc97fe4ed08488d314ab5bc8e99ed839542cf411David Lawrence TEST_NUM=`expr $TEST_NUM + 1`
8d4257cff01b3821abcb9a21f46c6c6a43bb1e72Bob Halley DIGNM=dig.out$GROUP_NM-$TEST_NUM
8d4257cff01b3821abcb9a21f46c6c6a43bb1e72Bob Halley while test -f $DIGNM; do
8d4257cff01b3821abcb9a21f46c6c6a43bb1e72Bob Halley TEST_NUM="$TEST_NUM+"
50453ad879d0d93854de5a3385776bd799e8f35cBob Halley DIGNM=dig.out$GROUP_NM-$TEST_NUM
50453ad879d0d93854de5a3385776bd799e8f35cBob Halley done
50453ad879d0d93854de5a3385776bd799e8f35cBob Halley}
7005cfed8cd3296d356883dcb414979f22e06b13Brian Wellington
7005cfed8cd3296d356883dcb414979f22e06b13Brian Wellingtonsetret () {
7005cfed8cd3296d356883dcb414979f22e06b13Brian Wellington ret=1
d8dcd6ad4617cc8d7df979bd62101fa9c4bac1bcBob Halley echo "$*"
d8dcd6ad4617cc8d7df979bd62101fa9c4bac1bcBob Halley}
d8dcd6ad4617cc8d7df979bd62101fa9c4bac1bcBob Halley
194b6a25192581bbc8ec731e32e8989042b202a4Michael Graff# (re)load the reponse policy zones with the rules in the file $TEST_FILE
a30e7fc23415fd238d067a8a871607bca36068baMichael Graffload_db () {
a30e7fc23415fd238d067a8a871607bca36068baMichael Graff if test -n "$TEST_FILE"; then
5c00d1c90030a311d2700970fa7cffc8f828a48cBob Halley if $NSUPDATE -v $TEST_FILE; then : ; else
5c00d1c90030a311d2700970fa7cffc8f828a48cBob Halley echo "I:failed to update policy zone with $TEST_FILE"
194b6a25192581bbc8ec731e32e8989042b202a4Michael Graff exit 1
8313838954d67250d0ed7edf67fba5da0790d1a7Michael Graff fi
8313838954d67250d0ed7edf67fba5da0790d1a7Michael Graff fi
8313838954d67250d0ed7edf67fba5da0790d1a7Michael Graff}
703e1c0bb66f3cd3d300358ca0c1fdf3cb5fb1c5Brian Wellington
8313838954d67250d0ed7edf67fba5da0790d1a7Michael Graffrestart () {
8313838954d67250d0ed7edf67fba5da0790d1a7Michael Graff $RNDCCMD stop >/dev/null 2>&1
703e1c0bb66f3cd3d300358ca0c1fdf3cb5fb1c5Brian Wellington rm -f ns3/*.jnl
703e1c0bb66f3cd3d300358ca0c1fdf3cb5fb1c5Brian Wellington for NM in ns3/bl*.db; do
703e1c0bb66f3cd3d300358ca0c1fdf3cb5fb1c5Brian Wellington cp -f ns3/base.db $NM
0eb2572d79822d02ea05448ce4e5f1759c73d171Michael Graff done
0eb2572d79822d02ea05448ce4e5f1759c73d171Michael Graff (cd ..; $PERL start.pl --noclean --restart rpz ns3)
0eb2572d79822d02ea05448ce4e5f1759c73d171Michael Graff load_db
0eb2572d79822d02ea05448ce4e5f1759c73d171Michael Graff}
0eb2572d79822d02ea05448ce4e5f1759c73d171Michael Graff
4108eed5092156cf0407a97a9bd8ab7775164694Brian Wellingtonckalive () {
4108eed5092156cf0407a97a9bd8ab7775164694Brian Wellington $RNDCCMD status >/dev/null 2>&1 && return 0
4108eed5092156cf0407a97a9bd8ab7775164694Brian Wellington HAVE_CORE=yes
3f123dcc2fe5d2cd08ca91b732741d86a4036906Brian Wellington setret "$1"
3f123dcc2fe5d2cd08ca91b732741d86a4036906Brian Wellington restart
3f123dcc2fe5d2cd08ca91b732741d86a4036906Brian Wellington return 1
17012a879742ceb6561dcc4ae3bcd4ff80dc9887David Lawrence}
17012a879742ceb6561dcc4ae3bcd4ff80dc9887David Lawrence
17012a879742ceb6561dcc4ae3bcd4ff80dc9887David Lawrence# $1=message $2=optional test file name
876753d5ce1be48f3218fb4875fac501f8adfd6cDavid Lawrencestart_group () {
876753d5ce1be48f3218fb4875fac501f8adfd6cDavid Lawrence ret=0
876753d5ce1be48f3218fb4875fac501f8adfd6cDavid Lawrence test -n "$1" && echo "I:checking $1"
876753d5ce1be48f3218fb4875fac501f8adfd6cDavid Lawrence TEST_FILE=$2
876753d5ce1be48f3218fb4875fac501f8adfd6cDavid Lawrence if test -n "$TEST_FILE"; then
876753d5ce1be48f3218fb4875fac501f8adfd6cDavid Lawrence GROUP_NM="-$TEST_FILE"
876753d5ce1be48f3218fb4875fac501f8adfd6cDavid Lawrence load_db
ed71ea51c6ecb5d7d659b6e6a20f6b3f5c2678c6David Lawrence else
ed71ea51c6ecb5d7d659b6e6a20f6b3f5c2678c6David Lawrence GROUP_NM=
ed71ea51c6ecb5d7d659b6e6a20f6b3f5c2678c6David Lawrence fi
ed71ea51c6ecb5d7d659b6e6a20f6b3f5c2678c6David Lawrence TEST_NUM=0
ed71ea51c6ecb5d7d659b6e6a20f6b3f5c2678c6David Lawrence}
ed71ea51c6ecb5d7d659b6e6a20f6b3f5c2678c6David Lawrence
49a2cf8f211213712d452287ae8e121cf59e3178David Lawrenceend_group () {
49a2cf8f211213712d452287ae8e121cf59e3178David Lawrence if test -n "$TEST_FILE"; then
49a2cf8f211213712d452287ae8e121cf59e3178David Lawrence sed -e 's/[ ]add[ ]/ delete /' $TEST_FILE | $NSUPDATE
49a2cf8f211213712d452287ae8e121cf59e3178David Lawrence TEST_FILE=
49a2cf8f211213712d452287ae8e121cf59e3178David Lawrence fi
49a2cf8f211213712d452287ae8e121cf59e3178David Lawrence status=`expr $status + $ret`
49a2cf8f211213712d452287ae8e121cf59e3178David Lawrence ckalive "I:failed; server crashed"
49a2cf8f211213712d452287ae8e121cf59e3178David Lawrence GROUP_NM=
49a2cf8f211213712d452287ae8e121cf59e3178David Lawrence}
49a2cf8f211213712d452287ae8e121cf59e3178David Lawrence
49a2cf8f211213712d452287ae8e121cf59e3178David Lawrence# $1=dig args $2=other dig output file
49a2cf8f211213712d452287ae8e121cf59e3178David Lawrenceckresult () {
49a2cf8f211213712d452287ae8e121cf59e3178David Lawrence #ckalive "I:server crashed by 'dig $1'" || return 1
49a2cf8f211213712d452287ae8e121cf59e3178David Lawrence if $PERL ../digcomp.pl $DIGNM $2 >/dev/null; then
49a2cf8f211213712d452287ae8e121cf59e3178David Lawrence rm -f ${DIGNM}*
49a2cf8f211213712d452287ae8e121cf59e3178David Lawrence return 0
49a2cf8f211213712d452287ae8e121cf59e3178David Lawrence fi
49a2cf8f211213712d452287ae8e121cf59e3178David Lawrence setret "I:'dig $1' wrong; diff $DIGNM $2"
a14613fce99dee3cad5bf842fd6be78f8e463582Brian Wellington return 1
529ff4b4959fb157194f985394951108ff5286e4Brian Wellington}
a14613fce99dee3cad5bf842fd6be78f8e463582Brian Wellington
489b76292622f5bc18bf1a18845f8166a73bd797Brian Wellington# check only that the server does not crash
489b76292622f5bc18bf1a18845f8166a73bd797Brian Wellington# $1=target domain $2=optional query type
489b76292622f5bc18bf1a18845f8166a73bd797Brian Wellingtonnocrash () {
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halley digcmd $* @$ns3 >/dev/null
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halley ckalive "I:server crashed by 'dig $*'"
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halley}
5c00d1c90030a311d2700970fa7cffc8f828a48cBob Halley
5c00d1c90030a311d2700970fa7cffc8f828a48cBob Halley
5c00d1c90030a311d2700970fa7cffc8f828a48cBob Halley# check rewrite to NXDOMAIN
134ba0e08a0ae9a564a8d8628fc633377d3fc239Bob Halley# $1=target domain $2=optional query type
134ba0e08a0ae9a564a8d8628fc633377d3fc239Bob Halleynxdomain () {
134ba0e08a0ae9a564a8d8628fc633377d3fc239Bob Halley make_dignm
203596d27c225ea195e4faad4f19388c6e96ac80Bob Halley digcmd +noauth $* @$ns3 \
203596d27c225ea195e4faad4f19388c6e96ac80Bob Halley | sed -e 's/^[a-z].* IN CNAME /;xxx &/' >$DIGNM
203596d27c225ea195e4faad4f19388c6e96ac80Bob Halley ckresult "$*" proto.nxdomain
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halley}
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halley
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halley# check rewrite to NODATA
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halley# $1=target domain $2=optional query type
a5d43b72413db3edd6b36a58f9bdf2cf6ff692f2Bob Halleynodata () {
15bfd48fc5552ff1aae766021f42a250c001a098Michael Graff make_dignm
882350d11c90de9de6fc1cead25690c8114b0b95Michael Graff digcmd +noauth $* @$ns3 \
882350d11c90de9de6fc1cead25690c8114b0b95Michael Graff | sed -e 's/^[a-z].* IN CNAME /;xxx &/' >$DIGNM
882350d11c90de9de6fc1cead25690c8114b0b95Michael Graff ckresult "$*" proto.nodata
15bfd48fc5552ff1aae766021f42a250c001a098Michael Graff}
15bfd48fc5552ff1aae766021f42a250c001a098Michael Graff
15bfd48fc5552ff1aae766021f42a250c001a098Michael Graff# check rewrite to an address
882350d11c90de9de6fc1cead25690c8114b0b95Michael Graff# modify the output so that it is easily compared, but save the original line
882350d11c90de9de6fc1cead25690c8114b0b95Michael Graff# $1=IPv4 address, $2=target domain $3=optional query type
addr () {
ADDR=$1
shift
ADDR_ESC=`echo "$ADDR" | sed -e 's/\./\\\\./g'`
make_dignm
digcmd +noauth $* @$ns3 >$DIGNM
#ckalive "I:server crashed by 'dig $*'" || return
if grep -i '^[a-z].* A '"$ADDR_ESC"'$' $DIGNM >/dev/null; then
rm -f ${DIGNM}*
return 0
fi
setret "I:'dig $*' wrong; no A $ADDR record in $DIGNM $2"
}
# check that a response is not rewritten
# $1=target domain $2=optional query type
nochange () {
make_dignm
digcmd $* @$ns3 >$DIGNM
digcmd $* @$ns2 >${DIGNM}_OK
ckresult "$*" ${DIGNM}_OK && rm -f ${DIGNM}_OK
}
# check against a 'here document'
here () {
make_dignm
sed -e 's/^[ ]*//' >${DIGNM}_OK
digcmd $* @$ns3 >$DIGNM
ckresult "$*" ${DIGNM}_OK
}
# make prototype files to check against rewritten results
digcmd +noauth nonexistent @$ns2 >proto.nxdomain
digcmd +noauth txt-only.tld2 @$ns2 >proto.nodata
status=0
start_group "QNAME rewrites" test1
nochange .
nxdomain a0-1.tld2
nodata a3-1.tld2
nodata a3-2.tld2
nodata sub.a3-2.tld2 # 5 no crash on DNAME
nxdomain a4-2.tld2 # 6 rewrite based on CNAME target
nxdomain a4-2-cname.tld2 # 7
nodata a4-3-cname.tld2 # 8
addr 12.12.12.12 a4-1.sub1.tld2 # 9 A replacement
addr 12.12.12.12 a4-1.sub2.tld2 # 10 A replacement with wildcard
addr 12.12.12.12 nxc1.sub1.tld2 # 11 replace NXDOMAIN with CNAME
addr 12.12.12.12 nxc2.sub1.tld2 # 12 replace NXDOMAIN with CNAME chain
addr 127.0.0.1 a4-4.tld2 # 13 prefer 1st conflicting QNAME zone
addr 56.56.56.56 a3-6.tld2 # 14 wildcard CNAME
addr 57.57.57.57 a3-7.sub1.tld2 # 15 wildcard CNAME
addr 127.0.0.16 a4-5-cname3.tld2 # 16 CNAME chain
addr 127.0.0.17 a4-6-cname3.tld2 # 17 stop short in CNAME chain
nxdomain c1.crash2.tld3 # 18 assert in rbtdb.c
nochange a0-1.tld2 +norecurse
nxdomain a0-1.tld2 +dnssec
nxdomain a0-1.signed-tld2
nochange a0-1.signed-tld2 +dnssec
end_group
start_group "IP rewrites" test2
nodata a3-1.tld2
nochange a3-2.tld2
nochange a4-1.tld2
nxdomain a4-2.tld2
nochange a4-2.tld2 -taaaa
nochange a4-2.tld2 -ttxt
nxdomain a4-2.tld2 -tany
nodata a4-3.tld2
nxdomain a3-1.tld2 -tAAAA
nochange a4-1-aaaa.tld2 -tAAAA
addr 127.0.0.1 a5-1-2.tld2 # 11 prefer smallest policy address
addr 127.0.0.1 a5-3.tld2 # 12 prefer first conflicting IP zone
addr 14.14.14.14 a5-4.tld2 # 13 prefer QNAME to IP
nxdomain c2.crash2.tld3 # 16 assert in rbtdb.c
end_group
# check that IP addresses for previous group were deleted from the radix tree
start_group "radix tree deletions"
nochange a3-1.tld2
nochange a3-2.tld2
nochange a4-1.tld2
nochange a4-2.tld2
nochange a4-2.tld2 -taaaa
nochange a4-2.tld2 -ttxt
nochange a4-2.tld2 -tany
nochange a4-3.tld2
nochange a3-1.tld2 -tAAAA
nochange a4-1-aaaa.tld2 -tAAAA
nochange a5-1-2.tld2
end_group
if ./rpz nsdname; then
start_group "NSDNAME rewrites" test3
nochange a3-1.tld2
nochange a3-1.tld2 +dnssec # 2 this once caused problems
nxdomain a3-1.sub1.tld2 # 3 NXDOMAIN *.sub1.tld2 by NSDNAME
nxdomain a3-1.subsub.sub1.tld2
nxdomain a3-1.subsub.sub1.tld2 -tany
addr 12.12.12.12 a4-2.subsub.sub2.tld2 # 6 walled garden for *.sub2.tld2
nochange a3-2.tld2. # 7 exempt rewrite by name
nochange a0-1.tld2. # 8 exempt rewrite by address block
addr 12.12.12.12 a4-1.tld2 # 9 prefer QNAME policy to NSDNAME
addr 127.0.0.1 a3-1.sub3.tld2 # 10 prefer policy for largest NSDNAME
addr 127.0.0.2 a3-1.subsub.sub3.tld2
nxdomain xxx.crash1.tld2 # 12 dns_db_detachnode() crash
end_group
else
echo "I:NSDNAME not checked; named not configured with --enable-rpz-nsdname"
fi
if ./rpz nsip; then
start_group "NSIP rewrites" test4
nxdomain a3-1.tld2 # 1 NXDOMAIN for all of tld2 by NSIP
nochange a3-2.tld2. # 2 exempt rewrite by name
nochange a0-1.tld2. # 3 exempt rewrite by address block
nochange a3-1.tld4 # 4 different NS IP address
end_group
else
echo "I:NSIP not checked; named not configured with --enable-rpz-nsip"
fi
# policies in ./test5 overridden by response-policy{} in ns3/named.conf
start_group "policy overrides" test5
addr 127.0.0.1 a3-1.tld2 # 1 bl-given
nochange a3-2.tld2 # 2 bl-passthru
nochange a3-3.tld2 # 3 bl-no-op obsolete for passthru
nochange a3-4.tld2 # 4 bl-disabled
nodata a3-5.tld2 # 5 bl-nodata
nxdomain a3-6.tld2 # 6 bl-nxdomain
here +noauth a3-7.tld2 -tany <<'EOF' # 7 bl_cname
;; status: NOERROR, x
a3-7.tld2. 300 IN CNAME txt-only.tld2.
txt-only.tld2. 120 IN TXT "txt-only-tld2"
EOF
addr 58.58.58.58 a3-8.tld2 # 8 bl_wildcname
addr 59.59.59.59 a3-9.sub9.tld2 # 9 bl_wildcname
addr 12.12.12.12 a3-10.tld2 # 10 bl-garden
end_group
# check that miscellaneous bugs are still absent
start_group "crashes"
for Q in RRSIG SIG ANY 'ANY +dnssec'; do
nocrash a3-1.tld2 -t$Q
nocrash a3-2.tld2 -t$Q
nocrash a3-5.tld2 -t$Q
nocrash www.redirect -t$Q
nocrash www.credirect -t$Q
done
end_group
# restart the server to see if that creates a core file
if test -z "$HAVE_CORE"; then
$RNDCCMD halt
restart
test -s ns3/named.core && setret "I:found stray core file; memory leak?"
fi
echo "I:exit status: $status"
exit $status