aboutsummaryrefslogtreecommitdiff
path: root/contrib/unbound/testdata/09-unbound-control.tdir/09-unbound-control.test
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/unbound/testdata/09-unbound-control.tdir/09-unbound-control.test')
-rw-r--r--contrib/unbound/testdata/09-unbound-control.tdir/09-unbound-control.test493
1 files changed, 0 insertions, 493 deletions
diff --git a/contrib/unbound/testdata/09-unbound-control.tdir/09-unbound-control.test b/contrib/unbound/testdata/09-unbound-control.tdir/09-unbound-control.test
deleted file mode 100644
index da284c2c0ccd..000000000000
--- a/contrib/unbound/testdata/09-unbound-control.tdir/09-unbound-control.test
+++ /dev/null
@@ -1,493 +0,0 @@
-# #-- 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="../.."
-. ../common.sh
-
-# End the test
-# $1: exit value
-end () {
- echo "> cat logfiles"
- cat fwd.log
- cat unbound.log
- exit $1
-}
-
-# Expect a given exit value of the previous command
-# $1: the expected exit value
-# $2: optional text to print when failing
-expect_exit_value () {
- if test $? -ne $1; then
- if test -z "$2"; then
- if test $1 -eq 1; then
- msg="on error"
- else
- msg="after success"
- fi
- else
- msg="$2"
- fi
- echo "wrong exit value $msg"
- end 1
- fi
-}
-
-# Helper function for quering
-# $@: at least the domain name to query and optional dig arguments
-query () {
- echo "> dig $@"
- dig @127.0.0.1 -p $UNBOUND_PORT $@ | tee outfile
-}
-
-# Expect something in the answer
-# $1: expected regular expression
-expect_answer () {
- echo "> check answer for \"$1\""
- if grep "$1" outfile; then
- echo "OK"
- else
- echo "Not OK"
- end 1
- fi
-}
-
-# Fail the test for unexpected answers
-# $1: unexpected regular expression
-fail_answer () {
- echo "> \"$1\" should not be in answer"
- if grep "$1" outfile; then
- echo "Not OK"
- end 1
- else
- echo "OK"
- fi
-}
-
-# Issue an unbound-control command
-# $@: command arguments
-control_command() {
- echo "$PRE/unbound-control $@"
- $PRE/unbound-control $@ > outfile
- exitstatus=$?
- cat outfile
- return $exitstatus
-}
-
-# Reload the server and check the reload has finished processing
-# when a lot of debug is enabled, a lot of log needs to be printed.
-control_reload () {
- prelines=`wc -l unbound.log | awk '{print $1;}'`
- cmd="$1"
- if test -z "$cmd"; then cmd="reload"; fi
- control_command -c ub.conf $cmd
- expect_exit_value 0
- # see if the reload has completed.
- lines1=`wc -l unbound.log | awk '{print $1;}'`
- count=0
- lines2=`wc -l unbound.log | awk '{print $1;}'`
- # See if the log finishes up without sleeping too long.
- while test "$lines1" -ne "$lines2"; do
- lines1=`wc -l unbound.log | awk '{print $1;}'`
- # There is no sleep here. The add and compare are a
- # brief wait.
- count=`expr "$count" + 1`
- if test "$count" -gt 30; then
- break;
- fi
- lines2=`wc -l unbound.log | awk '{print $1;}'`
- done
- if test "$lines1" -ne "$lines2"; then
- count=0
- while test "$lines1" -ne "$lines2"; do
- tail -1 unbound.log
- lines1=`wc -l unbound.log | awk '{print $1;}'`
- sleep 1
- count=`expr "$count" + 1`
- if test "$count" -gt 30; then
- echo "reload is taking too long"
- exit 1
- fi
- lines2=`wc -l unbound.log | awk '{print $1;}'`
- done
- if test "$count" -ne "0"; then
- echo "reload done with $count sec"
- fi
- fi
-}
-
-# Reload the server for a clean state
-clean_reload () {
- echo "> Reloading the server for a clean state"
- cp main.conf ub.conf
- control_reload
-}
-
-# Reload the server for a clean state and populate the cache
-clean_reload_and_fill_cache () {
- clean_reload
- echo "> Populating the cache"
- query www.example.com
- expect_answer "10.20.30.40"
- if test "$have_threads" = "no"; then
- # Try to get the answer in all processes' cache.
- for (( try=0 ; try < num_threads * 2 * 2 ; try++ )) ; do
- query www.example.com
- expect_answer "10.20.30.40"
- done
- fi
-}
-
-# Dump the cache contents
-# $@: optional options to unbound-control
-cache_dump () {
- echo "$PRE/unbound-control $@ dump_cache > cache.dump"
- $PRE/unbound-control $@ dump_cache > cache.dump
-}
-
-# Load cache contents
-# $@: optional options to unbound-control
-cache_load () {
- echo "$PRE/unbound-control $@ load_cache < cache.dump"
- $PRE/unbound-control $@ load_cache < cache.dump
-}
-
-# Expect an entry in the cache dump
-# $1: expected regular expression
-expect_in_cache_dump () {
- echo "> check cache dump for \"$1\""
- if grep "$1" cache.dump; then
- echo "OK cache dump"
- else
- echo "Not OK cache dump"
- end 1
- fi
-}
-
-# Fail the test for unexpected entry in the cache dump
-# $1: unexpected regular expression
-fail_in_cache_dump () {
- echo "> \"$1\" should not be in cache dump"
- if grep "$1" cache.dump; then
- echo "Not OK cache dump"
- end 1
- else
- echo "OK cache dump"
- fi
-}
-
-# Check if multi-threading or multi-process environment
-have_threads="no"
-if grep "define HAVE_PTHREAD 1" $PRE/config.h; then have_threads="yes"; fi
-if grep "define HAVE_SOLARIS_THREADS 1" $PRE/config.h; then have_threads="yes"; fi
-if grep "define HAVE_WINDOWS_THREADS 1" $PRE/config.h; then have_threads="yes"; fi
-
-# start the test; keep the original conf file around
-cp ub.conf orig.conf
-
-
-# START - thread configuration
-# Do both single thread/process and multi thread/process runs.
-# The number of threads can only go up from the initial configuration between
-# reloads so starting with 1.
-for num_threads in 1 4; do
-
-cp orig.conf ub.conf
-echo "> setting num-threads: $num_threads"
-echo "server: num-threads: $num_threads" >> ub.conf
-cp ub.conf main.conf
-clean_reload
-
-
-teststep "exit value is 1 on usage"
-control_command -h
-expect_exit_value 1 "for usage"
-
-# use lock-verify if possible
-
-teststep "test if the server is up"
-query www.example.com.
-expect_answer "10.20.30.40"
-
-teststep "exit value is 1 when a bad command is given"
-control_command -c ub.conf blablargh
-expect_exit_value 1
-
-# reload the server. test if the server came up by putting a new
-# local-data element in the server.
-teststep "reload the server"
-echo "server: local-data: 'afterreload. IN A 5.6.7.8'" >> ub.conf
-control_reload
-query afterreload.
-expect_answer "5.6.7.8"
-
-teststep "must have had at least 1 query since reload"
-control_command -c ub.conf stats
-expect_exit_value 0
-expect_answer "^total.num.queries=[1-9][0-9]*$"
-
-teststep "check verbosity"
-control_command -c ub.conf verbosity 2
-expect_exit_value 0
-
-teststep "check syntax error in parse"
-control_command -c ub.conf verbosity jkdf
-expect_exit_value 1
-
-teststep "check bad credentials"
-cp ub.conf bad.conf
-cat conf.bad_credentials >> bad.conf
-control_command -c bad.conf verbosity 2
-expect_exit_value 1
-
-teststep "check spoofed client credentials"
-rm -f bad.conf
-cp ub.conf bad.conf
-cat conf.spoofed_credentials >> bad.conf
-control_command -c bad.conf verbosity 2
-expect_exit_value 1
-
-teststep "clean reload"
-clean_reload
-
-# The flush negative only works if the server is either on 1 thread,
-# or there is threading enabled. Multiple processes does not work for the
-# test, since the printout does not have the stats of a global cache.
-if test $num_threads -le 1 -o "$have_threads" = "yes"; then
-teststep "Check negative flushing"
-query always.empty.
-expect_answer "SERVFAIL"
-query always.empty. DNSKEY
-expect_answer "SERVFAIL"
-control_command -c ub.conf flush_negative
-expect_exit_value 0
-expect_answer "^ok removed .*, 3 messages and 1 key entries"
-control_command -c ub.conf flush_negative
-expect_exit_value 0
-expect_answer "^ok removed .*, 0 messages and 0 key entries"
-else
- echo "> skip Check negative flushing, because no threads"
-fi
-
-teststep "create a new local zone"
-control_command -c ub.conf local_zone example.net static
-expect_exit_value 0
-control_command -c ub.conf local_data www.example.net A 192.0.2.1
-expect_exit_value 0
-
-teststep "check that www.example.net exists"
-query www.example.net.
-expect_answer "192.0.2.1"
-
-teststep "check that mail.example.net has nxdomain"
-query mail.example.net.
-expect_answer "NXDOMAIN"
-
-teststep "remove www.example.net - check it gets nxdomain"
-control_command -c ub.conf local_data_remove www.example.net
-expect_exit_value 0
-query www.example.net.
-expect_answer "NXDOMAIN"
-
-teststep "remove nonexistent name - check bug#287(segfault) does not happen"
-control_command -c ub.conf local_data_remove test.example.net
-# if crash then then we get: error: could not SSL_read from unbound-control
-expect_exit_value 0
-
-teststep "remove example.net - check its gone"
-control_command -c ub.conf local_zone_remove example.net
-expect_exit_value 0
-query www.example.net.
-expect_answer "SERVFAIL"
-
-teststep "load local-zones from file"
-control_command -c ub.conf local_zones < local_zones
-expect_exit_value 0
-query localzonefromfile
-expect_answer "REFUSED"
-if test "$have_threads" = "no"; then
- # Try to see if a process other than the first one
- # has updated data from stdin.
- for (( try=0 ; try < num_threads * 2 ; try++ )) ; do
- query localzonefromfile
- expect_answer "REFUSED"
- done
-fi
-
-teststep "load local-data from file"
-control_command -c ub.conf local_datas < local_data
-expect_exit_value 0
-query -t txt localdatafromfile
-expect_answer "local data from file OK"
-if test "$have_threads" = "no"; then
- # Try to see if a process other than the first one
- # has updated data from stdin.
- for (( try=0 ; try < num_threads * 2 ; try++ )) ; do
- query -t txt localdatafromfile
- expect_answer "local data from file OK"
- done
-fi
-
-teststep "load view-local-data from file"
-control_command -c ub.conf view_local_datas testview < view_local_data
-expect_exit_value 0
-control_command -c ub.conf view_list_local_zones testview
-query -t txt viewlocaldatafromfile
-expect_answer "view local data from file OK"
-if test "$have_threads" = "no"; then
- # Try to see if a process other than the first one
- # has updated data from stdin.
- for (( try=0 ; try < num_threads * 2 ; try++ )) ; do
- query -t txt viewlocaldatafromfile
- expect_answer "view local data from file OK"
- done
-fi
-
-teststep "remove local-zone, local-data and view-local-data from file"
-control_command -c ub.conf local_zones_remove < local_zones_remove
-expect_exit_value 0
-control_command -c ub.conf local_datas_remove < local_data_remove
-expect_exit_value 0
-control_command -c ub.conf view_local_datas_remove testview < view_local_data_remove
-expect_exit_value 0
-control_command -c ub.conf list_local_zones
-fail_answer "localzonefromfile"
-fail_answer "local data from file OK"
-expect_answer "otherlocalzone"
-control_command -c ub.conf view_list_local_data testview
-fail_answer "viewlocaldatafromfile"
-
-teststep "flushing"
-control_command -c ub.conf flush www.example.net
-expect_exit_value 0
-control_command -c ub.conf flush_type www.example.net TXT
-expect_exit_value 0
-control_command -c ub.conf flush_zone example.net
-expect_exit_value 0
-
-# START - single thread/process tests only
-if test $num_threads -le 1; then
-
-clean_reload_and_fill_cache
-
-teststep "dump the cache"
-query www.example.com.
-cache_dump -c ub.conf
-expect_exit_value 0
-cat cache.dump
-expect_in_cache_dump "10.20.30.40"
-
-control_command -c ub.conf lookup www.example.com
-expect_exit_value 0
-# answer to lookup is meaningless because of use a forwarder, oh well.
-
-teststep "load the cache dump"
-cache_load -c ub.conf
-expect_exit_value 0
-query www.example.com. +nordflag
-expect_answer "10.20.30.40"
-
-else
- echo ""
- echo "> skip test parts that need single thread/process"
-fi
-# END - single thread/process tests only
-
-clean_reload_and_fill_cache
-
-teststep "reload and check cache - should be empty"
-control_reload
-query www.example.com +nordflag
-fail_answer "10.20.30.40"
-
-clean_reload_and_fill_cache
-
-teststep "reload_keep_cache and check cache - should not be empty"
-control_reload reload_keep_cache
-query www.example.com +nordflag
-expect_answer "10.20.30.40"
-
-clean_reload_and_fill_cache
-
-teststep "change msg-cache-size and reload_keep_cache - should be empty"
-echo "server: msg-cache-size: 2m" >> ub.conf
-control_reload reload_keep_cache
-query www.example.com +nordflag
-fail_answer "10.20.30.40"
-
-clean_reload_and_fill_cache
-
-teststep "change rrset-cache-size and reload_keep_cache - should be empty"
-echo "server: rrset-cache-size: 2m" >> ub.conf
-control_reload reload_keep_cache
-query www.example.com +nordflag
-fail_answer "10.20.30.40"
-
-# START - have_threads tests
-# This part of the test needs threads for combined output.
-if test "$have_threads" = "yes"; then
-
-clean_reload_and_fill_cache
-
-teststep "change num-threads and reload_keep_cache - should be empty"
-echo "server: num-threads: 2" >> ub.conf
-control_reload reload_keep_cache
-query www.example.com +nordflag
-fail_answer "10.20.30.40"
-
-clean_reload_and_fill_cache
-
-teststep "change minimal-responses and reload_keep_cache - should not be empty"
-echo "server: minimal-responses: no" >> ub.conf
-control_reload reload_keep_cache
-query www.example.com +nordflag
-expect_answer "10.20.30.40"
-
-else
- echo ""
- echo "> skip test parts that need threads, have_threads=no"
-fi
-# END - have_threads tests
-
-done
-# END - thread configuration
-
-teststep "now stop the server"
-control_command -c ub.conf stop
-expect_exit_value 0
-
-teststep "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 "not stopped, failure"
- end 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."
- end 1
- fi
- fi
-fi
-
-end 0