8ba25b126a
git-svn-id: https://unbound.nlnetlabs.nl/svn/trunk@4264 be551aaa-1e26-0410-a405-d3ace91eadb9
407 lines
9.9 KiB
Plaintext
407 lines
9.9 KiB
Plaintext
# #-- 09-unbound-control.test --#
|
|
# source the master var file when it's there
|
|
[ -f ../.tpkg.var.master ] && source ../.tpkg.var.master
|
|
# use .tpkg.var.test for in test variable passing
|
|
[ -f .tpkg.var.test ] && source .tpkg.var.test
|
|
|
|
PRE="../.."
|
|
|
|
# exit value is 1 on usage
|
|
$PRE/unbound-control -h
|
|
if test $? -ne 1; then
|
|
echo "wrong exit value for usage."
|
|
exit 1
|
|
else
|
|
echo "exit value for usage: OK"
|
|
fi
|
|
|
|
# use lock-verify if possible
|
|
|
|
# test if the server is up.
|
|
echo "> dig www.example.com."
|
|
dig @127.0.0.1 -p $UNBOUND_PORT www.example.com. | tee outfile
|
|
echo "> check answer"
|
|
if grep "10.20.30.40" outfile; then
|
|
echo "OK"
|
|
else
|
|
echo "> cat logfiles"
|
|
cat fwd.log
|
|
cat unbound.log
|
|
echo "Not OK"
|
|
exit 1
|
|
fi
|
|
|
|
# exit value is 1 when a bad command is given.
|
|
echo "$PRE/unbound-control -c ub.conf blablargh"
|
|
$PRE/unbound-control -c ub.conf blablargh
|
|
if test $? -ne 1; then
|
|
echo "wrong exit value on error."
|
|
echo "> cat logfiles"
|
|
cat fwd.log
|
|
cat unbound.lo
|
|
exit 1
|
|
else
|
|
echo "correct exit value on error"
|
|
fi
|
|
|
|
# reload the server. test if the server came up by putting a new
|
|
# local-data element in the server.
|
|
echo "server: local-data: 'afterreload. IN A 5.6.7.8'" >> ub.conf
|
|
echo "$PRE/unbound-control -c ub.conf reload"
|
|
$PRE/unbound-control -c ub.conf reload
|
|
if test $? -ne 0; then
|
|
echo "wrong exit value after success"
|
|
exit 1
|
|
fi
|
|
|
|
echo "> dig afterreload."
|
|
dig @127.0.0.1 -p $UNBOUND_PORT afterreload. | tee outfile
|
|
echo "> check answer"
|
|
if grep "5.6.7.8" outfile; then
|
|
echo "OK"
|
|
else
|
|
echo "> cat logfiles"
|
|
cat fwd.log
|
|
cat unbound.log
|
|
echo "Not OK"
|
|
exit 1
|
|
fi
|
|
|
|
# must have had queries now. 1 since reload.
|
|
echo "$PRE/unbound-control -c ub.conf stats"
|
|
$PRE/unbound-control -c ub.conf stats > tmp.$$
|
|
if test $? -ne 0; then
|
|
echo "wrong exit value after success"
|
|
exit 1
|
|
fi
|
|
if grep "^total.num.queries=[1-9][0-9]*$" tmp.$$; then
|
|
echo "OK"
|
|
else
|
|
echo "bad stats"
|
|
cat tmp.$$
|
|
exit 1
|
|
fi
|
|
|
|
# verbosity
|
|
echo "$PRE/unbound-control -c ub.conf verbosity 2"
|
|
$PRE/unbound-control -c ub.conf verbosity 2
|
|
if test $? -ne 0; then
|
|
echo "wrong exit value after success"
|
|
exit 1
|
|
fi
|
|
|
|
# check syntax error in parse
|
|
echo "$PRE/unbound-control -c ub.conf verbosity jkdf"
|
|
$PRE/unbound-control -c ub.conf verbosity jkdf
|
|
if test $? -ne 1; then
|
|
echo "wrong exit value after failure"
|
|
exit 1
|
|
fi
|
|
|
|
# check bad credentials
|
|
cp ub.conf bad.conf
|
|
echo "remote-control:" >> bad.conf
|
|
echo " server-key-file: bad_server.key" >> bad.conf
|
|
echo " server-cert-file: bad_server.pem" >> bad.conf
|
|
echo " control-key-file: bad_control.key" >> bad.conf
|
|
echo " control-cert-file: bad_control.pem" >> bad.conf
|
|
echo "$PRE/unbound-control -c bad.conf verbosity 2"
|
|
$PRE/unbound-control -c bad.conf verbosity 2
|
|
if test $? -ne 1; then
|
|
echo "wrong exit value after failure"
|
|
exit 1
|
|
fi
|
|
|
|
# check spoofedclient credentials
|
|
rm -f bad.conf
|
|
cp ub.conf bad.conf
|
|
echo "remote-control:" >> bad.conf
|
|
echo " server-key-file: unbound_server.key" >> bad.conf
|
|
echo " server-cert-file: unbound_server.pem" >> bad.conf
|
|
echo " control-key-file: bad_control.key" >> bad.conf
|
|
echo " control-cert-file: bad_control.pem" >> bad.conf
|
|
echo "$PRE/unbound-control -c bad.conf verbosity 2"
|
|
$PRE/unbound-control -c bad.conf verbosity 2
|
|
if test $? -ne 1; then
|
|
echo "wrong exit value after failure"
|
|
exit 1
|
|
fi
|
|
|
|
# create a new local zone
|
|
echo "> test of local zone"
|
|
echo "$PRE/unbound-control -c ub.conf local_zone example.net static"
|
|
$PRE/unbound-control -c ub.conf local_zone example.net static
|
|
if test $? -ne 0; then
|
|
echo "wrong exit value after success"
|
|
exit 1
|
|
fi
|
|
echo "$PRE/unbound-control -c ub.conf local_data www.example.net A 192.0.2.1"
|
|
$PRE/unbound-control -c ub.conf local_data www.example.net A 192.0.2.1
|
|
if test $? -ne 0; then
|
|
echo "wrong exit value after success"
|
|
exit 1
|
|
fi
|
|
|
|
# check that www.example.net exists
|
|
echo "> dig www.example.net."
|
|
dig @127.0.0.1 -p $UNBOUND_PORT www.example.net. | tee outfile
|
|
echo "> check answer"
|
|
if grep "192.0.2.1" outfile; then
|
|
echo "OK"
|
|
else
|
|
echo "> cat logfiles"
|
|
cat fwd.log
|
|
cat unbound.log
|
|
echo "Not OK"
|
|
exit 1
|
|
fi
|
|
|
|
# check that mail.example.net has nxdomain
|
|
echo "> dig mail.example.net."
|
|
dig @127.0.0.1 -p $UNBOUND_PORT mail.example.net. | tee outfile
|
|
echo "> check answer"
|
|
if grep "NXDOMAIN" outfile; then
|
|
echo "OK"
|
|
else
|
|
echo "> cat logfiles"
|
|
cat fwd.log
|
|
cat unbound.log
|
|
echo "Not OK"
|
|
exit 1
|
|
fi
|
|
|
|
# remove www.example.net - check it gets nxdomain
|
|
echo "$PRE/unbound-control -c ub.conf local_data_remove www.example.net"
|
|
$PRE/unbound-control -c ub.conf local_data_remove www.example.net
|
|
if test $? -ne 0; then
|
|
echo "wrong exit value after success"
|
|
exit 1
|
|
fi
|
|
echo "> dig www.example.net."
|
|
dig @127.0.0.1 -p $UNBOUND_PORT www.example.net. | tee outfile
|
|
echo "> check answer"
|
|
if grep "NXDOMAIN" outfile; then
|
|
echo "OK"
|
|
else
|
|
echo "> cat logfiles"
|
|
cat fwd.log
|
|
cat unbound.log
|
|
echo "Not OK"
|
|
exit 1
|
|
fi
|
|
|
|
# remove nonexistent name - check bug#287(segfault) does not happen.
|
|
echo "$PRE/unbound-control -c ub.conf local_data_remove test.example.net"
|
|
$PRE/unbound-control -c ub.conf local_data_remove test.example.net
|
|
# if crash then then we get: error: could not SSL_read from unbound-control
|
|
if test $? -ne 0; then
|
|
echo "wrong exit value after success"
|
|
cat unbound.log
|
|
echo "Not OK"
|
|
exit 1
|
|
fi
|
|
|
|
# remove example.net - check its gone.
|
|
echo "$PRE/unbound-control -c ub.conf local_zone_remove example.net"
|
|
$PRE/unbound-control -c ub.conf local_zone_remove example.net
|
|
if test $? -ne 0; then
|
|
echo "wrong exit value after success"
|
|
exit 1
|
|
fi
|
|
echo "> dig www.example.net."
|
|
dig @127.0.0.1 -p $UNBOUND_PORT www.example.net. | tee outfile
|
|
echo "> check answer"
|
|
if grep "SERVFAIL" outfile; then
|
|
echo "OK"
|
|
else
|
|
echo "> cat logfiles"
|
|
cat fwd.log
|
|
cat unbound.log
|
|
echo "Not OK"
|
|
exit 1
|
|
fi
|
|
|
|
# dump the cache
|
|
echo "> test cache dump"
|
|
# fillup cache
|
|
echo "dig www.example.com"
|
|
dig @127.0.0.1 -p $UNBOUND_PORT www.example.com.
|
|
echo "$PRE/unbound-control -c ub.conf dump_cache"
|
|
$PRE/unbound-control -c ub.conf dump_cache > tmp.$$
|
|
if test $? -ne 0; then
|
|
echo "wrong exit value after success"
|
|
exit 1
|
|
fi
|
|
cat tmp.$$
|
|
if grep 10.20.30.40 tmp.$$; then
|
|
echo "OK example.com is in cache dump"
|
|
else
|
|
echo "Not OK cache dump"
|
|
exit 1
|
|
fi
|
|
|
|
# test lookup
|
|
echo "$PRE/unbound-control -c ub.conf lookup www.example.com"
|
|
$PRE/unbound-control -c ub.conf lookup www.example.com
|
|
if test $? -ne 0; then
|
|
echo "wrong exit value after success"
|
|
exit 1
|
|
fi
|
|
# answer to lookup is meaningless because of use a forwarder, oh well.
|
|
|
|
# load the cache dump.
|
|
echo "$PRE/unbound-control -c ub.conf load_cache < tmp.$$"
|
|
$PRE/unbound-control -c ub.conf load_cache < tmp.$$
|
|
if test $? -ne 0; then
|
|
echo "wrong exit value after success"
|
|
exit 1
|
|
fi
|
|
echo "> dig www.example.com."
|
|
dig @127.0.0.1 -p $UNBOUND_PORT www.example.com. | tee outfile
|
|
echo "> check answer"
|
|
if grep "10.20.30.40" outfile; then
|
|
echo "OK"
|
|
else
|
|
echo "> cat logfiles"
|
|
cat fwd.log
|
|
cat unbound.log
|
|
echo "Not OK"
|
|
exit 1
|
|
fi
|
|
|
|
# load local-zones from file
|
|
echo "$PRE/unbound-control -c ub.conf local_zones < local_zones"
|
|
$PRE/unbound-control -c ub.conf local_zones < local_zones
|
|
if test $? -ne 0; then
|
|
echo "wrong exit value after success"
|
|
exit 1
|
|
fi
|
|
echo "> dig localzonefromfile."
|
|
dig @127.0.0.1 -p $UNBOUND_PORT localzonefromfile | tee outfile
|
|
echo "> check answer"
|
|
if grep "REFUSED" outfile; then
|
|
echo "OK"
|
|
else
|
|
echo "Not OK"
|
|
exit 1
|
|
fi
|
|
|
|
# load local-data from file
|
|
echo "$PRE/unbound-control -c ub.conf local_datas < local_data"
|
|
$PRE/unbound-control -c ub.conf local_datas < local_data
|
|
if test $? -ne 0; then
|
|
echo "wrong exit value after success"
|
|
exit 1
|
|
fi
|
|
echo "> dig localdatafromfile."
|
|
dig @127.0.0.1 -p $UNBOUND_PORT -t txt localdatafromfile | tee outfile
|
|
echo "> check answer"
|
|
if grep "local data from file OK" outfile; then
|
|
echo "OK"
|
|
else
|
|
echo "Not OK"
|
|
exit 1
|
|
fi
|
|
|
|
# remove local-zone and local-data from file
|
|
echo "$PRE/unbound-control -c ub.conf local_zones_remove < local_zones_remove"
|
|
$PRE/unbound-control -c ub.conf local_zones_remove < local_zones_remove
|
|
if test $? -ne 0; then
|
|
echo "wrong exit value after success"
|
|
exit 1
|
|
fi
|
|
echo "$PRE/unbound-control -c ub.conf local_datas_remove < local_data_remove"
|
|
$PRE/unbound-control -c ub.conf local_datas_remove < local_data_remove
|
|
if test $? -ne 0; then
|
|
echo "wrong exit value after success"
|
|
exit 1
|
|
fi
|
|
echo "> check zone and data removal list_local_zones"
|
|
$PRE/unbound-control -c ub.conf list_local_zones | tee outfile
|
|
if grep "localzonefromfile" outfile; then
|
|
echo "Not OK"
|
|
exit 1
|
|
fi
|
|
if grep "local data from file OK" outfile; then
|
|
echo "Not OK"
|
|
exit 1
|
|
fi
|
|
if grep "otherlocalzone" outfile; then
|
|
echo "OK"
|
|
else
|
|
echo "Not OK"
|
|
exit 1
|
|
fi
|
|
|
|
# flushing
|
|
echo "$PRE/unbound-control -c ub.conf flush www.example.net"
|
|
$PRE/unbound-control -c ub.conf flush www.example.net
|
|
if test $? -ne 0; then
|
|
echo "wrong exit value after success"
|
|
exit 1
|
|
fi
|
|
|
|
echo "$PRE/unbound-control -c ub.conf flush_type www.example.net TXT"
|
|
$PRE/unbound-control -c ub.conf flush_type www.example.net TXT
|
|
if test $? -ne 0; then
|
|
echo "wrong exit value after success"
|
|
exit 1
|
|
fi
|
|
|
|
echo "$PRE/unbound-control -c ub.conf flush_zone example.net"
|
|
$PRE/unbound-control -c ub.conf flush_zone example.net
|
|
if test $? -ne 0; then
|
|
echo "wrong exit value after success"
|
|
exit 1
|
|
fi
|
|
|
|
# now stop the server
|
|
echo "$PRE/unbound-control -c ub.conf stop"
|
|
$PRE/unbound-control -c ub.conf stop
|
|
if test $? -ne 0; then
|
|
echo "wrong exit value after success"
|
|
exit 1
|
|
fi
|
|
# see if the server has really exited.
|
|
TRY_MAX=20
|
|
for (( try=0 ; try <= $TRY_MAX ; try++ )) ; do
|
|
if kill -0 $UNBOUND_PID 2>&1 | tee tmp.$$; then
|
|
echo "not stopped yet, waiting"
|
|
sleep 1
|
|
else
|
|
echo "stopped OK; break"
|
|
break;
|
|
fi
|
|
if grep "No such process" tmp.$$; then
|
|
echo "stopped OK; break"
|
|
break;
|
|
fi
|
|
done
|
|
if kill -0 $UNBOUND_PID; then
|
|
echo "still up!"
|
|
echo "> cat logfiles"
|
|
cat fwd.log
|
|
cat unbound.log
|
|
echo "not stopped, failure"
|
|
exit 1
|
|
else
|
|
echo "stopped OK"
|
|
|
|
if test -f ublocktrace.0; then
|
|
if $PRE/lock-verify ublocktrace.*; then
|
|
echo "lock-verify test worked."
|
|
else
|
|
echo "lock-verify test failed."
|
|
cat fwd.log
|
|
cat unbound.log
|
|
exit 1
|
|
fi
|
|
fi
|
|
fi
|
|
|
|
echo "> cat logfiles"
|
|
cat fwd.log
|
|
cat unbound.log
|
|
echo "> OK"
|
|
exit 0
|