mirror of
https://gitlab.isc.org/isc-projects/kea
synced 2025-08-31 14:05:33 +00:00
[trac610] added a new system test, "bindctl".
It checks some basic management operations using bindctl, including stopping/starting the auth server, checking statistics, and replacing data source.
This commit is contained in:
@@ -751,6 +751,7 @@ AC_OUTPUT([doc/version.ent
|
||||
tests/system/conf.sh
|
||||
tests/system/glue/setup.sh
|
||||
tests/system/glue/nsx1/b10-config.db
|
||||
tests/system/bindctl/nsx1/b10-config.db.template
|
||||
], [
|
||||
chmod +x src/bin/cmdctl/run_b10-cmdctl.sh
|
||||
chmod +x src/bin/xfrin/run_b10-xfrin.sh
|
||||
|
@@ -7,7 +7,10 @@ distclean-local:
|
||||
# Most of the files under this directory (including test subdirectories)
|
||||
# must be listed in EXTRA_DIST.
|
||||
EXTRA_DIST = README cleanall.sh ifconfig.sh start.pl stop.pl run.sh runall.sh
|
||||
EXTRA_DIST += common/default_user.csv
|
||||
EXTRA_DIST += glue/auth.good glue/example.good glue/noglue.good glue/test.good
|
||||
EXTRA_DIST += glue/tests.sh glue/clean.sh
|
||||
EXTRA_DIST += glue/nsx1/com.db glue/nsx1/net.db glue/nsx1/root-servers.nil.db
|
||||
EXTRA_DIST += glue/nsx1/root.db
|
||||
EXTRA_DIST += bindctl/tests.sh bindctl/clean.sh bindctl/setup.sh
|
||||
EXTRA_DIST += bindctl/nsx1/root.db bindctl/nsx1/example-normalized.db
|
||||
|
@@ -18,6 +18,7 @@ set to point to the top directory of the source tree.
|
||||
There are multiple test suites, each in a separate subdirectory and
|
||||
involving a different DNS setup. They are:
|
||||
|
||||
bindctl/ Some basic management operations using the bindctl tool
|
||||
glue/ Glue handling tests
|
||||
(the following tests are planned to be added soon)
|
||||
dnssec/ DNSSEC tests
|
||||
|
24
tests/system/bindctl/clean.sh
Executable file
24
tests/system/bindctl/clean.sh
Executable file
@@ -0,0 +1,24 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
|
||||
# Copyright (C) 2000, 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.
|
||||
|
||||
#
|
||||
# Clean up after glue tests.
|
||||
#
|
||||
|
||||
rm -f */b10-config.db
|
||||
rm -f dig.out.* bindctl.out.*
|
||||
rm -f */msgq_socket */zone.sqlite3
|
10
tests/system/bindctl/nsx1/b10-config.db.template.in
Normal file
10
tests/system/bindctl/nsx1/b10-config.db.template.in
Normal file
@@ -0,0 +1,10 @@
|
||||
{"version": 2,
|
||||
"Auth": {
|
||||
"listen_on": [{"address": "10.53.0.1", "port": 53210}],
|
||||
"database_file": "@abs_builddir@/zone.sqlite3",
|
||||
"statistics-interval": 1
|
||||
},
|
||||
"Xfrout": {
|
||||
"log_file": "@abs_builddir@/Xfrout.log"
|
||||
}
|
||||
}
|
3
tests/system/bindctl/nsx1/example-normalized.db
Normal file
3
tests/system/bindctl/nsx1/example-normalized.db
Normal file
@@ -0,0 +1,3 @@
|
||||
com. 300 IN SOA postmaster.example. ns.example.com. 2000042100 600 600 1200 600
|
||||
com. 300 IN NS ns.example.com.
|
||||
ns.example.com. 300 IN A 192.0.2.2
|
25
tests/system/bindctl/nsx1/root.db
Normal file
25
tests/system/bindctl/nsx1/root.db
Normal file
@@ -0,0 +1,25 @@
|
||||
; Copyright (C) 2004, 2007 Internet Systems Consortium, Inc. ("ISC")
|
||||
; Copyright (C) 2000, 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.
|
||||
|
||||
$TTL 300
|
||||
. IN SOA postmaster.example. a.root.servers.nil. (
|
||||
2000042100 ; serial
|
||||
600 ; refresh
|
||||
600 ; retry
|
||||
1200 ; expire
|
||||
600 ; minimum
|
||||
)
|
||||
. NS ns.example.com.
|
||||
ns.example.com. A 192.0.2.1
|
26
tests/system/bindctl/setup.sh
Executable file
26
tests/system/bindctl/setup.sh
Executable file
@@ -0,0 +1,26 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC")
|
||||
#
|
||||
# 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.
|
||||
|
||||
SYSTEMTESTTOP=..
|
||||
. $SYSTEMTESTTOP/conf.sh
|
||||
|
||||
SUBTEST_TOP=${TEST_TOP}/bindctl
|
||||
|
||||
cp ${SUBTEST_TOP}/nsx1/b10-config.db.template ${SUBTEST_TOP}/nsx1/b10-config.db
|
||||
|
||||
rm -f ${SUBTEST_TOP}/*/zone.sqlite3
|
||||
${B10_LOADZONE} -o . -d ${SUBTEST_TOP}/nsx1/zone.sqlite3 \
|
||||
${SUBTEST_TOP}//nsx1/root.db
|
94
tests/system/bindctl/tests.sh
Executable file
94
tests/system/bindctl/tests.sh
Executable file
@@ -0,0 +1,94 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Copyright (C) 2011 Internet Systems Consortium, Inc. ("ISC")
|
||||
#
|
||||
# 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.
|
||||
|
||||
SYSTEMTESTTOP=..
|
||||
. $SYSTEMTESTTOP/conf.sh
|
||||
|
||||
#
|
||||
# Do bindctl tests.
|
||||
#
|
||||
|
||||
status=0
|
||||
n=0
|
||||
|
||||
echo "I:Checking b10-auth is working by default ($n)"
|
||||
$DIG +norec @10.53.0.1 -p 53210 ns.example.com. A >dig.out.$n || status=1
|
||||
# perform a simple check on the output (digcomp would be too much for this)
|
||||
grep 192.0.2.1 dig.out.$n > /dev/null || status=1
|
||||
if [ $status != 0 ]; then echo "I:failed"; fi
|
||||
n=`expr $n + 1`
|
||||
|
||||
echo "I:Checking BIND 10 statistics after a pose ($n)"
|
||||
# wait for 2sec to make sure b10-stats gets the latest statistics.
|
||||
# note that we set statistics-interval to 1.
|
||||
sleep 2
|
||||
echo 'Stats show\n' | $RUN_BINDCTL \
|
||||
--csv-file-dir=$BINDCTL_CSV_DIR > bindctl.out.$n || status=1
|
||||
# the server should have received 1 UDP and 1 TCP queries (TCP query was
|
||||
# sent from the server startup script)
|
||||
grep "\"auth.queries.tcp\": 1," bindctl.out.$n > /dev/null || status=1
|
||||
grep "\"auth.queries.udp\": 1," bindctl.out.$n > /dev/null || status=1
|
||||
if [ $status != 0 ]; then echo "I:failed"; fi
|
||||
n=`expr $n + 1`
|
||||
|
||||
echo "I:Stopping b10-auth and checking that ($n)"
|
||||
echo 'config set Boss/start_auth false\nconfig commit\nquit\n' | $RUN_BINDCTL \
|
||||
--csv-file-dir=$BINDCTL_CSV_DIR 2>&1 > /dev/null || status=1
|
||||
# dig should exit with a failure code.
|
||||
$DIG +tcp +norec @10.53.0.1 -p 53210 ns.example.com. A && status=1
|
||||
if [ $status != 0 ]; then echo "I:failed"; fi
|
||||
n=`expr $n + 1`
|
||||
|
||||
echo "I:Restarting b10-auth and checking that ($n)"
|
||||
echo 'config set Boss/start_auth true\nconfig commit\nquit\n' | $RUN_BINDCTL \
|
||||
--csv-file-dir=$BINDCTL_CSV_DIR 2>&1 > /dev/null || status=1
|
||||
$DIG +norec @10.53.0.1 -p 53210 ns.example.com. A >dig.out.$n || status=1
|
||||
grep 192.0.2.1 dig.out.$n > /dev/null || status=1
|
||||
if [ $status != 0 ]; then echo "I:failed"; fi
|
||||
n=`expr $n + 1`
|
||||
|
||||
echo "I:Rechecking BIND 10 statistics after a pose ($n)"
|
||||
sleep 2
|
||||
echo 'Stats show\n' | $RUN_BINDCTL \
|
||||
--csv-file-dir=$BINDCTL_CSV_DIR > bindctl.out.$n || status=1
|
||||
# The statistics counters should have been reset while stop/start.
|
||||
grep "\"auth.queries.tcp\": 0," bindctl.out.$n > /dev/null || status=1
|
||||
grep "\"auth.queries.udp\": 1," bindctl.out.$n > /dev/null || status=1
|
||||
if [ $status != 0 ]; then echo "I:failed"; fi
|
||||
n=`expr $n + 1`
|
||||
|
||||
echo "I:Changing the data source from sqlite3 to in-memory ($n)"
|
||||
DATASRC_SPEC='[{"type": "memory", "zones": [{"origin": "com","file":'
|
||||
DATASRC_SPEC="${DATASRC_SPEC} \"${TEST_TOP}/bindctl/nsx1/example-normalized.db\"}]}]"
|
||||
echo "config set Auth/datasources ${DATASRC_SPEC}\nconfig commit\nquit\n" | $RUN_BINDCTL \
|
||||
--csv-file-dir=$BINDCTL_CSV_DIR > bindctl.out.$n || status=1
|
||||
$DIG +norec @10.53.0.1 -p 53210 ns.example.com. A >dig.out.$n || status=1
|
||||
grep 192.0.2.2 dig.out.$n > /dev/null || status=1
|
||||
if [ $status != 0 ]; then echo "I:failed"; fi
|
||||
n=`expr $n + 1`
|
||||
|
||||
echo "I:Rechecking BIND 10 statistics after changing the datasource ($n)"
|
||||
sleep 2
|
||||
echo 'Stats show\n' | $RUN_BINDCTL \
|
||||
--csv-file-dir=$BINDCTL_CSV_DIR > bindctl.out.$n || status=1
|
||||
# The statistics counters shouldn't be reset due to hot-swapping datasource.
|
||||
grep "\"auth.queries.tcp\": 0," bindctl.out.$n > /dev/null || status=1
|
||||
grep "\"auth.queries.udp\": 2," bindctl.out.$n > /dev/null || status=1
|
||||
if [ $status != 0 ]; then echo "I:failed"; fi
|
||||
n=`expr $n + 1`
|
||||
|
||||
echo "I:exit status: $status"
|
||||
exit $status
|
1
tests/system/common/default_user.csv
Normal file
1
tests/system/common/default_user.csv
Normal file
@@ -0,0 +1 @@
|
||||
root,bind10
|
|
@@ -34,10 +34,13 @@ if [ -z $BIND9_TOP ]; then
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Find the top of the source tree.
|
||||
# Find the top of the source and test trees.
|
||||
TOP=@abs_top_srcdir@
|
||||
TEST_TOP=@abs_builddir@
|
||||
|
||||
RUN_BIND10=$TOP/src/bin/bind10/run_bind10.sh
|
||||
RUN_BINDCTL=$TOP/src/bin/bindctl/run_bindctl.sh
|
||||
BINDCTL_CSV_DIR=@abs_srcdir@/common/
|
||||
B10_LOADZONE=$TOP/src/bin/loadzone/run_loadzone.sh
|
||||
BIND9_NAMED=$BIND9_TOP/bin/named/named
|
||||
DIG=$BIND9_TOP/bin/dig/dig
|
||||
@@ -45,8 +48,8 @@ DIG=$BIND9_TOP/bin/dig/dig
|
||||
TESTSOCK=$BIND9_TOP/bin/tests/system/testsock.pl
|
||||
DIGCOMP=$BIND9_TOP/bin/tests/system/digcomp.pl
|
||||
|
||||
SUBDIRS="glue"
|
||||
#SUBDIRS="dnssec glue masterfile xfer"
|
||||
SUBDIRS="bindctl glue"
|
||||
#SUBDIRS="dnssec masterfile xfer"
|
||||
|
||||
# PERL will be an empty string if no perl interpreter was found.
|
||||
PERL=@PERL@
|
||||
|
Reference in New Issue
Block a user