Home | History | Annotate | Line # | Download | only in qmin
tests.sh revision 1.1.1.1
      1 #!/bin/sh
      2 #
      3 # Copyright (C) Internet Systems Consortium, Inc. ("ISC")
      4 #
      5 # This Source Code Form is subject to the terms of the Mozilla Public
      6 # License, v. 2.0. If a copy of the MPL was not distributed with this
      7 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
      8 #
      9 # See the COPYRIGHT file distributed with this work for additional
     10 # information regarding copyright ownership.
     11 
     12 SYSTEMTESTTOP=..
     13 . $SYSTEMTESTTOP/conf.sh
     14 
     15 DIGOPTS="-p ${PORT}"
     16 RNDCCMD="$RNDC -c $SYSTEMTESTTOP/common/rndc.conf -p ${CONTROLPORT} -s"
     17 CLEANQL="rm -f ans*/query.log"
     18 status=0
     19 n=0
     20 
     21 n=`expr $n + 1`
     22 echo_i "query for .good is not minimized when qname-minimization is off ($n)"
     23 ret=0
     24 $CLEANQL
     25 $RNDCCMD 10.53.0.5 flush
     26 $DIG $DIGOPTS icky.icky.icky.ptang.zoop.boing.good. @10.53.0.5 > dig.out.test$n
     27 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
     28 grep "icky.icky.icky.ptang.zoop.boing.good. 1	IN A	192.0.2.1" dig.out.test$n > /dev/null || ret=1
     29 sleep 1
     30 cat << __EOF | diff ans2/query.log - > /dev/null || ret=1
     31 ADDR icky.icky.icky.ptang.zoop.boing.good.
     32 ADDR ns3.good.
     33 ADDR ns3.good.
     34 ADDR a.bit.longer.ns.name.good.
     35 ADDR a.bit.longer.ns.name.good.
     36 __EOF
     37 echo "ADDR icky.icky.icky.ptang.zoop.boing.good." | diff ans3/query.log - > /dev/null || ret=1
     38 echo "ADDR icky.icky.icky.ptang.zoop.boing.good." | diff ans4/query.log - > /dev/null || ret=1
     39 for ans in ans2 ans3 ans4; do mv -f $ans/query.log query-$ans-$n.log 2>/dev/null || true; done
     40 if [ $ret != 0 ]; then echo_i "failed"; fi
     41 status=`expr $status + $ret`
     42 
     43 n=`expr $n + 1`
     44 echo_i "query for .bad is not minimized when qname-minimization is off ($n)"
     45 ret=0
     46 $CLEANQL
     47 $RNDCCMD 10.53.0.5 flush
     48 $DIG $DIGOPTS icky.icky.icky.ptang.zoop.boing.bad. @10.53.0.5 > dig.out.test$n
     49 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
     50 grep "icky.icky.icky.ptang.zoop.boing.bad. 1 IN A	192.0.2.1" dig.out.test$n > /dev/null || ret=1
     51 sleep 1
     52 cat << __EOF | diff ans2/query.log - > /dev/null || ret=1
     53 ADDR icky.icky.icky.ptang.zoop.boing.bad.
     54 ADDR ns3.bad.
     55 ADDR ns3.bad.
     56 ADDR a.bit.longer.ns.name.bad.
     57 ADDR a.bit.longer.ns.name.bad.
     58 __EOF
     59 echo "ADDR icky.icky.icky.ptang.zoop.boing.bad." | diff ans3/query.log - > /dev/null || ret=1
     60 echo "ADDR icky.icky.icky.ptang.zoop.boing.bad." | diff ans4/query.log - > /dev/null || ret=1
     61 for ans in ans2 ans3 ans4; do mv -f $ans/query.log query-$ans-$n.log 2>/dev/null || true; done
     62 if [ $ret != 0 ]; then echo_i "failed"; fi
     63 status=`expr $status + $ret`
     64 
     65 n=`expr $n + 1`
     66 echo_i "query for .slow is not minimized when qname-minimization is off ($n)"
     67 ret=0
     68 $CLEANQL
     69 $RNDCCMD 10.53.0.5 flush
     70 $DIG $DIGOPTS icky.icky.icky.ptang.zoop.boing.slow. @10.53.0.5 > dig.out.test$n
     71 sleep 5
     72 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
     73 grep "icky.icky.icky.ptang.zoop.boing.slow. 1	IN A	192.0.2.1" dig.out.test$n > /dev/null || ret=1
     74 sleep 1
     75 cat << __EOF | diff ans2/query.log - > /dev/null || ret=1
     76 ADDR icky.icky.icky.ptang.zoop.boing.slow.
     77 ADDR ns3.slow.
     78 ADDR ns3.slow.
     79 ADDR a.bit.longer.ns.name.slow.
     80 ADDR a.bit.longer.ns.name.slow.
     81 __EOF
     82 echo "ADDR icky.icky.icky.ptang.zoop.boing.slow." | diff ans3/query.log - > /dev/null || ret=1
     83 echo "ADDR icky.icky.icky.ptang.zoop.boing.slow." | diff ans4/query.log - > /dev/null || ret=1
     84 for ans in ans2 ans3 ans4; do mv -f $ans/query.log query-$ans-$n.log 2>/dev/null || true; done
     85 if [ $ret != 0 ]; then echo_i "failed"; fi
     86 status=`expr $status + $ret`
     87 
     88 n=`expr $n + 1`
     89 echo_i "query for .ugly is not minimized when qname-minimization is off ($n)"
     90 ret=0
     91 $CLEANQL
     92 $RNDCCMD 10.53.0.5 flush
     93 $DIG $DIGOPTS icky.icky.icky.ptang.zoop.boing.ugly. @10.53.0.5 > dig.out.test$n
     94 sleep 5
     95 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
     96 grep "icky.icky.icky.ptang.zoop.boing.ugly. 1	IN A	192.0.2.1" dig.out.test$n > /dev/null || ret=1
     97 sleep 1
     98 cat << __EOF | diff ans2/query.log - > /dev/null || ret=1
     99 ADDR icky.icky.icky.ptang.zoop.boing.ugly.
    100 ADDR ns3.ugly.
    101 ADDR ns3.ugly.
    102 ADDR a.bit.longer.ns.name.ugly.
    103 ADDR a.bit.longer.ns.name.ugly.
    104 __EOF
    105 echo "ADDR icky.icky.icky.ptang.zoop.boing.ugly." | diff ans3/query.log - > /dev/null || ret=1
    106 echo "ADDR icky.icky.icky.ptang.zoop.boing.ugly." | diff ans4/query.log - > /dev/null || ret=1
    107 for ans in ans2 ans3 ans4; do mv -f $ans/query.log query-$ans-$n.log 2>/dev/null || true; done
    108 if [ $ret != 0 ]; then echo_i "failed"; fi
    109 status=`expr $status + $ret`
    110 
    111 n=`expr $n + 1`
    112 echo_i "query for .good is properly minimized when qname-minimization is on ($n)"
    113 ret=0
    114 $CLEANQL
    115 $RNDCCMD 10.53.0.6 flush
    116 $DIG $DIGOPTS icky.icky.icky.ptang.zoop.boing.good. @10.53.0.6 > dig.out.test$n
    117 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
    118 grep "icky.icky.icky.ptang.zoop.boing.good. 1	IN A	192.0.2.1" dig.out.test$n > /dev/null || ret=1
    119 sleep 1
    120 sort ans2/query.log > ans2/query.log.sorted
    121 cat << __EOF | diff ans2/query.log.sorted - > /dev/null || ret=1
    122 ADDR a.bit.longer.ns.name.good.
    123 ADDR a.bit.longer.ns.name.good.
    124 ADDR ns2.good.
    125 ADDR ns3.good.
    126 ADDR ns3.good.
    127 NS boing.good.
    128 NS good.
    129 NS zoop.boing.good.
    130 __EOF
    131 cat << __EOF | diff ans3/query.log - > /dev/null || ret=1
    132 NS zoop.boing.good.
    133 NS ptang.zoop.boing.good.
    134 NS icky.ptang.zoop.boing.good.
    135 __EOF
    136 cat << __EOF | diff ans4/query.log - > /dev/null || ret=1
    137 NS icky.ptang.zoop.boing.good.
    138 NS icky.icky.ptang.zoop.boing.good.
    139 ADDR icky.icky.icky.ptang.zoop.boing.good.
    140 __EOF
    141 for ans in ans2 ans3 ans4; do mv -f $ans/query.log query-$ans-$n.log 2>/dev/null || true; done
    142 if [ $ret != 0 ]; then echo_i "failed"; fi
    143 status=`expr $status + $ret`
    144 
    145 n=`expr $n + 1`
    146 echo_i "query for .bad fails when qname-minimization is in strict mode ($n)"
    147 ret=0
    148 $CLEANQL
    149 $RNDCCMD 10.53.0.6 flush
    150 $DIG $DIGOPTS icky.icky.icky.ptang.zoop.boing.bad. @10.53.0.6 > dig.out.test$n
    151 grep "status: NXDOMAIN" dig.out.test$n > /dev/null || ret=1
    152 sleep 1
    153 sort ans2/query.log > ans2/query.log.sorted
    154 cat << __EOF | diff ans2/query.log.sorted - > /dev/null || ret=1
    155 ADDR ns2.bad.
    156 NS bad.
    157 NS boing.bad.
    158 __EOF
    159 for ans in ans2 ans3 ans4; do mv -f $ans/query.log query-$ans-$n.log 2>/dev/null || true; done
    160 if [ $ret != 0 ]; then echo_i "failed"; fi
    161 status=`expr $status + $ret`
    162 
    163 n=`expr $n + 1`
    164 echo_i "query for .bad succeds when qname-minimization is in relaxed mode ($n)"
    165 ret=0
    166 $CLEANQL
    167 $RNDCCMD 10.53.0.7 flush
    168 $DIG $DIGOPTS icky.icky.icky.ptang.zoop.boing.bad. @10.53.0.7 > dig.out.test$n
    169 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
    170 grep "icky.icky.icky.ptang.zoop.boing.bad. 1 IN A	192.0.2.1" dig.out.test$n > /dev/null || ret=1
    171 sleep 1
    172 sort ans2/query.log > ans2/query.log.sorted
    173 cat << __EOF | diff ans2/query.log.sorted - > /dev/null || ret=1
    174 ADDR a.bit.longer.ns.name.bad.
    175 ADDR a.bit.longer.ns.name.bad.
    176 ADDR icky.icky.icky.ptang.zoop.boing.bad.
    177 ADDR ns2.bad.
    178 ADDR ns3.bad.
    179 ADDR ns3.bad.
    180 NS bad.
    181 NS boing.bad.
    182 __EOF
    183 echo "ADDR icky.icky.icky.ptang.zoop.boing.bad." | diff ans3/query.log - > /dev/null || ret=1
    184 echo "ADDR icky.icky.icky.ptang.zoop.boing.bad." | diff ans4/query.log - > /dev/null || ret=1
    185 for ans in ans2 ans3 ans4; do mv -f $ans/query.log query-$ans-$n.log 2>/dev/null || true; done
    186 if [ $ret != 0 ]; then echo_i "failed"; fi
    187 status=`expr $status + $ret`
    188 
    189 n=`expr $n + 1`
    190 echo_i "query for .ugly fails when qname-minimization is in strict mode ($n)"
    191 ret=0
    192 $CLEANQL
    193 $RNDCCMD 10.53.0.6 flush
    194 $DIG $DIGOPTS icky.icky.icky.ptang.zoop.boing.ugly. @10.53.0.6 > dig.out.test$n
    195 grep "status: SERVFAIL" dig.out.test$n > /dev/null || ret=1
    196 sleep 1
    197 sort ans2/query.log > ans2/query.log.sorted
    198 cat << __EOF | diff ans2/query.log.sorted - > /dev/null || ret=1
    199 ADDR ns2.ugly.
    200 NS boing.ugly.
    201 NS boing.ugly.
    202 NS ugly.
    203 __EOF
    204 for ans in ans2 ans3 ans4; do mv -f $ans/query.log query-$ans-$n.log 2>/dev/null || true; done
    205 if [ $ret != 0 ]; then echo_i "failed"; fi
    206 status=`expr $status + $ret`
    207 $RNDCCMD 10.53.0.6 flush
    208 
    209 n=`expr $n + 1`
    210 echo_i "query for .ugly succeds when qname-minimization is in relaxed mode ($n)"
    211 ret=0
    212 $CLEANQL
    213 $RNDCCMD 10.53.0.7 flush
    214 $DIG $DIGOPTS icky.icky.icky.ptang.zoop.boing.ugly. @10.53.0.7 > dig.out.test$n
    215 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
    216 grep "icky.icky.icky.ptang.zoop.boing.ugly. 1	IN A	192.0.2.1" dig.out.test$n > /dev/null || ret=1
    217 sleep 1
    218 sort ans2/query.log > ans2/query.log.sorted
    219 cat << __EOF | diff ans2/query.log.sorted - > /dev/null || ret=1
    220 ADDR a.bit.longer.ns.name.ugly.
    221 ADDR a.bit.longer.ns.name.ugly.
    222 ADDR icky.icky.icky.ptang.zoop.boing.ugly.
    223 ADDR ns2.ugly.
    224 ADDR ns3.ugly.
    225 ADDR ns3.ugly.
    226 NS boing.ugly.
    227 NS boing.ugly.
    228 NS ugly.
    229 __EOF
    230 echo "ADDR icky.icky.icky.ptang.zoop.boing.ugly." | diff ans3/query.log - > /dev/null || ret=1
    231 echo "ADDR icky.icky.icky.ptang.zoop.boing.ugly." | diff ans4/query.log - > /dev/null || ret=1
    232 for ans in ans2 ans3 ans4; do mv -f $ans/query.log query-$ans-$n.log 2>/dev/null || true; done
    233 if [ $ret != 0 ]; then echo_i "failed"; fi
    234 status=`expr $status + $ret`
    235 $RNDCCMD 10.53.0.7 flush
    236 
    237 n=`expr $n + 1`
    238 echo_i "information that minimization was unsuccessful for .ugly is logged ($n)"
    239 ret=0
    240 grep "success resolving 'icky.icky.icky.ptang.zoop.boing.ugly/A' after disabling qname minimization due to 'FORMERR'" ns7/named.run > /dev/null || ret=1
    241 if [ $ret != 0 ]; then echo_i "failed"; fi
    242 status=`expr $status + $ret`
    243 
    244 n=`expr $n + 1`
    245 echo_i "query for .slow is properly minimized when qname-minimization is on ($n)"
    246 ret=0
    247 $CLEANQL
    248 $RNDCCMD 10.53.0.6 flush
    249 $DIG $DIGOPTS icky.icky.icky.ptang.zoop.boing.slow. @10.53.0.6 > dig.out.test$n
    250 sleep 5
    251 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
    252 grep "icky.icky.icky.ptang.zoop.boing.slow. 1	IN A	192.0.2.1" dig.out.test$n > /dev/null || ret=1
    253 sort ans2/query.log > ans2/query.log.sorted
    254 cat << __EOF | diff ans2/query.log.sorted - > /dev/null || ret=1
    255 ADDR a.bit.longer.ns.name.slow.
    256 ADDR a.bit.longer.ns.name.slow.
    257 ADDR ns2.slow.
    258 ADDR ns3.slow.
    259 ADDR ns3.slow.
    260 NS boing.slow.
    261 NS slow.
    262 NS zoop.boing.slow.
    263 __EOF
    264 cat << __EOF | diff ans3/query.log - > /dev/null || ret=1
    265 NS zoop.boing.slow.
    266 NS ptang.zoop.boing.slow.
    267 NS icky.ptang.zoop.boing.slow.
    268 __EOF
    269 cat << __EOF | diff ans4/query.log - > /dev/null || ret=1
    270 NS icky.ptang.zoop.boing.slow.
    271 NS icky.icky.ptang.zoop.boing.slow.
    272 ADDR icky.icky.icky.ptang.zoop.boing.slow.
    273 __EOF
    274 for ans in ans2 ans3 ans4; do mv -f $ans/query.log query-$ans-$n.log 2>/dev/null || true; done
    275 if [ $ret != 0 ]; then echo_i "failed"; fi
    276 status=`expr $status + $ret`
    277 
    278 n=`expr $n + 1`
    279 echo_i "query for .ip6.arpa succeds and skips on proper boundaries when qname-minimization is on ($n)"
    280 ret=0
    281 $CLEANQL
    282 $RNDCCMD 10.53.0.6 flush
    283 $DIG $DIGOPTS -x 2001:4f8::1 @10.53.0.6 > dig.out.test$n
    284 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
    285 grep "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.f.4.0.1.0.0.2.ip6.arpa. 1 IN PTR nee.com." dig.out.test$n > /dev/null || ret=1
    286 sleep 1
    287 grep -v ADDR ans2/query.log > ans2/query.log.trimmed
    288 cat << __EOF | diff ans2/query.log.trimmed - > /dev/null || ret=1
    289 NS 1.0.0.2.ip6.arpa.
    290 NS 8.f.4.0.1.0.0.2.ip6.arpa.
    291 NS 0.0.0.0.8.f.4.0.1.0.0.2.ip6.arpa.
    292 NS 0.0.0.0.0.0.8.f.4.0.1.0.0.2.ip6.arpa.
    293 NS 0.0.0.0.0.0.0.0.8.f.4.0.1.0.0.2.ip6.arpa.
    294 PTR 1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.f.4.0.1.0.0.2.ip6.arpa.
    295 __EOF
    296 for ans in ans2 ans3 ans4; do mv -f $ans/query.log query-$ans-$n.log 2>/dev/null || true; done
    297 if [ $ret != 0 ]; then echo_i "failed"; fi
    298 status=`expr $status + $ret`
    299 
    300 n=`expr $n + 1`
    301 echo_i "query for multiple label name skips after 7th label ($n)"
    302 ret=0
    303 $CLEANQL
    304 $RNDCCMD 10.53.0.6 flush
    305 $DIG $DIGOPTS more.icky.icky.icky.ptang.zoop.boing.good. @10.53.0.6 > dig.out.test$n
    306 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
    307 grep "more.icky.icky.icky.ptang.zoop.boing.good. 1 IN	A 192.0.2.2" dig.out.test$n > /dev/null || ret=1
    308 sleep 1
    309 sort ans2/query.log > ans2/query.log.sorted
    310 cat << __EOF | diff ans2/query.log.sorted - > /dev/null || ret=1
    311 ADDR a.bit.longer.ns.name.good.
    312 ADDR a.bit.longer.ns.name.good.
    313 ADDR ns2.good.
    314 ADDR ns3.good.
    315 ADDR ns3.good.
    316 NS boing.good.
    317 NS good.
    318 NS zoop.boing.good.
    319 __EOF
    320 cat << __EOF | diff ans3/query.log - > /dev/null || ret=1
    321 NS zoop.boing.good.
    322 NS ptang.zoop.boing.good.
    323 NS icky.ptang.zoop.boing.good.
    324 __EOF
    325 # There's no NS icky.icky.icky.ptang.zoop.boing.good. query - we skipped it.
    326 cat << __EOF | diff ans4/query.log - > /dev/null || ret=1
    327 NS icky.ptang.zoop.boing.good.
    328 NS icky.icky.ptang.zoop.boing.good.
    329 ADDR more.icky.icky.icky.ptang.zoop.boing.good.
    330 __EOF
    331 for ans in ans2 ans3 ans4; do mv -f $ans/query.log query-$ans-$n.log 2>/dev/null || true; done
    332 if [ $ret != 0 ]; then echo_i "failed"; fi
    333 status=`expr $status + $ret`
    334 
    335 n=`expr $n + 1`
    336 echo_i "qname minimization is disabled when forwarding ($n)"
    337 ret=0
    338 $CLEANQL
    339 $RNDCCMD 10.53.0.7 flush
    340 $DIG $DIGOPTS a.bit.longer.ns.name.fwd. @10.53.0.7 > dig.out.test$n
    341 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
    342 grep "a.bit.longer.ns.name.fwd. 1	IN	A	10.53.0.4" dig.out.test$n >/dev/null || ret=1
    343 sleep 1
    344 cat << __EOF | diff ans2/query.log - > /dev/null || ret=1
    345 ADDR a.bit.longer.ns.name.fwd.
    346 __EOF
    347 for ans in ans2; do mv -f $ans/query.log query-$ans-$n.log 2>/dev/null || true; done
    348 if [ $ret != 0 ]; then echo_i "failed"; fi
    349 status=`expr $status + $ret`
    350 
    351 echo_i "exit status: $status"
    352 [ $status -eq 0 ] || exit 1
    353