summaryrefslogtreecommitdiffstats
path: root/bin/tests/system/ixfr
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-27 23:51:29 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-27 23:51:29 +0000
commit113ad32e9cd2dcda12f12aa8a72d56b73ff4f4cc (patch)
tree76bbb508aac2452b17d73bcd162adc8cc7602e69 /bin/tests/system/ixfr
parentReleasing progress-linux version 1:9.16.44-1~deb11u1progress6u1. (diff)
downloadbind9-113ad32e9cd2dcda12f12aa8a72d56b73ff4f4cc.tar.xz
bind9-113ad32e9cd2dcda12f12aa8a72d56b73ff4f4cc.zip
Merging upstream version 1:9.16.48.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'bin/tests/system/ixfr')
-rw-r--r--bin/tests/system/ixfr/prereq.sh9
-rw-r--r--bin/tests/system/ixfr/setup.sh32
-rw-r--r--bin/tests/system/ixfr/tests.sh163
3 files changed, 101 insertions, 103 deletions
diff --git a/bin/tests/system/ixfr/prereq.sh b/bin/tests/system/ixfr/prereq.sh
index ec369f8..7fa5e6e 100644
--- a/bin/tests/system/ixfr/prereq.sh
+++ b/bin/tests/system/ixfr/prereq.sh
@@ -14,10 +14,9 @@
SYSTEMTESTTOP=..
. $SYSTEMTESTTOP/conf.sh
-if $PERL -e 'use Net::DNS;' 2>/dev/null
-then
- :
+if $PERL -e 'use Net::DNS;' 2>/dev/null; then
+ :
else
- echo_i "This test requires the Net::DNS library." >&2
- exit 1
+ echo_i "This test requires the Net::DNS library." >&2
+ exit 1
fi
diff --git a/bin/tests/system/ixfr/setup.sh b/bin/tests/system/ixfr/setup.sh
index c84c950..eb3e59f 100644
--- a/bin/tests/system/ixfr/setup.sh
+++ b/bin/tests/system/ixfr/setup.sh
@@ -25,8 +25,8 @@ copy_setports ns5/named.conf.in ns5/named.conf
# versions of the zone, the second and third having small changes
# and the fourth having a large one.
-testdb () {
- cat << EOF
+testdb() {
+ cat <<EOF
\$ORIGIN $1
\$TTL 15
@ 15 IN SOA ns1.test. hostmaster.test. (
@@ -44,26 +44,26 @@ ns2 IN A 10.53.0.4
ns5 IN A 10.53.0.5
EOF
- i=0
- while [ $i -lt $3 ]; do
- echo "host$i IN A 192.0.2.$i"
- i=$((i+1))
- done
+ i=0
+ while [ $i -lt $3 ]; do
+ echo "host$i IN A 192.0.2.$i"
+ i=$((i + 1))
+ done
}
-testdb test. 1 60 > ns3/mytest.db
-testdb test. 2 61 > ns3/mytest1.db
-testdb test. 3 62 > ns3/mytest2.db
-testdb test. 4 0 > ns3/mytest3.db
+testdb test. 1 60 >ns3/mytest.db
+testdb test. 2 61 >ns3/mytest1.db
+testdb test. 3 62 >ns3/mytest2.db
+testdb test. 4 0 >ns3/mytest3.db
# Set up similar db files for sub.test, which will have IXFR disabled
-testdb sub.test. 1 60 > ns3/subtest.db
-testdb sub.test. 3 61 > ns3/subtest1.db
+testdb sub.test. 1 60 >ns3/subtest.db
+testdb sub.test. 3 61 >ns3/subtest1.db
# Set up a large zone
i=0
-$SHELL ../genzone.sh 3 > ns3/large.db
+$SHELL ../genzone.sh 3 >ns3/large.db
while [ $i -lt 10000 ]; do
- echo "record$i 10 IN TXT this is record %i" >> ns3/large.db
- i=$((i+1))
+ echo "record$i 10 IN TXT this is record %i" >>ns3/large.db
+ i=$((i + 1))
done
diff --git a/bin/tests/system/ixfr/tests.sh b/bin/tests/system/ixfr/tests.sh
index 1d37b45..52ad1a7 100644
--- a/bin/tests/system/ixfr/tests.sh
+++ b/bin/tests/system/ixfr/tests.sh
@@ -20,9 +20,9 @@ SYSTEMTESTTOP=..
. $SYSTEMTESTTOP/conf.sh
wait_for_serial() (
- $DIG $DIGOPTS "@$1" "$2" SOA > "$4"
- serial=$(awk '$4 == "SOA" { print $7 }' "$4")
- [ "$3" -eq "${serial:--1}" ]
+ $DIG $DIGOPTS "@$1" "$2" SOA >"$4"
+ serial=$(awk '$4 == "SOA" { print $7 }' "$4")
+ [ "$3" -eq "${serial:--1}" ]
)
status=0
@@ -32,7 +32,7 @@ DIGOPTS="+tcp +noadd +nosea +nostat +noquest +nocomm +nocmd -p ${PORT}"
SENDCMD="$PERL ../send.pl 10.53.0.2 ${EXTRAPORT1}"
RNDCCMD="$RNDC -p ${CONTROLPORT} -c ../common/rndc.conf -s"
-n=$((n+1))
+n=$((n + 1))
echo_i "testing initial AXFR ($n)"
ret=0
@@ -70,9 +70,9 @@ retry_quiet 10 wait_for_serial 10.53.0.1 nil. 1 dig.out.test$n || ret=1
$DIG $DIGOPTS @10.53.0.1 nil. TXT | grep 'initial AXFR' >/dev/null || ret=1
if [ $ret != 0 ]; then echo_i "failed"; fi
-status=$((status+ret))
+status=$((status + ret))
-n=$((n+1))
+n=$((n + 1))
echo_i "testing successful IXFR ($n)"
ret=0
@@ -103,9 +103,9 @@ sleep 2
$DIG $DIGOPTS @10.53.0.1 nil. TXT | grep 'successful IXFR' >/dev/null || ret=1
if [ $ret != 0 ]; then echo_i "failed"; fi
-status=$((status+ret))
+status=$((status + ret))
-n=$((n+1))
+n=$((n + 1))
echo_i "testing AXFR fallback after IXFR failure (not exact error) ($n)"
ret=0
@@ -138,9 +138,9 @@ sleep 2
$DIG $DIGOPTS @10.53.0.1 nil. TXT | grep 'fallback AXFR' >/dev/null || ret=1
if [ $ret != 0 ]; then echo_i "failed"; fi
-status=$((status+ret))
+status=$((status + ret))
-n=$((n+1))
+n=$((n + 1))
echo_i "testing AXFR fallback after IXFR failure (bad SOA owner) ($n)"
ret=0
@@ -175,12 +175,12 @@ $RNDCCMD 10.53.0.1 refresh nil | sed 's/^/ns1 /' | cat_i
# malformed IXFR. Instead, check transfer progress by querying for a TXT record
# at test.nil. which is present in both IXFR and AXFR (with different contents).
_wait_until_transfer_is_finished() {
- $DIG $DIGOPTS +tries=1 +time=1 @10.53.0.1 test.nil. TXT > dig.out.test$n.1 &&
- grep -q -F "serial 4" dig.out.test$n.1
+ $DIG $DIGOPTS +tries=1 +time=1 @10.53.0.1 test.nil. TXT >dig.out.test$n.1 \
+ && grep -q -F "serial 4" dig.out.test$n.1
}
if ! retry_quiet 10 _wait_until_transfer_is_finished; then
- echo_i "timed out waiting for version 4 of zone nil. to be transferred"
- ret=1
+ echo_i "timed out waiting for version 4 of zone nil. to be transferred"
+ ret=1
fi
# At this point a broken server would be serving a zone with no SOA records.
@@ -191,27 +191,26 @@ $RNDCCMD 10.53.0.1 refresh nil | sed 's/^/ns1 /' | cat_i
# happened by now, a broken server would never serve the record which is only
# present in the fallback AXFR, so checking for that is enough to verify if a
# server is broken or not; if it is, it is bound to crash shortly anyway.
-$DIG $DIGOPTS test.nil. TXT @10.53.0.1 > dig.out.test$n.2 || ret=1
+$DIG $DIGOPTS test.nil. TXT @10.53.0.1 >dig.out.test$n.2 || ret=1
grep -q -F "serial 4, fallback AXFR" dig.out.test$n.2 || ret=1
# Ensure the expected error is logged.
nextpart ns1/named.run | grep -q -F "SOA name mismatch" || ret=1
if [ $ret != 0 ]; then echo_i "failed"; fi
-status=$((status+ret))
+status=$((status + ret))
-n=$((n+1))
+n=$((n + 1))
echo_i "testing ixfr-from-differences option ($n)"
# ns3 is primary; ns4 is secondary
-$CHECKZONE test. ns3/mytest.db > /dev/null 2>&1
-if [ $? -ne 0 ]
-then
- echo_i "named-checkzone returned failure on ns3/mytest.db"
+$CHECKZONE test. ns3/mytest.db >/dev/null 2>&1
+if [ $? -ne 0 ]; then
+ echo_i "named-checkzone returned failure on ns3/mytest.db"
fi
retry_quiet 10 wait_for_serial 10.53.0.4 test. 1 dig.out.test$n || ret=1
-nextpart ns4/named.run > /dev/null
+nextpart ns4/named.run >/dev/null
# modify the primary
sleep 1
@@ -225,16 +224,16 @@ retry_quiet 10 wait_for_serial 10.53.0.3 test. 2 dig.out.test$n || ret=1
tret=0
retry_quiet 5 wait_for_serial 10.53.0.4 test. 2 dig.out.test$n || tret=1
if [ $tret -eq 1 ]; then
- # re-noitfy after 5 seconds, then wait another 10
- $RNDCCMD 10.53.0.3 notify test | set 's/^/ns3 /' | cat_i
- retry_quiet 10 wait_for_serial 10.53.0.4 test. 2 dig.out.test$n || ret=1
+ # re-noitfy after 5 seconds, then wait another 10
+ $RNDCCMD 10.53.0.3 notify test | set 's/^/ns3 /' | cat_i
+ retry_quiet 10 wait_for_serial 10.53.0.4 test. 2 dig.out.test$n || ret=1
fi
wait_for_log 10 'got incremental' ns4/named.run || ret=1
if [ $ret != 0 ]; then echo_i "failed"; fi
-status=$((status+ret))
+status=$((status + ret))
-n=$((n+1))
+n=$((n + 1))
echo_i "testing 'request-ixfr no' option inheritance from view ($n)"
ret=0
# There's a view with 2 zones. In the view, "request-ixfr yes"
@@ -244,7 +243,7 @@ ret=0
sleep 1
cp ns3/subtest1.db ns3/subtest.db # change to sub.test zone, should be AXFR
-nextpart ns4/named.run > /dev/null
+nextpart ns4/named.run >/dev/null
$RNDCCMD 10.53.0.3 reload | sed 's/^/ns3 /' | cat_i
# wait for primary to reload
@@ -254,21 +253,21 @@ retry_quiet 10 wait_for_serial 10.53.0.3 sub.test. 3 dig.out.test$n || ret=1
tret=0
retry_quiet 5 wait_for_serial 10.53.0.4 sub.test. 3 dig.out.test$n || tret=1
if [ $tret -eq 1 ]; then
- # re-noitfy after 5 seconds, then wait another 10
- $RNDCCMD 10.53.0.3 notify sub.test | set 's/^/ns3 /' | cat_i
- retry_quiet 10 wait_for_serial 10.53.0.4 sub.test. 3 dig.out.test$n || ret=1
+ # re-noitfy after 5 seconds, then wait another 10
+ $RNDCCMD 10.53.0.3 notify sub.test | set 's/^/ns3 /' | cat_i
+ retry_quiet 10 wait_for_serial 10.53.0.4 sub.test. 3 dig.out.test$n || ret=1
fi
wait_for_log 10 'got nonincremental response' ns4/named.run || ret=1
if [ $ret != 0 ]; then echo_i "failed"; fi
-status=$((status+ret))
+status=$((status + ret))
-n=$((n+1))
+n=$((n + 1))
echo_i "testing 'request-ixfr yes' option inheritance from view ($n)"
ret=0
sleep 1
cp ns3/mytest2.db ns3/mytest.db # change to test zone, should be IXFR
-nextpart ns4/named.run > /dev/null
+nextpart ns4/named.run >/dev/null
$RNDCCMD 10.53.0.3 reload | sed 's/^/ns3 /' | cat_i
# wait for primary to reload
@@ -278,118 +277,118 @@ retry_quiet 10 wait_for_serial 10.53.0.3 test. 3 dig.out.test$n || ret=1
tret=0
retry_quiet 5 wait_for_serial 10.53.0.4 test. 3 dig.out.test$n || tret=1
if [ $tret -eq 1 ]; then
- # re-noitfy after 5 seconds, then wait another 10
- $RNDCCMD 10.53.0.3 notify test | set 's/^/ns3 /' | cat_i
- retry_quiet 10 wait_for_serial 10.53.0.4 test. 3 dig.out.test$n || ret=1
+ # re-noitfy after 5 seconds, then wait another 10
+ $RNDCCMD 10.53.0.3 notify test | set 's/^/ns3 /' | cat_i
+ retry_quiet 10 wait_for_serial 10.53.0.4 test. 3 dig.out.test$n || ret=1
fi
wait_for_log 10 'got incremental response' ns4/named.run || ret=1
if [ $ret != 0 ]; then echo_i "failed"; fi
-status=$((status+ret))
+status=$((status + ret))
-n=$((n+1))
+n=$((n + 1))
ret=0
echo_i "testing DiG's handling of a multi message AXFR style IXFR response ($n)"
(
-(sleep 10 && kill $$) 2>/dev/null &
-sub=$!
-$DIG -p ${PORT} ixfr=0 large @10.53.0.3 > dig.out.test$n
-kill $sub
+ (sleep 10 && kill $$) 2>/dev/null &
+ sub=$!
+ $DIG -p ${PORT} ixfr=0 large @10.53.0.3 >dig.out.test$n
+ kill $sub
)
-lines=`grep hostmaster.large dig.out.test$n | wc -l`
+lines=$(grep hostmaster.large dig.out.test$n | wc -l)
test ${lines:-0} -eq 2 || ret=1
-messages=`sed -n 's/^;;.*messages \([0-9]*\),.*/\1/p' dig.out.test$n`
+messages=$(sed -n 's/^;;.*messages \([0-9]*\),.*/\1/p' dig.out.test$n)
test ${messages:-0} -gt 1 || ret=1
if [ $ret != 0 ]; then echo_i "failed"; fi
-status=$((status+ret))
+status=$((status + ret))
-n=$((n+1))
+n=$((n + 1))
echo_i "test 'dig +notcp ixfr=<value>' vs 'dig ixfr=<value> +notcp' vs 'dig ixfr=<value>' ($n)"
ret=0
# Should be "switch to TCP" response
-$DIG $DIGOPTS +notcp ixfr=1 test @10.53.0.4 > dig.out1.test$n || ret=1
-$DIG $DIGOPTS ixfr=1 +notcp test @10.53.0.4 > dig.out2.test$n || ret=1
+$DIG $DIGOPTS +notcp ixfr=1 test @10.53.0.4 >dig.out1.test$n || ret=1
+$DIG $DIGOPTS ixfr=1 +notcp test @10.53.0.4 >dig.out2.test$n || ret=1
digcomp dig.out1.test$n dig.out2.test$n || ret=1
awk '$4 == "SOA" { soacnt++} END {if (soacnt == 1) exit(0); else exit(1);}' dig.out1.test$n || ret=1
awk '$4 == "SOA" { if ($7 == 3) exit(0); else exit(1);}' dig.out1.test$n || ret=1
#
-nextpart ns4/named.run > /dev/null
+nextpart ns4/named.run >/dev/null
# Should be incremental transfer.
-$DIG $DIGOPTS ixfr=1 test @10.53.0.4 > dig.out3.test$n || ret=1
+$DIG $DIGOPTS ixfr=1 test @10.53.0.4 >dig.out3.test$n || ret=1
awk '$4 == "SOA" { soacnt++} END { if (soacnt == 6) exit(0); else exit(1);}' dig.out3.test$n || ret=1
if [ $ret != 0 ]; then echo_i "failed"; fi
-status=$((status+ret))
+status=$((status + ret))
-n=$((n+1))
+n=$((n + 1))
echo_i "check estimated IXFR size ($n)"
ret=0
# note IXFR delta size will be slightly bigger with version 1 transaction
# headers as there is no correction for the overall record length storage.
# Ver1 = 4 * (6 + 10 + 10 + 17 + 5 * 4) + 2 * (13 + 10 + 4) + (6 * 4) = 330
# Ver2 = 4 * (6 + 10 + 10 + 17 + 5 * 4) + 2 * (13 + 10 + 4) = 306
-nextpart ns4/named.run | grep "IXFR delta size (306 bytes)" > /dev/null || ret=1
+nextpart ns4/named.run | grep "IXFR delta size (306 bytes)" >/dev/null || ret=1
if [ $ret != 0 ]; then echo_i "failed"; fi
-status=$((status+ret))
+status=$((status + ret))
# make sure ns5 has transfered the zone
# wait for secondary to reload
tret=0
retry_quiet 5 wait_for_serial 10.53.0.5 test. 4 dig.out.test$n || tret=1
if [ $tret -eq 1 ]; then
- # re-noitfy after 5 seconds, then wait another 10
- $RNDCCMD 10.53.0.3 notify test | set 's/^/ns3 /' | cat_i
- retry_quiet 10 wait_for_serial 10.53.0.5 test. 3 dig.out.test$n || ret=1
+ # re-noitfy after 5 seconds, then wait another 10
+ $RNDCCMD 10.53.0.3 notify test | set 's/^/ns3 /' | cat_i
+ retry_quiet 10 wait_for_serial 10.53.0.5 test. 3 dig.out.test$n || ret=1
fi
-n=$((n+1))
+n=$((n + 1))
echo_i "test 'provide-ixfr no;' (serial < current) ($n)"
ret=0
-nextpart ns5/named.run > /dev/null
+nextpart ns5/named.run >/dev/null
# Should be "AXFR style" response
-$DIG $DIGOPTS ixfr=1 test @10.53.0.5 > dig.out1.test$n || ret=1
+$DIG $DIGOPTS ixfr=1 test @10.53.0.5 >dig.out1.test$n || ret=1
# Should be "switch to TCP" response
-$DIG $DIGOPTS ixfr=1 +notcp test @10.53.0.5 > dig.out2.test$n || ret=1
+$DIG $DIGOPTS ixfr=1 +notcp test @10.53.0.5 >dig.out2.test$n || ret=1
awk '$4 == "SOA" { soacnt++} END {if (soacnt == 2) exit(0); else exit(1);}' dig.out1.test$n || ret=1
awk '$4 == "SOA" { soacnt++} END {if (soacnt == 1) exit(0); else exit(1);}' dig.out2.test$n || ret=1
if [ $ret != 0 ]; then echo_i "failed"; fi
-status=$((status+ret))
+status=$((status + ret))
-n=$((n+1))
+n=$((n + 1))
echo_i "checking whether dig calculates IXFR statistics correctly ($n)"
ret=0
-$DIG $DIGOPTS +noedns +stat -b 10.53.0.4 @10.53.0.4 test. ixfr=2 > dig.out1.test$n
-get_dig_xfer_stats dig.out1.test$n > stats.dig
-diff ixfr-stats.good stats.dig > /dev/null || ret=1
+$DIG $DIGOPTS +noedns +stat -b 10.53.0.4 @10.53.0.4 test. ixfr=2 >dig.out1.test$n
+get_dig_xfer_stats dig.out1.test$n >stats.dig
+diff ixfr-stats.good stats.dig >/dev/null || ret=1
if [ $ret != 0 ]; then echo_i "failed"; fi
-status=$((status+ret))
+status=$((status + ret))
# Note: in the next two tests, we use ns4 logs for checking both incoming and
# outgoing transfer statistics as ns4 is both a secondary server (for ns3) and a
# primary server (for dig queries from the previous test) for "test".
-_wait_for_stats () {
- get_named_xfer_stats ns4/named.run "$1" test "$2" > "$3"
- diff ixfr-stats.good "$3" > /dev/null || return 1
- return 0
+_wait_for_stats() {
+ get_named_xfer_stats ns4/named.run "$1" test "$2" >"$3"
+ diff ixfr-stats.good "$3" >/dev/null || return 1
+ return 0
}
-n=$((n+1))
+n=$((n + 1))
echo_i "checking whether named calculates incoming IXFR statistics correctly ($n)"
ret=0
retry_quiet 10 _wait_for_stats 10.53.0.3 "Transfer completed" stats.incoming || ret=1
if [ $ret != 0 ]; then echo_i "failed"; fi
-status=$((status+ret))
+status=$((status + ret))
-n=$((n+1))
+n=$((n + 1))
echo_i "checking whether named calculates outgoing IXFR statistics correctly ($n)"
retry_quiet 10 _wait_for_stats 10.53.0.4 "IXFR ended" stats.outgoing || ret=1
if [ $ret != 0 ]; then echo_i "failed"; fi
-status=$((status+ret))
+status=$((status + ret))
-n=$((n+1))
+n=$((n + 1))
ret=0
echo_i "testing fallback to AXFR when max-ixfr-ratio is exceeded ($n)"
-nextpart ns4/named.run > /dev/null
+nextpart ns4/named.run >/dev/null
sleep 1
cp ns3/mytest3.db ns3/mytest.db # change to test zone, too big for IXFR
@@ -399,14 +398,14 @@ $RNDCCMD 10.53.0.3 reload | sed 's/^/ns3 /' | cat_i
tret=0
retry_quiet 5 wait_for_serial 10.53.0.4 test. 4 dig.out.test$n || tret=1
if [ $tret -eq 1 ]; then
- # re-noitfy after 5 seconds, then wait another 10
- $RNDCCMD 10.53.0.3 notify test | set 's/^/ns3 /' | cat_i
- retry_quiet 10 wait_for_serial 10.53.0.4 test. 4 dig.out.test$n || ret=1
+ # re-noitfy after 5 seconds, then wait another 10
+ $RNDCCMD 10.53.0.3 notify test | set 's/^/ns3 /' | cat_i
+ retry_quiet 10 wait_for_serial 10.53.0.4 test. 4 dig.out.test$n || ret=1
fi
wait_for_log 10 'got nonincremental response' ns4/named.run || ret=1
if [ $ret != 0 ]; then echo_i "failed"; fi
-status=$((status+ret))
+status=$((status + ret))
echo_i "exit status: $status"
[ $status -eq 0 ] || exit 1