start_master ()
{
- case $context in
- bind*)
- source ./backends/bind-master
- ;;
- geoip*)
- source ./backends/geoip-master
- ;;
- gmysql*)
- source ./backends/gmysql-master
- ;;
-
- godbc_mssql*)
- [ -z $GODBC_MSSQL_DSN ] && echo '$GODBC_MSSQL_DSN must be set' >&2 && exit 1
- [ -z $GODBC_MSSQL_USERNAME ] && echo '$GODBC_MSSQL_USERNAME must be set' >&2 && exit 1
- [ -z $GODBC_MSSQL_PASSWORD ] && echo '$GODBC_MSSQL_PASSWORD must be set' >&2 && exit 1
- source ./backends/godbc_mssql-master
- ;;
-
- godbc_sqlite3*)
- [ -z $GODBC_SQLITE3_DSN ] && echo '$GODBC_SQLITE3_DSN must be set' >&2 && exit 1
- source ./backends/godbc_sqlite3-master
- ;;
-
- gpgsql*)
- source ./backends/gpgsql-master
- ;;
-
- gsqlite3*)
- source ./backends/gsqlite3-master
- ;;
-
- lmdb*)
- source ./backends/lmdb-master
- ;;
-
- remote*)
- source ./backends/remote-master
- ;;
-
- tinydns*)
- source ./backends/tinydns-master
- ;;
-
- ldap*)
- source ./backends/ldap-master
- ;;
-
- lua2*)
- source ./backends/lua2-master
- ;;
-
- ext-nsd*)
- source ./ext/nsd-master
- ;;
-
- ext-bind*)
- source ./ext/bind-master
- ;;
-
- *)
- nocontext=yes
- esac
-
- if [ "$nocontext" == "yes" ]
- then
- echo unknown context $context
- : > passed_tests
- echo 'unknown-context-'"$context" > failed_tests
- ./toxml $context
- exit
- fi
+ case $context in
+ bind*)
+ source ./backends/bind-master
+ ;;
+ geoip*)
+ source ./backends/geoip-master
+ ;;
+ gmysql*)
+ source ./backends/gmysql-master
+ ;;
+
+ godbc_mssql*)
+ [ -z $GODBC_MSSQL_DSN ] && echo '$GODBC_MSSQL_DSN must be set' >&2 && exit 1
+ [ -z $GODBC_MSSQL_USERNAME ] && echo '$GODBC_MSSQL_USERNAME must be set' >&2 && exit 1
+ [ -z $GODBC_MSSQL_PASSWORD ] && echo '$GODBC_MSSQL_PASSWORD must be set' >&2 && exit 1
+ source ./backends/godbc_mssql-master
+ ;;
+
+ godbc_sqlite3*)
+ [ -z $GODBC_SQLITE3_DSN ] && echo '$GODBC_SQLITE3_DSN must be set' >&2 && exit 1
+ source ./backends/godbc_sqlite3-master
+ ;;
+
+ gpgsql*)
+ source ./backends/gpgsql-master
+ ;;
+
+ gsqlite3*)
+ source ./backends/gsqlite3-master
+ ;;
+
+ lmdb*)
+ source ./backends/lmdb-master
+ ;;
+
+ remote*)
+ source ./backends/remote-master
+ ;;
+
+ tinydns*)
+ source ./backends/tinydns-master
+ ;;
+
+ ldap*)
+ source ./backends/ldap-master
+ ;;
+
+ lua2*)
+ source ./backends/lua2-master
+ ;;
+
+ ext-nsd*)
+ source ./ext/nsd-master
+ ;;
+
+ ext-bind*)
+ source ./ext/bind-master
+ ;;
+
+ *)
+ nocontext=yes
+ esac
+
+ if [ "$nocontext" == "yes" ]
+ then
+ echo unknown context $context
+ : > passed_tests
+ echo 'unknown-context-'"$context" > failed_tests
+ ./toxml $context
+ exit
+ fi
}
start_slave ()
{
- skipreasons="$skipreasons presigned nodyndns"
-
- case $presignedcontext in
- bind*)
- source ./backends/bind-slave
- ;;
-
- gmysql*)
- source ./backends/gmysql-slave
- ;;
-
- godbc_mssql*)
- [ -z $GODBC_MSSQL2_DSN ] && echo '$GODBC_MSSQL2_DSN must be set' >&2 && exit 1
- [ -z $GODBC_MSSQL2_USERNAME ] && echo '$GODBC_MSSQL2_USERNAME must be set' >&2 && exit 1
- [ -z $GODBC_MSSQL2_PASSWORD ] && echo '$GODBC_MSSQL2_PASSWORD must be set' >&2 && exit 1
- source ./backends/godbc_mssql-slave
- ;;
-
- gpgsql*)
- source ./backends/gpgsql-slave
- ;;
-
- gsqlite3*)
- source ./backends/gsqlite3-slave
- ;;
-
- lmdb*)
- source ./backends/lmdb-slave
- ;;
-
- ext-bind*)
- source ./ext/bind-slave
- ;;
-
- ext-nsd*)
- source ./ext/nsd-slave
- ;;
-
- *)
- nocontext=yes
- esac
-
- if [ "$nocontext" == "yes" ]
- then
- echo unknown presigned context $presignedcontext
- : > passed_tests
- echo 'unknown-presigned-context-'"$presignedcontext" > failed_tests
- ./toxml $context
- exit
- fi
+ skipreasons="$skipreasons presigned nodyndns"
+
+ case $presignedcontext in
+ bind*)
+ source ./backends/bind-slave
+ ;;
+
+ gmysql*)
+ source ./backends/gmysql-slave
+ ;;
+
+ godbc_mssql*)
+ [ -z $GODBC_MSSQL2_DSN ] && echo '$GODBC_MSSQL2_DSN must be set' >&2 && exit 1
+ [ -z $GODBC_MSSQL2_USERNAME ] && echo '$GODBC_MSSQL2_USERNAME must be set' >&2 && exit 1
+ [ -z $GODBC_MSSQL2_PASSWORD ] && echo '$GODBC_MSSQL2_PASSWORD must be set' >&2 && exit 1
+ source ./backends/godbc_mssql-slave
+ ;;
+
+ gpgsql*)
+ source ./backends/gpgsql-slave
+ ;;
+
+ gsqlite3*)
+ source ./backends/gsqlite3-slave
+ ;;
+
+ lmdb*)
+ source ./backends/lmdb-slave
+ ;;
+
+ ext-bind*)
+ source ./ext/bind-slave
+ ;;
+
+ ext-nsd*)
+ source ./ext/nsd-slave
+ ;;
+
+ *)
+ nocontext=yes
+ esac
+
+ if [ "$nocontext" == "yes" ]
+ then
+ echo unknown presigned context $presignedcontext
+ : > passed_tests
+ echo 'unknown-presigned-context-'"$presignedcontext" > failed_tests
+ ./toxml $context
+ exit
+ fi
}
esac
done; unset -v arg
if [ "$_show_help" -eq 1 ]; then
- grep -v '^#' << '__EOF__'
+ grep -v '^#' << '__EOF__'
Usage: ./start-test-stop <port> [<context>] [wait|nowait] [<cachettl>] [<specifictest>]
* Specifictest can be used to run only one single test.
__EOF__
- exit
+ exit
fi
unset -v _show_help
bindwait ()
{
- check_process
- configname=$1
- domcount=$(grep -c ^zone named.conf)
- if [ ! -x $PDNSCONTROL ]
- then
- echo "No pdns_control found"
- exit
- fi
- loopcount=0
-
- while [ $loopcount -lt 20 ]
- do
- sleep 5
- done=$( ($PDNSCONTROL --config-name=$configname --socket-dir=. --no-config bind-domain-status || true) | grep -c 'parsed into memory' || true )
- if [ $done = $domcount ]
- then
- return
- fi
- let loopcount=loopcount+1
- done
-
- if [ $done != $domcount ]
- then
- echo "Domain parsing failed" >> failed_tests
- fi
+ check_process
+ configname=$1
+ domcount=$(grep -c ^zone named.conf)
+ if [ ! -x $PDNSCONTROL ]
+ then
+ echo "No pdns_control found"
+ exit
+ fi
+ loopcount=0
+
+ while [ $loopcount -lt 20 ]
+ do
+ sleep 5
+ done=$( ($PDNSCONTROL --config-name=$configname --socket-dir=. --no-config bind-domain-status || true) | grep -c 'parsed into memory' || true )
+ if [ $done = $domcount ]
+ then
+ return
+ fi
+ let loopcount=loopcount+1
+ done
+
+ if [ $done != $domcount ]
+ then
+ echo "Domain parsing failed" >> failed_tests
+ fi
}
securezone ()
{
- local zone=$1
- local configname=$2
-
- if [ -n "$configname" ]
- then
- configname="--config-name=$configname"
- fi
- if [ "${zone: 0:16}" = "secure-delegated" ]
- then
- $PDNSUTIL --config-dir=. $configname import-zone-key $zone $zone.private ksk 2>&1
- $PDNSUTIL --config-dir=. $configname add-zone-key $zone rsasha256 1024 zsk active 2>&1
- $PDNSUTIL --config-dir=. $configname rectify-zone $zone 2>&1
- $PDNSUTIL --config-dir=. $configname set-publish-cds $zone 2>&1
- $PDNSUTIL --config-dir=. $configname set-publish-cdnskey $zone 2>&1
- else
- # check if PKCS#11 should be used
- if [ "$pkcs11" -eq 1 ]; then
- if [ "$slot" == "" ]; then
- slot=0
- else
- slot=$((slot+1))
- fi
- label=pdnstest-${EPOCHSECONDS}-${slot}
- softhsm2-util --delete-token --label $label 2> /dev/null || true
- softhsm2-util --init-token --label $label --free --pin 1234 --so-pin 1234
- kid=`$PDNSUTIL --config-dir=. $configname hsm assign $zone ecdsa256 ksk softhsm2 $label 1234 $label 2>&1 | grep softhsm | awk '{ print $NF }'`
- $PDNSUTIL --config-dir=. $configname hsm create-key $zone $kid
- $PDNSUTIL --config-dir=. $configname rectify-zone $zone 2>&1
- else
- $PDNSUTIL --config-dir=. $configname secure-zone $zone 2>&1
- fi
- if [ "${zone: 0:20}" = "cdnskey-cds-test.com" ]; then
- $PDNSUTIL --config-dir=. $configname set-publish-cds $zone 2>&1
- $PDNSUTIL --config-dir=. $configname set-publish-cdnskey $zone 2>&1
- fi
- if [ "$zone" = "dnssec-parent.com" ]; then
- $PDNSUTIL --config-dir=. $configname set-publish-cds $zone 0 2>&1
- $PDNSUTIL --config-dir=. $configname set-publish-cdnskey $zone delete 2>&1
- fi
- fi
+ local zone=$1
+ local configname=$2
+
+ if [ -n "$configname" ]
+ then
+ configname="--config-name=$configname"
+ fi
+ if [ "${zone: 0:16}" = "secure-delegated" ]
+ then
+ $PDNSUTIL --config-dir=. $configname import-zone-key $zone $zone.private ksk 2>&1
+ $PDNSUTIL --config-dir=. $configname add-zone-key $zone rsasha256 1024 zsk active 2>&1
+ $PDNSUTIL --config-dir=. $configname rectify-zone $zone 2>&1
+ $PDNSUTIL --config-dir=. $configname set-publish-cds $zone 2>&1
+ $PDNSUTIL --config-dir=. $configname set-publish-cdnskey $zone 2>&1
+ else
+ # check if PKCS#11 should be used
+ if [ "$pkcs11" -eq 1 ]; then
+ if [ "$slot" == "" ]; then
+ slot=0
+ else
+ slot=$((slot+1))
+ fi
+ label=pdnstest-${EPOCHSECONDS}-${slot}
+ softhsm2-util --delete-token --label $label 2> /dev/null || true
+ softhsm2-util --init-token --label $label --free --pin 1234 --so-pin 1234
+ kid=`$PDNSUTIL --config-dir=. $configname hsm assign $zone ecdsa256 ksk softhsm2 $label 1234 $label 2>&1 | grep softhsm | awk '{ print $NF }'`
+ $PDNSUTIL --config-dir=. $configname hsm create-key $zone $kid
+ $PDNSUTIL --config-dir=. $configname rectify-zone $zone 2>&1
+ else
+ $PDNSUTIL --config-dir=. $configname secure-zone $zone 2>&1
+ fi
+ if [ "${zone: 0:20}" = "cdnskey-cds-test.com" ]; then
+ $PDNSUTIL --config-dir=. $configname set-publish-cds $zone 2>&1
+ $PDNSUTIL --config-dir=. $configname set-publish-cdnskey $zone 2>&1
+ fi
+ if [ "$zone" = "dnssec-parent.com" ]; then
+ $PDNSUTIL --config-dir=. $configname set-publish-cds $zone 0 2>&1
+ $PDNSUTIL --config-dir=. $configname set-publish-cdnskey $zone delete 2>&1
+ fi
+ fi
}
kill_process ()
{
- set +e
- trap - EXIT INT TERM
-
- if [ $1 -gt 1 ]
- then
- echo "exitvalue$1" >> failed_tests
- ./toxml
- ./totar
- fi
-
- pids=$(cat pdns*.pid)
-
- if [ -n "$pids" ]
- then
- kill $pids
- # make sure they die.
- loopcount=0
- done=0
- while [ $loopcount -lt 10 ] && [ $done -eq 0 ]
- do
- done=1
- for pid in $pids
- do
- kill -0 $pid > /dev/null 2>&1
- if [ $? -eq 0 ];
- then
- done=0
- fi
- done
- let loopcount=loopcount+1
- sleep 1
- done
-
- kill -9 $pids
- fi
-
- rm pdns*.pid
- exit $1
+ set +e
+ trap - EXIT INT TERM
+
+ if [ $1 -gt 1 ]
+ then
+ echo "exitvalue$1" >> failed_tests
+ ./toxml
+ ./totar
+ fi
+
+ pids=$(cat pdns*.pid)
+
+ if [ -n "$pids" ]
+ then
+ kill $pids
+ # make sure they die.
+ loopcount=0
+ done=0
+ while [ $loopcount -lt 10 ] && [ $done -eq 0 ]
+ do
+ done=1
+ for pid in $pids
+ do
+ kill -0 $pid > /dev/null 2>&1
+ if [ $? -eq 0 ];
+ then
+ done=0
+ fi
+ done
+ let loopcount=loopcount+1
+ sleep 1
+ done
+
+ kill -9 $pids
+ fi
+
+ rm pdns*.pid
+ exit $1
}
if [ ! -x $PDNS ]
then
- echo "$PDNS is not executable binary"
- exit
+ echo "$PDNS is not executable binary"
+ exit
fi
if [ ! -x $PDNS2 ]
then
- echo "$PDNS2 is not executable binary"
- exit
+ echo "$PDNS2 is not executable binary"
+ exit
fi
address="${PDNS_LISTEN_ADDR:-127.0.0.1}"
# Copy original zones because the test might modify them (well only the dyndns stuff, but let's make this work for others as well)
for zone in $(grep 'zone ' named.conf | cut -f2 -d\")
do
- if [ -f zones/$zone.orig ]
- then
- cp -f zones/$zone.orig zones/$zone
- fi
+ if [ -f zones/$zone.orig ]
+ then
+ cp -f zones/$zone.orig zones/$zone
+ fi
done
rm -f pdns*.pid
if [[ "$context" =~ .+-presigned.* ]]
then
- presigned=yes
- port=$((port-100))
- eval "$(echo "$context" | sed -r 's/(.+)(-presigned)(-(.*))?/context=\1 presignedcontext=\4/')"
- if [ -z "$presignedcontext" ]
- then
- presignedcontext=$context
- fi
+ presigned=yes
+ port=$((port-100))
+ eval "$(echo "$context" | sed -r 's/(.+)(-presigned)(-(.*))?/context=\1 presignedcontext=\4/')"
+ if [ -z "$presignedcontext" ]
+ then
+ presignedcontext=$context
+ fi
fi
if [ "${context: -5}" = "-both" ]
then
- both=yes
- port=$((port-100))
- context=${context%-both}
- presignedcontext=$context
+ both=yes
+ port=$((port-100))
+ context=${context%-both}
+ presignedcontext=$context
fi
optout=0
if [ "${context: -13}" = "-nsec3-optout" ]
then
- optout=1
+ optout=1
fi
if [ "${context: -7}" = "-pkcs11" ]
start_master
if [ "$skiplua" == "1" ]; then
- skipreasons="$skipreasons nolua"
+ skipreasons="$skipreasons nolua"
fi
check_process
dotests () {
- nameserver=127.0.0.1 ./runtests $spectest
- ./toxml
- ./totar
-
- cat ./trustedkeys
-
- if [ -s "./failed_tests" ]
- then
- for t in `cat failed_tests`
- do
- echo -e "\n\n$t"
- cat ${testsdir}/$t/diff
- done
- if [ "${!1}" -eq 0 ]
- then
- eval "$1=1"
- fi
- fi
+ nameserver=127.0.0.1 ./runtests $spectest
+ ./toxml
+ ./totar
+
+ cat ./trustedkeys
+
+ if [ -s "./failed_tests" ]
+ then
+ for t in `cat failed_tests`
+ do
+ echo -e "\n\n$t"
+ cat ${testsdir}/$t/diff
+ done
+ if [ "${!1}" -eq 0 ]
+ then
+ eval "$1=1"
+ fi
+ fi
}
## TODO: give sdig a timeout
if [ $presigned = no ] || [ $both = yes ]
then
- dotests RETVAL
+ dotests RETVAL
fi
if [ $presigned = yes ] || [ $both = yes ]
then
- start_slave
+ start_slave
- export port
- export context
- export skipreasons
- export backend
+ export port
+ export context
+ export skipreasons
+ export backend
- dotests RETVAL
+ dotests RETVAL
fi
if [ "$wait" = "wait" ]
then
- echo tests done! push enter to terminate instance
- read l
+ echo tests done! push enter to terminate instance
+ read l
fi
trap "kill_process $RETVAL" EXIT