Home | History | Annotate | Line # | Download | only in qmin
tests.sh revision 1.1.1.3
      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 in strict mode ($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 .good is properly minimized when qname-minimization is in relaxed mode ($n)"
    147 ret=0
    148 $CLEANQL
    149 $RNDCCMD 10.53.0.7 flush
    150 $DIG $DIGOPTS icky.icky.icky.ptang.zoop.boing.good. @10.53.0.7 > dig.out.test$n
    151 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
    152 grep "icky.icky.icky.ptang.zoop.boing.good. 1	IN A	192.0.2.1" dig.out.test$n > /dev/null || ret=1
    153 sleep 1
    154 sort ans2/query.log > ans2/query.log.sorted
    155 cat << __EOF | $DIFF ans2/query.log.sorted - > /dev/null || ret=1
    156 ADDR _.boing.good.
    157 ADDR _.zoop.boing.good.
    158 ADDR a.bit.longer.ns.name.good.
    159 ADDR a.bit.longer.ns.name.good.
    160 ADDR ns2.good.
    161 ADDR ns3.good.
    162 ADDR ns3.good.
    163 __EOF
    164 cat << __EOF | $DIFF ans3/query.log - > /dev/null || ret=1
    165 ADDR _.ptang.zoop.boing.good.
    166 ADDR _.icky.ptang.zoop.boing.good.
    167 __EOF
    168 cat << __EOF | $DIFF ans4/query.log - > /dev/null || ret=1
    169 ADDR _.icky.icky.ptang.zoop.boing.good.
    170 ADDR icky.icky.icky.ptang.zoop.boing.good.
    171 __EOF
    172 for ans in ans2 ans3 ans4; do mv -f $ans/query.log query-$ans-$n.log 2>/dev/null || true; done
    173 if [ $ret != 0 ]; then echo_i "failed"; fi
    174 status=`expr $status + $ret`
    175 
    176 n=`expr $n + 1`
    177 echo_i "query for .bad fails when qname-minimization is in strict mode ($n)"
    178 ret=0
    179 $CLEANQL
    180 $RNDCCMD 10.53.0.6 flush
    181 $DIG $DIGOPTS icky.icky.icky.ptang.zoop.boing.bad. @10.53.0.6 > dig.out.test$n
    182 grep "status: NXDOMAIN" dig.out.test$n > /dev/null || ret=1
    183 sleep 1
    184 sort ans2/query.log > ans2/query.log.sorted
    185 cat << __EOF | $DIFF ans2/query.log.sorted - > /dev/null || ret=1
    186 ADDR ns2.bad.
    187 NS bad.
    188 NS boing.bad.
    189 __EOF
    190 for ans in ans2 ans3 ans4; do mv -f $ans/query.log query-$ans-$n.log 2>/dev/null || true; done
    191 if [ $ret != 0 ]; then echo_i "failed"; fi
    192 status=`expr $status + $ret`
    193 
    194 n=`expr $n + 1`
    195 echo_i "query for .bad succeds when qname-minimization is in relaxed mode ($n)"
    196 ret=0
    197 $CLEANQL
    198 $RNDCCMD 10.53.0.7 flush
    199 $DIG $DIGOPTS icky.icky.icky.ptang.zoop.boing.bad. @10.53.0.7 > dig.out.test$n
    200 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
    201 grep "icky.icky.icky.ptang.zoop.boing.bad. 1 IN A	192.0.2.1" dig.out.test$n > /dev/null || ret=1
    202 sleep 1
    203 sort ans2/query.log > ans2/query.log.sorted
    204 cat << __EOF | $DIFF ans2/query.log.sorted - > /dev/null || ret=1
    205 ADDR _.boing.bad.
    206 ADDR _.zoop.boing.bad.
    207 ADDR a.bit.longer.ns.name.bad.
    208 ADDR a.bit.longer.ns.name.bad.
    209 ADDR ns2.bad.
    210 ADDR ns3.bad.
    211 ADDR ns3.bad.
    212 __EOF
    213 cat << __EOF | $DIFF ans3/query.log - > /dev/null || ret=1
    214 ADDR _.ptang.zoop.boing.bad.
    215 ADDR _.icky.ptang.zoop.boing.bad.
    216 __EOF
    217 cat << __EOF | $DIFF ans4/query.log - > /dev/null || ret=1
    218 ADDR _.icky.icky.ptang.zoop.boing.bad.
    219 ADDR icky.icky.icky.ptang.zoop.boing.bad.
    220 __EOF
    221 for ans in ans2 ans3 ans4; do mv -f $ans/query.log query-$ans-$n.log 2>/dev/null || true; done
    222 if [ $ret != 0 ]; then echo_i "failed"; fi
    223 status=`expr $status + $ret`
    224 
    225 n=`expr $n + 1`
    226 echo_i "query for .ugly fails when qname-minimization is in strict mode ($n)"
    227 ret=0
    228 $CLEANQL
    229 $RNDCCMD 10.53.0.6 flush
    230 $DIG $DIGOPTS icky.icky.icky.ptang.zoop.boing.ugly. @10.53.0.6 > dig.out.test$n
    231 grep "status: SERVFAIL" dig.out.test$n > /dev/null || ret=1
    232 sleep 1
    233 sort ans2/query.log > ans2/query.log.sorted
    234 cat << __EOF | $DIFF ans2/query.log.sorted - > /dev/null || ret=1
    235 ADDR ns2.ugly.
    236 NS boing.ugly.
    237 NS boing.ugly.
    238 NS ugly.
    239 __EOF
    240 for ans in ans2 ans3 ans4; do mv -f $ans/query.log query-$ans-$n.log 2>/dev/null || true; done
    241 if [ $ret != 0 ]; then echo_i "failed"; fi
    242 status=`expr $status + $ret`
    243 $RNDCCMD 10.53.0.6 flush
    244 
    245 n=`expr $n + 1`
    246 echo_i "query for .ugly succeds when qname-minimization is in relaxed mode ($n)"
    247 ret=0
    248 $CLEANQL
    249 $RNDCCMD 10.53.0.7 flush
    250 $DIG $DIGOPTS icky.icky.icky.ptang.zoop.boing.ugly. @10.53.0.7 > dig.out.test$n
    251 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
    252 grep "icky.icky.icky.ptang.zoop.boing.ugly. 1	IN A	192.0.2.1" dig.out.test$n > /dev/null || ret=1
    253 sleep 1
    254 
    255 sort ans2/query.log > ans2/query.log.sorted
    256 cat << __EOF | $DIFF ans2/query.log.sorted - > /dev/null || cat ans2/query.log.sorted
    257 ADDR _.boing.ugly.
    258 ADDR _.boing.ugly.
    259 ADDR a.bit.longer.ns.name.ugly.
    260 ADDR a.bit.longer.ns.name.ugly.
    261 ADDR icky.icky.icky.ptang.zoop.boing.ugly.
    262 ADDR ns2.ugly.
    263 ADDR ns3.ugly.
    264 ADDR ns3.ugly.
    265 __EOF
    266 echo "ADDR icky.icky.icky.ptang.zoop.boing.ugly." | $DIFF ans3/query.log - > /dev/null || ret=1
    267 echo "ADDR icky.icky.icky.ptang.zoop.boing.ugly." | $DIFF ans4/query.log - > /dev/null || ret=1
    268 for ans in ans2 ans3 ans4; do mv -f $ans/query.log query-$ans-$n.log 2>/dev/null || true; done
    269 if [ $ret != 0 ]; then echo_i "failed"; fi
    270 status=`expr $status + $ret`
    271 $RNDCCMD 10.53.0.7 flush
    272 
    273 n=`expr $n + 1`
    274 echo_i "information that minimization was unsuccessful for .ugly is logged ($n)"
    275 ret=0
    276 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
    277 if [ $ret != 0 ]; then echo_i "failed"; fi
    278 status=`expr $status + $ret`
    279 
    280 n=`expr $n + 1`
    281 echo_i "query for .slow is properly minimized when qname-minimization is on ($n)"
    282 ret=0
    283 $CLEANQL
    284 $RNDCCMD 10.53.0.6 flush
    285 $DIG $DIGOPTS icky.icky.icky.ptang.zoop.boing.slow. @10.53.0.6 > dig.out.test$n
    286 sleep 5
    287 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
    288 grep "icky.icky.icky.ptang.zoop.boing.slow. 1	IN A	192.0.2.1" dig.out.test$n > /dev/null || ret=1
    289 sort ans2/query.log > ans2/query.log.sorted
    290 cat << __EOF | $DIFF ans2/query.log.sorted - > /dev/null || ret=1
    291 ADDR a.bit.longer.ns.name.slow.
    292 ADDR a.bit.longer.ns.name.slow.
    293 ADDR ns2.slow.
    294 ADDR ns3.slow.
    295 ADDR ns3.slow.
    296 NS boing.slow.
    297 NS slow.
    298 NS zoop.boing.slow.
    299 __EOF
    300 cat << __EOF | $DIFF ans3/query.log - > /dev/null || ret=1
    301 NS zoop.boing.slow.
    302 NS ptang.zoop.boing.slow.
    303 NS icky.ptang.zoop.boing.slow.
    304 __EOF
    305 cat << __EOF | $DIFF ans4/query.log - > /dev/null || ret=1
    306 NS icky.ptang.zoop.boing.slow.
    307 NS icky.icky.ptang.zoop.boing.slow.
    308 ADDR icky.icky.icky.ptang.zoop.boing.slow.
    309 __EOF
    310 for ans in ans2 ans3 ans4; do mv -f $ans/query.log query-$ans-$n.log 2>/dev/null || true; done
    311 if [ $ret != 0 ]; then echo_i "failed"; fi
    312 status=`expr $status + $ret`
    313 
    314 n=`expr $n + 1`
    315 echo_i "query for .ip6.arpa succeds and skips on proper boundaries when qname-minimization is on ($n)"
    316 ret=0
    317 $CLEANQL
    318 $RNDCCMD 10.53.0.6 flush
    319 $DIG $DIGOPTS -x 2001:4f8::1 @10.53.0.6 > dig.out.test$n
    320 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
    321 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
    322 sleep 1
    323 grep -v ADDR ans2/query.log > ans2/query.log.trimmed
    324 cat << __EOF | $DIFF ans2/query.log.trimmed - > /dev/null || ret=1
    325 NS 1.0.0.2.ip6.arpa.
    326 NS 8.f.4.0.1.0.0.2.ip6.arpa.
    327 NS 0.0.0.0.8.f.4.0.1.0.0.2.ip6.arpa.
    328 NS 0.0.0.0.0.0.8.f.4.0.1.0.0.2.ip6.arpa.
    329 NS 0.0.0.0.0.0.0.0.8.f.4.0.1.0.0.2.ip6.arpa.
    330 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.
    331 __EOF
    332 for ans in ans2 ans3 ans4; do mv -f $ans/query.log query-$ans-$n.log 2>/dev/null || true; done
    333 if [ $ret != 0 ]; then echo_i "failed"; fi
    334 status=`expr $status + $ret`
    335 
    336 n=`expr $n + 1`
    337 echo_i "query for multiple label name skips after 7th label ($n)"
    338 ret=0
    339 $CLEANQL
    340 $RNDCCMD 10.53.0.6 flush
    341 $DIG $DIGOPTS more.icky.icky.icky.ptang.zoop.boing.good. @10.53.0.6 > dig.out.test$n
    342 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
    343 grep "more.icky.icky.icky.ptang.zoop.boing.good. 1 IN	A 192.0.2.2" dig.out.test$n > /dev/null || ret=1
    344 sleep 1
    345 sort ans2/query.log > ans2/query.log.sorted
    346 cat << __EOF | $DIFF ans2/query.log.sorted - > /dev/null || ret=1
    347 ADDR a.bit.longer.ns.name.good.
    348 ADDR a.bit.longer.ns.name.good.
    349 ADDR ns2.good.
    350 ADDR ns3.good.
    351 ADDR ns3.good.
    352 NS boing.good.
    353 NS good.
    354 NS zoop.boing.good.
    355 __EOF
    356 cat << __EOF | $DIFF ans3/query.log - > /dev/null || ret=1
    357 NS zoop.boing.good.
    358 NS ptang.zoop.boing.good.
    359 NS icky.ptang.zoop.boing.good.
    360 __EOF
    361 # There's no NS icky.icky.icky.ptang.zoop.boing.good. query - we skipped it.
    362 cat << __EOF | $DIFF ans4/query.log - > /dev/null || ret=1
    363 NS icky.ptang.zoop.boing.good.
    364 NS icky.icky.ptang.zoop.boing.good.
    365 ADDR more.icky.icky.icky.ptang.zoop.boing.good.
    366 __EOF
    367 for ans in ans2 ans3 ans4; do mv -f $ans/query.log query-$ans-$n.log 2>/dev/null || true; done
    368 if [ $ret != 0 ]; then echo_i "failed"; fi
    369 status=`expr $status + $ret`
    370 
    371 n=`expr $n + 1`
    372 echo_i "qname minimization is disabled when forwarding ($n)"
    373 ret=0
    374 $CLEANQL
    375 $RNDCCMD 10.53.0.7 flush
    376 $DIG $DIGOPTS a.bit.longer.ns.name.fwd. @10.53.0.7 > dig.out.test$n
    377 grep "status: NOERROR" dig.out.test$n > /dev/null || ret=1
    378 grep "a.bit.longer.ns.name.fwd. 1	IN	A	10.53.0.4" dig.out.test$n >/dev/null || ret=1
    379 sleep 1
    380 cat << __EOF | $DIFF ans2/query.log - > /dev/null || ret=1
    381 ADDR a.bit.longer.ns.name.fwd.
    382 __EOF
    383 for ans in ans2; do mv -f $ans/query.log query-$ans-$n.log 2>/dev/null || true; done
    384 if [ $ret != 0 ]; then echo_i "failed"; fi
    385 status=`expr $status + $ret`
    386 
    387 echo_i "exit status: $status"
    388 [ $status -eq 0 ] || exit 1
    389