The old name "common" clashes with the convention of system test directory naming. It appears as a system test directory, but it only contains helper files. To reduce confusion and to allow automatic detection of issues with possibly missing test files, rename the helper directory to "_common". The leading underscore indicates the directory is different and the its name can no longer be confused with regular system test directories.
249 lines
7.4 KiB
Bash
249 lines
7.4 KiB
Bash
#!/bin/sh
|
|
|
|
# Copyright (C) Internet Systems Consortium, Inc. ("ISC")
|
|
#
|
|
# SPDX-License-Identifier: MPL-2.0
|
|
#
|
|
# This Source Code Form is subject to the terms of the Mozilla Public
|
|
# License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
# file, you can obtain one at https://mozilla.org/MPL/2.0/.
|
|
#
|
|
# See the COPYRIGHT file distributed with this work for additional
|
|
# information regarding copyright ownership.
|
|
|
|
set -e
|
|
|
|
. ../conf.sh
|
|
|
|
DIGOPTS="-p ${PORT}"
|
|
RNDCCMD="$RNDC -c ../_common/rndc.conf -p ${CONTROLPORT} -s"
|
|
|
|
status=0
|
|
n=0
|
|
|
|
emptyzones="
|
|
10.IN-ADDR.ARPA
|
|
16.172.IN-ADDR.ARPA
|
|
17.172.IN-ADDR.ARPA
|
|
18.172.IN-ADDR.ARPA
|
|
19.172.IN-ADDR.ARPA
|
|
20.172.IN-ADDR.ARPA
|
|
21.172.IN-ADDR.ARPA
|
|
22.172.IN-ADDR.ARPA
|
|
23.172.IN-ADDR.ARPA
|
|
24.172.IN-ADDR.ARPA
|
|
25.172.IN-ADDR.ARPA
|
|
26.172.IN-ADDR.ARPA
|
|
27.172.IN-ADDR.ARPA
|
|
28.172.IN-ADDR.ARPA
|
|
29.172.IN-ADDR.ARPA
|
|
30.172.IN-ADDR.ARPA
|
|
31.172.IN-ADDR.ARPA
|
|
168.192.IN-ADDR.ARPA
|
|
64.100.IN-ADDR.ARPA
|
|
65.100.IN-ADDR.ARPA
|
|
66.100.IN-ADDR.ARPA
|
|
67.100.IN-ADDR.ARPA
|
|
68.100.IN-ADDR.ARPA
|
|
69.100.IN-ADDR.ARPA
|
|
70.100.IN-ADDR.ARPA
|
|
71.100.IN-ADDR.ARPA
|
|
72.100.IN-ADDR.ARPA
|
|
73.100.IN-ADDR.ARPA
|
|
74.100.IN-ADDR.ARPA
|
|
75.100.IN-ADDR.ARPA
|
|
76.100.IN-ADDR.ARPA
|
|
77.100.IN-ADDR.ARPA
|
|
78.100.IN-ADDR.ARPA
|
|
79.100.IN-ADDR.ARPA
|
|
80.100.IN-ADDR.ARPA
|
|
81.100.IN-ADDR.ARPA
|
|
82.100.IN-ADDR.ARPA
|
|
83.100.IN-ADDR.ARPA
|
|
84.100.IN-ADDR.ARPA
|
|
85.100.IN-ADDR.ARPA
|
|
86.100.IN-ADDR.ARPA
|
|
87.100.IN-ADDR.ARPA
|
|
88.100.IN-ADDR.ARPA
|
|
89.100.IN-ADDR.ARPA
|
|
90.100.IN-ADDR.ARPA
|
|
91.100.IN-ADDR.ARPA
|
|
92.100.IN-ADDR.ARPA
|
|
93.100.IN-ADDR.ARPA
|
|
94.100.IN-ADDR.ARPA
|
|
95.100.IN-ADDR.ARPA
|
|
96.100.IN-ADDR.ARPA
|
|
97.100.IN-ADDR.ARPA
|
|
98.100.IN-ADDR.ARPA
|
|
99.100.IN-ADDR.ARPA
|
|
100.100.IN-ADDR.ARPA
|
|
101.100.IN-ADDR.ARPA
|
|
102.100.IN-ADDR.ARPA
|
|
103.100.IN-ADDR.ARPA
|
|
104.100.IN-ADDR.ARPA
|
|
105.100.IN-ADDR.ARPA
|
|
106.100.IN-ADDR.ARPA
|
|
107.100.IN-ADDR.ARPA
|
|
108.100.IN-ADDR.ARPA
|
|
109.100.IN-ADDR.ARPA
|
|
110.100.IN-ADDR.ARPA
|
|
111.100.IN-ADDR.ARPA
|
|
112.100.IN-ADDR.ARPA
|
|
113.100.IN-ADDR.ARPA
|
|
114.100.IN-ADDR.ARPA
|
|
115.100.IN-ADDR.ARPA
|
|
116.100.IN-ADDR.ARPA
|
|
117.100.IN-ADDR.ARPA
|
|
118.100.IN-ADDR.ARPA
|
|
119.100.IN-ADDR.ARPA
|
|
120.100.IN-ADDR.ARPA
|
|
121.100.IN-ADDR.ARPA
|
|
122.100.IN-ADDR.ARPA
|
|
123.100.IN-ADDR.ARPA
|
|
124.100.IN-ADDR.ARPA
|
|
125.100.IN-ADDR.ARPA
|
|
126.100.IN-ADDR.ARPA
|
|
127.100.IN-ADDR.ARPA
|
|
0.IN-ADDR.ARPA
|
|
127.IN-ADDR.ARPA
|
|
254.169.IN-ADDR.ARPA
|
|
2.0.192.IN-ADDR.ARPA
|
|
100.51.198.IN-ADDR.ARPA
|
|
113.0.203.IN-ADDR.ARPA
|
|
255.255.255.255.IN-ADDR.ARPA
|
|
0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA
|
|
1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA
|
|
D.F.IP6.ARPA
|
|
8.E.F.IP6.ARPA
|
|
9.E.F.IP6.ARPA
|
|
A.E.F.IP6.ARPA
|
|
B.E.F.IP6.ARPA
|
|
8.B.D.0.1.0.0.2.IP6.ARPA
|
|
EMPTY.AS112.ARPA
|
|
HOME.ARPA"
|
|
|
|
n=$((n + 1))
|
|
ret=0
|
|
count=0
|
|
echo_i "Checking expected empty zones were configured ($n)"
|
|
for zone in ${emptyzones}
|
|
do
|
|
grep "automatic empty zone: $zone" ns1/named.run > /dev/null || {
|
|
echo_i "failed (empty zone $zone missing)"
|
|
ret=1
|
|
}
|
|
count=$((count + 1))
|
|
done
|
|
lines=$(grep "automatic empty zone: " ns1/named.run | wc -l)
|
|
test $count -eq $lines -a $count -eq 99 || {
|
|
ret=1; echo_i "failed (count mismatch)";
|
|
}
|
|
if [ $ret != 0 ] ; then status=$((status + ret)); fi
|
|
|
|
n=$((n + 1))
|
|
echo_i "Checking that reconfiguring empty zones is silent ($n)"
|
|
$RNDCCMD 10.53.0.1 reconfig
|
|
ret=0
|
|
grep "automatic empty zone" ns1/named.run > /dev/null || ret=1
|
|
grep "received control channel command 'reconfig'" ns1/named.run > /dev/null || ret=1
|
|
grep "reloading configuration succeeded" ns1/named.run > /dev/null || ret=1
|
|
sleep 1
|
|
grep "zone serial (0) unchanged." ns1/named.run > /dev/null && ret=1
|
|
if [ $ret != 0 ] ; then echo_i "failed"; status=$((status + ret)); fi
|
|
|
|
n=$((n + 1))
|
|
echo_i "Checking that reloading empty zones is silent ($n)"
|
|
rndc_reload ns1 10.53.0.1
|
|
ret=0
|
|
grep "automatic empty zone" ns1/named.run > /dev/null || ret=1
|
|
grep "received control channel command 'reload'" ns1/named.run > /dev/null || ret=1
|
|
grep "reloading configuration succeeded" ns1/named.run > /dev/null || ret=1
|
|
sleep 1
|
|
grep "zone serial (0) unchanged." ns1/named.run > /dev/null && ret=1
|
|
if [ $ret != 0 ] ; then echo_i "failed"; status=$((status + ret)); fi
|
|
|
|
HOST_NAME=$($FEATURETEST --gethostname)
|
|
BIND_VERSION_STRING=$($NAMED -V | head -1)
|
|
BIND_VERSION=$($NAMED -V | sed -ne 's/^BIND \([^ ]*\).*/\1/p')
|
|
|
|
n=$((n + 1))
|
|
ret=0
|
|
echo_i "Checking that default version works for rndc ($n)"
|
|
$RNDCCMD 10.53.0.1 status > rndc.status.ns1.$n 2>&1
|
|
grep -F "version: $BIND_VERSION_STRING" rndc.status.ns1.$n > /dev/null || ret=1
|
|
if [ $ret != 0 ] ; then echo_i "failed"; status=$((status + ret)); fi
|
|
|
|
n=$((n + 1))
|
|
ret=0
|
|
echo_i "Checking that custom version works for rndc ($n)"
|
|
$RNDCCMD 10.53.0.3 status > rndc.status.ns3.$n 2>&1
|
|
grep -F "version: $BIND_VERSION_STRING (this is a test of version)" rndc.status.ns3.$n > /dev/null || ret=1
|
|
if [ $ret != 0 ] ; then echo_i "failed"; status=$((status + ret)); fi
|
|
|
|
n=$((n + 1))
|
|
ret=0
|
|
echo_i "Checking that default version works for query ($n)"
|
|
$DIG $DIGOPTS +short version.bind txt ch @10.53.0.1 > dig.out.ns1.$n || ret=1
|
|
grep "^\"$BIND_VERSION\"$" dig.out.ns1.$n > /dev/null || ret=1
|
|
if [ $ret != 0 ] ; then echo_i "failed"; status=$((status + ret)); fi
|
|
|
|
n=$((n + 1))
|
|
ret=0
|
|
echo_i "Checking that custom version works for query ($n)"
|
|
$DIG $DIGOPTS +short version.bind txt ch @10.53.0.3 > dig.out.ns3.$n || ret=1
|
|
grep "^\"this is a test of version\"$" dig.out.ns3.$n > /dev/null || ret=1
|
|
if [ $ret != 0 ] ; then echo_i "failed"; status=$((status + ret)); fi
|
|
|
|
n=$((n + 1))
|
|
ret=0
|
|
echo_i "Checking that default hostname works for query ($n)"
|
|
$DIG $DIGOPTS +short hostname.bind txt ch @10.53.0.1 > dig.out.ns1.$n || ret=1
|
|
grep "^\"$HOST_NAME\"$" dig.out.ns1.$n > /dev/null || ret=1
|
|
if [ $ret != 0 ] ; then echo_i "failed"; status=$((status + ret)); fi
|
|
|
|
n=$((n + 1))
|
|
ret=0
|
|
echo_i "Checking that custom hostname works for query ($n)"
|
|
$DIG $DIGOPTS +short hostname.bind txt ch @10.53.0.3 > dig.out.ns3.$n || ret=1
|
|
grep "^\"this.is.a.test.of.hostname\"$" dig.out.ns3.$n > /dev/null || ret=1
|
|
if [ $ret != 0 ] ; then echo_i "failed"; status=$((status + ret)); fi
|
|
|
|
n=$((n + 1))
|
|
ret=0
|
|
echo_i "Checking that default server-id is none for query ($n)"
|
|
$DIG $DIGOPTS id.server txt ch @10.53.0.1 > dig.out.ns1.$n || ret=1
|
|
grep "status: NOERROR" dig.out.ns1.$n > /dev/null || ret=1
|
|
grep "ANSWER: 0" dig.out.ns1.$n > /dev/null || ret=1
|
|
if [ $ret != 0 ] ; then echo_i "failed"; status=$((status + ret)); fi
|
|
|
|
n=$((n + 1))
|
|
ret=0
|
|
echo_i "Checking that server-id hostname works for query ($n)"
|
|
$DIG $DIGOPTS +short id.server txt ch @10.53.0.2 > dig.out.ns2.$n || ret=1
|
|
grep "^\"$HOST_NAME\"$" dig.out.ns2.$n > /dev/null || ret=1
|
|
if [ $ret != 0 ] ; then echo_i "failed"; status=$((status + ret)); fi
|
|
|
|
n=$((n + 1))
|
|
ret=0
|
|
echo_i "Checking that server-id hostname works for EDNS name server ID request ($n)"
|
|
$DIG $DIGOPTS +norec +nsid foo @10.53.0.2 > dig.out.ns2.$n || ret=1
|
|
grep "^; NSID: .* (\"$HOST_NAME\")$" dig.out.ns2.$n > /dev/null || ret=1
|
|
if [ $ret != 0 ] ; then echo_i "failed"; status=$((status + ret)); fi
|
|
|
|
n=$((n + 1))
|
|
ret=0
|
|
echo_i "Checking that custom server-id works for query ($n)"
|
|
$DIG $DIGOPTS +short id.server txt ch @10.53.0.3 > dig.out.ns3.$n || ret=1
|
|
grep "^\"this.is.a.test.of.server-id\"$" dig.out.ns3.$n > /dev/null || ret=1
|
|
if [ $ret != 0 ] ; then echo_i "failed"; status=$((status + ret)); fi
|
|
|
|
n=$((n + 1))
|
|
ret=0
|
|
echo_i "Checking that custom server-id works for EDNS name server ID request ($n)"
|
|
$DIG $DIGOPTS +norec +nsid foo @10.53.0.3 > dig.out.ns3.$n || ret=1
|
|
grep "^; NSID: .* (\"this.is.a.test.of.server-id\")$" dig.out.ns3.$n > /dev/null || ret=1
|
|
if [ $ret != 0 ] ; then echo_i "failed"; status=$((status + ret)); fi
|
|
|
|
echo_i "exit status: $status"
|
|
[ $status -eq 0 ] || exit 1
|