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="+short -p ${PORT}" 16 RNDCCMD="$RNDC -p ${CONTROLPORT} -c ../common/rndc.conf" 17 18 status=0 19 20 for bad in bad-*.conf 21 do 22 ret=0 23 echo_i "checking that named-checkconf detects error in $bad" 24 $CHECKCONF $bad > /dev/null 2>&1 25 if [ $? != 1 ]; then echo_i "failed"; ret=1; fi 26 status=`expr $status + $ret` 27 done 28 29 for good in good-*.conf 30 do 31 ret=0 32 echo_i "checking that named-checkconf detects no error in $good" 33 $CHECKCONF $good > /dev/null 2>&1 34 if [ $? != 0 ]; then echo_i "failed"; ret=1; fi 35 status=`expr $status + $ret` 36 done 37 38 echo_i "wait for servers to finish loading" 39 ret=0 40 wait_for_log 20 "all zones loaded" ns1/named.run || ret=1 41 wait_for_log 20 "all zones loaded" ns2/named.run || ret=1 42 wait_for_log 20 "all zones loaded" ns3/named.run || ret=1 43 wait_for_log 20 "all zones loaded" ns4/named.run || ret=1 44 if [ $ret != 0 ]; then echo_i "failed"; fi 45 status=`expr $status + $ret` 46 47 # both the 'a.example/A' lookup and the './NS' lookup to ns1 48 # need tocomplete before reopening/rolling for the counts to 49 # be correct. 50 51 $DIG $DIGOPTS @10.53.0.3 a.example > dig.out 52 wait_for_log 20 "(./NS): query_reset" ns1/named.run || true 53 54 # check three different dnstap reopen/roll methods: 55 # ns1: dnstap-reopen; ns2: dnstap -reopen; ns3: dnstap -roll 56 mv ns1/dnstap.out ns1/dnstap.out.save 57 mv ns2/dnstap.out ns2/dnstap.out.save 58 59 if [ -n "$FSTRM_CAPTURE" ] ; then 60 $FSTRM_CAPTURE -t protobuf:dnstap.Dnstap -u ns4/dnstap.out \ 61 -w dnstap.out > fstrm_capture.out 2>&1 & 62 fstrm_capture_pid=$! 63 fi 64 65 $RNDCCMD -s 10.53.0.1 dnstap-reopen | sed 's/^/ns1 /' | cat_i 66 $RNDCCMD -s 10.53.0.2 dnstap -reopen | sed 's/^/ns2 /' | cat_i 67 $RNDCCMD -s 10.53.0.3 dnstap -roll | sed 's/^/ns3 /' | cat_i 68 $RNDCCMD -s 10.53.0.4 dnstap -reopen | sed 's/^/ns4 /' | cat_i 69 70 $DIG $DIGOPTS @10.53.0.3 a.example > dig.out 71 72 # send an UPDATE to ns2 73 $NSUPDATE <<- EOF 74 server 10.53.0.2 ${PORT} 75 zone example 76 update add b.example 3600 in a 10.10.10.10 77 send 78 EOF 79 80 # XXX: file output should be flushed once a second according 81 # to the libfstrm source, but it doesn't seem to happen until 82 # enough data has accumulated. to get all the output, we stop 83 # the name servers, forcing a flush on shutdown. it would be 84 # nice to find a better way to do this. 85 $RNDCCMD -s 10.53.0.1 stop | sed 's/^/ns1 /' | cat_i 86 $RNDCCMD -s 10.53.0.2 stop | sed 's/^/ns2 /' | cat_i 87 $RNDCCMD -s 10.53.0.3 stop | sed 's/^/ns3 /' | cat_i 88 89 sleep 1 90 91 echo_i "checking initial message counts" 92 93 udp1=`$DNSTAPREAD ns1/dnstap.out.save | grep "UDP " | wc -l` 94 tcp1=`$DNSTAPREAD ns1/dnstap.out.save | grep "TCP " | wc -l` 95 aq1=`$DNSTAPREAD ns1/dnstap.out.save | grep "AQ " | wc -l` 96 ar1=`$DNSTAPREAD ns1/dnstap.out.save | grep "AR " | wc -l` 97 cq1=`$DNSTAPREAD ns1/dnstap.out.save | grep "CQ " | wc -l` 98 cr1=`$DNSTAPREAD ns1/dnstap.out.save | grep "CR " | wc -l` 99 rq1=`$DNSTAPREAD ns1/dnstap.out.save | grep "RQ " | wc -l` 100 rr1=`$DNSTAPREAD ns1/dnstap.out.save | grep "RR " | wc -l` 101 uq1=`$DNSTAPREAD ns1/dnstap.out.save | grep "UQ " | wc -l` 102 ur1=`$DNSTAPREAD ns1/dnstap.out.save | grep "UR " | wc -l` 103 104 udp2=`$DNSTAPREAD ns2/dnstap.out.save | grep "UDP " | wc -l` 105 tcp2=`$DNSTAPREAD ns2/dnstap.out.save | grep "TCP " | wc -l` 106 aq2=`$DNSTAPREAD ns2/dnstap.out.save | grep "AQ " | wc -l` 107 ar2=`$DNSTAPREAD ns2/dnstap.out.save | grep "AR " | wc -l` 108 cq2=`$DNSTAPREAD ns2/dnstap.out.save | grep "CQ " | wc -l` 109 cr2=`$DNSTAPREAD ns2/dnstap.out.save | grep "CR " | wc -l` 110 rq2=`$DNSTAPREAD ns2/dnstap.out.save | grep "RQ " | wc -l` 111 rr2=`$DNSTAPREAD ns2/dnstap.out.save | grep "RR " | wc -l` 112 uq2=`$DNSTAPREAD ns2/dnstap.out.save | grep "UQ " | wc -l` 113 ur2=`$DNSTAPREAD ns2/dnstap.out.save | grep "UR " | wc -l` 114 115 mv ns3/dnstap.out.0 ns3/dnstap.out.save 116 udp3=`$DNSTAPREAD ns3/dnstap.out.save | grep "UDP " | wc -l` 117 tcp3=`$DNSTAPREAD ns3/dnstap.out.save | grep "TCP " | wc -l` 118 aq3=`$DNSTAPREAD ns3/dnstap.out.save | grep "AQ " | wc -l` 119 ar3=`$DNSTAPREAD ns3/dnstap.out.save | grep "AR " | wc -l` 120 cq3=`$DNSTAPREAD ns3/dnstap.out.save | grep "CQ " | wc -l` 121 cr3=`$DNSTAPREAD ns3/dnstap.out.save | grep "CR " | wc -l` 122 rq3=`$DNSTAPREAD ns3/dnstap.out.save | grep "RQ " | wc -l` 123 rr3=`$DNSTAPREAD ns3/dnstap.out.save | grep "RR " | wc -l` 124 uq3=`$DNSTAPREAD ns3/dnstap.out.save | grep "UQ " | wc -l` 125 ur3=`$DNSTAPREAD ns3/dnstap.out.save | grep "UR " | wc -l` 126 127 echo_i "checking UDP message counts" 128 ret=0 129 [ $udp1 -eq 0 ] || { 130 echo_i "ns1 $udp1 expected 0" 131 ret=1 132 } 133 [ $udp2 -eq 2 ] || { 134 echo_i "ns2 $udp2 expected 2" 135 ret=1 136 } 137 [ $udp3 -eq 4 ] || { 138 echo_i "ns3 $udp3 expected 4" 139 ret=1 140 } 141 if [ $ret != 0 ]; then echo_i "failed"; fi 142 status=`expr $status + $ret` 143 144 echo_i "checking TCP message counts" 145 ret=0 146 [ $tcp1 -eq 6 ] || { 147 echo_i "ns1 $tcp1 expected 6" 148 ret=1 149 } 150 [ $tcp2 -eq 2 ] || { 151 echo_i "ns2 $tcp2 expected 2" 152 ret=1 153 } 154 [ $tcp3 -eq 6 ] || { 155 echo_i "ns3 $tcp3 expected 6" 156 ret=1 157 } 158 if [ $ret != 0 ]; then echo_i "failed"; fi 159 status=`expr $status + $ret` 160 161 echo_i "checking AUTH_QUERY message counts" 162 ret=0 163 [ $aq1 -eq 3 ] || { 164 echo_i "ns1 $aq1 exepcted 3" 165 ret=1 166 } 167 [ $aq2 -eq 2 ] || { 168 echo_i "ns2 $aq2 expected 2" 169 ret=1 170 } 171 [ $aq3 -eq 1 ] || { 172 echo_i "ns3 $aq3 expected 1" 173 ret=1 174 } 175 if [ $ret != 0 ]; then echo_i "failed"; fi 176 status=`expr $status + $ret` 177 178 echo_i "checking AUTH_RESPONSE message counts" 179 ret=0 180 [ $ar1 -eq 2 ] || { 181 echo_i "ns1 $ar1 expected 2" 182 ret=1 183 } 184 [ $ar2 -eq 1 ] || { 185 echo_i "ns2 $ar2 expected 1" 186 ret=1 187 } 188 [ $ar3 -eq 0 ] || { 189 echo_i "ns3 $ar3 expected 0" 190 ret=1 191 } 192 if [ $ret != 0 ]; then echo_i "failed"; fi 193 status=`expr $status + $ret` 194 195 echo_i "checking CLIENT_QUERY message counts" 196 ret=0 197 [ $cq1 -eq 0 ] || { 198 echo_i "ns1 $cq1 expected 0" 199 ret=1 200 } 201 [ $cq2 -eq 0 ] || { 202 echo_i "ns2 $cq2 expected 0" 203 ret=1 204 } 205 [ $cq3 -eq 1 ] || { 206 echo_i "ns3 $cq3 expected 1" 207 ret=1 208 } 209 if [ $ret != 0 ]; then echo_i "failed"; fi 210 status=`expr $status + $ret` 211 212 echo_i "checking CLIENT_RESPONSE message counts" 213 ret=0 214 [ $cr1 -eq 1 ] || { 215 echo_i "ns1 $cr1 expected 1" 216 ret=1 217 } 218 [ $cr2 -eq 1 ] || { 219 echo_i "ns2 $cr2 expected 1" 220 ret=1 221 } 222 [ $cr3 -eq 2 ] || { 223 echo_i "ns3 $cr3 expected 2" 224 ret=1 225 } 226 if [ $ret != 0 ]; then echo_i "failed"; fi 227 status=`expr $status + $ret` 228 229 echo_i "checking RESOLVER_QUERY message counts" 230 ret=0 231 [ $rq1 -eq 0 ] || { 232 echo_i "ns1 $rq1 expected 0" 233 ret=1 234 } 235 [ $rq2 -eq 0 ] || { 236 echo_i "ns2 $rq2 expected 0" 237 ret=1 238 } 239 [ $rq3 -eq 3 ] || { 240 echo_i "ns3 $rq3 expected 3" 241 ret=1 242 } 243 if [ $ret != 0 ]; then echo_i "failed"; fi 244 status=`expr $status + $ret` 245 246 echo_i "checking RESOLVER_RESPONSE message counts" 247 ret=0 248 [ $rr1 -eq 0 ] || { 249 echo_i "ns1 $rr1 expected 0" 250 ret=1 251 } 252 [ $rr2 -eq 0 ] || { 253 echo_i "ns2 $rr2 expected 0" 254 ret=1 255 } 256 [ $rr3 -eq 3 ] || { 257 echo_i "ns3 $rr3 expected 3" 258 ret=1 259 } 260 if [ $ret != 0 ]; then echo_i "failed"; fi 261 status=`expr $status + $ret` 262 263 echo_i "checking UPDATE_QUERY message counts" 264 ret=0 265 [ $uq1 -eq 0 ] || { 266 echo_i "ns1 $uq1 expected 0" 267 ret=1 268 } 269 [ $uq2 -eq 0 ] || { 270 echo_i "ns2 $uq2 expected 0" 271 ret=1 272 } 273 [ $uq3 -eq 0 ] || { 274 echo_i "ns3 $uq3 expected 0" 275 ret=1 276 } 277 if [ $ret != 0 ]; then echo_i "failed"; fi 278 status=`expr $status + $ret` 279 280 echo_i "checking UPDATE_RESPONSE message counts" 281 ret=0 282 [ $ur1 -eq 0 ] || { 283 echo_i "ns1 $ur1 expected 0" 284 ret=1 285 } 286 [ $ur2 -eq 0 ] || { 287 echo_i "ns2 $ur2 expected 0" 288 ret=1 289 } 290 [ $ur3 -eq 0 ] || { 291 echo_i "ns3 $ur3 expected 0" 292 ret=1 293 } 294 if [ $ret != 0 ]; then echo_i "failed"; fi 295 status=`expr $status + $ret` 296 297 echo_i "checking reopened message counts" 298 299 udp1=`$DNSTAPREAD ns1/dnstap.out | grep "UDP " | wc -l` 300 tcp1=`$DNSTAPREAD ns1/dnstap.out | grep "TCP " | wc -l` 301 aq1=`$DNSTAPREAD ns1/dnstap.out | grep "AQ " | wc -l` 302 ar1=`$DNSTAPREAD ns1/dnstap.out | grep "AR " | wc -l` 303 cq1=`$DNSTAPREAD ns1/dnstap.out | grep "CQ " | wc -l` 304 cr1=`$DNSTAPREAD ns1/dnstap.out | grep "CR " | wc -l` 305 rq1=`$DNSTAPREAD ns1/dnstap.out | grep "RQ " | wc -l` 306 rr1=`$DNSTAPREAD ns1/dnstap.out | grep "RR " | wc -l` 307 uq1=`$DNSTAPREAD ns1/dnstap.out | grep "UQ " | wc -l` 308 ur1=`$DNSTAPREAD ns1/dnstap.out | grep "UR " | wc -l` 309 310 udp2=`$DNSTAPREAD ns2/dnstap.out | grep "UDP " | wc -l` 311 tcp2=`$DNSTAPREAD ns2/dnstap.out | grep "TCP " | wc -l` 312 aq2=`$DNSTAPREAD ns2/dnstap.out | grep "AQ " | wc -l` 313 ar2=`$DNSTAPREAD ns2/dnstap.out | grep "AR " | wc -l` 314 cq2=`$DNSTAPREAD ns2/dnstap.out | grep "CQ " | wc -l` 315 cr2=`$DNSTAPREAD ns2/dnstap.out | grep "CR " | wc -l` 316 rq2=`$DNSTAPREAD ns2/dnstap.out | grep "RQ " | wc -l` 317 rr2=`$DNSTAPREAD ns2/dnstap.out | grep "RR " | wc -l` 318 uq2=`$DNSTAPREAD ns2/dnstap.out | grep "UQ " | wc -l` 319 ur2=`$DNSTAPREAD ns2/dnstap.out | grep "UR " | wc -l` 320 321 udp3=`$DNSTAPREAD ns3/dnstap.out | grep "UDP " | wc -l` 322 tcp3=`$DNSTAPREAD ns3/dnstap.out | grep "TCP " | wc -l` 323 aq3=`$DNSTAPREAD ns3/dnstap.out | grep "AQ " | wc -l` 324 ar3=`$DNSTAPREAD ns3/dnstap.out | grep "AR " | wc -l` 325 cq3=`$DNSTAPREAD ns3/dnstap.out | grep "CQ " | wc -l` 326 cr3=`$DNSTAPREAD ns3/dnstap.out | grep "CR " | wc -l` 327 rq3=`$DNSTAPREAD ns3/dnstap.out | grep "RQ " | wc -l` 328 rr3=`$DNSTAPREAD ns3/dnstap.out | grep "RR " | wc -l` 329 uq3=`$DNSTAPREAD ns3/dnstap.out | grep "UQ " | wc -l` 330 ur3=`$DNSTAPREAD ns3/dnstap.out | grep "UR " | wc -l` 331 332 echo_i "checking UDP message counts" 333 ret=0 334 [ $udp1 -eq 0 ] || { 335 echo_i "ns1 $udp1 expected 0" 336 ret=1 337 } 338 [ $udp2 -eq 2 ] || { 339 echo_i "ns2 $udp2 expected 2" 340 ret=1 341 } 342 [ $udp3 -eq 2 ] || { 343 echo_i "ns3 $udp3 expected 2" 344 ret=1 345 } 346 if [ $ret != 0 ]; then echo_i "failed"; fi 347 status=`expr $status + $ret` 348 349 echo_i "checking TCP message counts" 350 ret=0 351 [ $tcp1 -eq 0 ] || { 352 echo_i "ns1 $tcp1 expected 0" 353 ret=1 354 } 355 [ $tcp2 -eq 0 ] || { 356 echo_i "ns2 $tcp2 expected 0" 357 ret=1 358 } 359 [ $tcp3 -eq 0 ] || { 360 echo_i "ns3 $tcp3 expected 0" 361 ret=1 362 } 363 if [ $ret != 0 ]; then echo_i "failed"; fi 364 status=`expr $status + $ret` 365 366 echo_i "checking AUTH_QUERY message counts" 367 ret=0 368 [ $aq1 -eq 0 ] || { 369 echo_i "ns1 $aq1 exepcted 0" 370 ret=1 371 } 372 [ $aq2 -eq 0 ] || { 373 echo_i "ns2 $aq2 expected 0" 374 ret=1 375 } 376 [ $aq3 -eq 0 ] || { 377 echo_i "ns3 $aq3 expected 0" 378 ret=1 379 } 380 if [ $ret != 0 ]; then echo_i "failed"; fi 381 status=`expr $status + $ret` 382 383 echo_i "checking AUTH_RESPONSE message counts" 384 ret=0 385 [ $ar1 -eq 0 ] || { 386 echo_i "ns1 $ar1 expected 0" 387 ret=1 388 } 389 [ $ar2 -eq 0 ] || { 390 echo_i "ns2 $ar2 expected 0" 391 ret=1 392 } 393 [ $ar3 -eq 0 ] || { 394 echo_i "ns3 $ar3 expected 0" 395 ret=1 396 } 397 if [ $ret != 0 ]; then echo_i "failed"; fi 398 status=`expr $status + $ret` 399 400 echo_i "checking CLIENT_QUERY message counts" 401 ret=0 402 [ $cq1 -eq 0 ] || { 403 echo_i "ns1 $cq1 expected 0" 404 ret=1 405 } 406 [ $cq2 -eq 0 ] || { 407 echo_i "ns2 $cq2 expected 0" 408 ret=1 409 } 410 [ $cq3 -eq 1 ] || { 411 echo_i "ns3 $cq3 expected 1" 412 ret=1 413 } 414 if [ $ret != 0 ]; then echo_i "failed"; fi 415 status=`expr $status + $ret` 416 417 echo_i "checking CLIENT_RESPONSE message counts" 418 ret=0 419 [ $cr1 -eq 0 ] || { 420 echo_i "ns1 $cr1 expected 0" 421 ret=1 422 } 423 [ $cr2 -eq 0 ] || { 424 echo_i "ns2 $cr2 expected 0" 425 ret=1 426 } 427 [ $cr3 -eq 1 ] || { 428 echo_i "ns3 $cr3 expected 1" 429 ret=1 430 } 431 if [ $ret != 0 ]; then echo_i "failed"; fi 432 status=`expr $status + $ret` 433 434 echo_i "checking RESOLVER_QUERY message counts" 435 ret=0 436 [ $rq1 -eq 0 ] || { 437 echo_i "ns1 $rq1 expected 0" 438 ret=1 439 } 440 [ $rq2 -eq 0 ] || { 441 echo_i "ns2 $rq2 expected 0" 442 ret=1 443 } 444 [ $rq3 -eq 0 ] || { 445 echo_i "ns3 $rq3 expected 0" 446 ret=1 447 } 448 if [ $ret != 0 ]; then echo_i "failed"; fi 449 status=`expr $status + $ret` 450 451 echo_i "checking RESOLVER_RESPONSE message counts" 452 ret=0 453 [ $rr1 -eq 0 ] || { 454 echo_i "ns1 $rr1 expected 0" 455 ret=1 456 } 457 [ $rr2 -eq 0 ] || { 458 echo_i "ns2 $rr2 expected 0" 459 ret=1 460 } 461 [ $rr3 -eq 0 ] || { 462 echo_i "ns3 $rr3 expected 0" 463 ret=1 464 } 465 if [ $ret != 0 ]; then echo_i "failed"; fi 466 status=`expr $status + $ret` 467 468 echo_i "checking UPDATE_QUERY message counts" 469 ret=0 470 [ $uq1 -eq 0 ] || { 471 echo_i "ns1 $uq1 expected 0" 472 ret=1 473 } 474 [ $uq2 -eq 1 ] || { 475 echo_i "ns2 $uq2 expected 1" 476 ret=1 477 } 478 [ $uq3 -eq 0 ] || { 479 echo_i "ns3 $uq3 expected 0" 480 ret=1 481 } 482 if [ $ret != 0 ]; then echo_i "failed"; fi 483 status=`expr $status + $ret` 484 485 echo_i "checking UPDATE_RESPONSE message counts" 486 ret=0 487 [ $ur1 -eq 0 ] || { 488 echo_i "ns1 $ur1 expected 0" 489 ret=1 490 } 491 [ $ur2 -eq 1 ] || { 492 echo_i "ns2 $ur2 expected 1" 493 ret=1 494 } 495 [ $ur3 -eq 0 ] || { 496 echo_i "ns3 $ur3 expected 0" 497 ret=1 498 } 499 if [ $ret != 0 ]; then echo_i "failed"; fi 500 status=`expr $status + $ret` 501 502 HAS_PYYAML=0 503 if [ -n "$PYTHON" ] ; then 504 $PYTHON -c "import yaml" 2> /dev/null && HAS_PYYAML=1 505 fi 506 507 if [ $HAS_PYYAML -ne 0 ] ; then 508 echo_i "checking dnstap-read YAML output" 509 ret=0 510 { 511 $PYTHON ydump.py "$DNSTAPREAD" "ns3/dnstap.out.save" > ydump.out || ret=1 512 } | cat_i 513 if [ $ret != 0 ]; then echo_i "failed"; fi 514 status=`expr $status + $ret` 515 fi 516 517 echo_i "checking dnstap-read hex output" 518 ret=0 519 hex=`$DNSTAPREAD -x ns3/dnstap.out | tail -1` 520 echo $hex | $WIRETEST > dnstap.hex 521 grep 'status: NOERROR' dnstap.hex > /dev/null 2>&1 || ret=1 522 grep 'ANSWER: 3, AUTHORITY: 1' dnstap.hex > /dev/null 2>&1 || ret=1 523 if [ $ret != 0 ]; then echo_i "failed"; fi 524 status=`expr $status + $ret` 525 526 if [ -n "$FSTRM_CAPTURE" ] ; then 527 $DIG $DIGOPTS @10.53.0.4 a.example > dig.out 528 529 # send an UPDATE to ns4 530 $NSUPDATE <<- EOF > nsupdate.out 2>&1 531 server 10.53.0.4 ${PORT} 532 zone example 533 update add b.example 3600 in a 10.10.10.10 534 send 535 EOF 536 grep "update failed: NOTAUTH" nsupdate.out > /dev/null || ret=1 537 538 echo_i "checking unix socket message counts" 539 sleep 2 540 kill $fstrm_capture_pid 541 wait 542 udp4=`$DNSTAPREAD dnstap.out | grep "UDP " | wc -l` 543 tcp4=`$DNSTAPREAD dnstap.out | grep "TCP " | wc -l` 544 aq4=`$DNSTAPREAD dnstap.out | grep "AQ " | wc -l` 545 ar4=`$DNSTAPREAD dnstap.out | grep "AR " | wc -l` 546 cq4=`$DNSTAPREAD dnstap.out | grep "CQ " | wc -l` 547 cr4=`$DNSTAPREAD dnstap.out | grep "CR " | wc -l` 548 rq4=`$DNSTAPREAD dnstap.out | grep "RQ " | wc -l` 549 rr4=`$DNSTAPREAD dnstap.out | grep "RR " | wc -l` 550 uq4=`$DNSTAPREAD dnstap.out | grep "UQ " | wc -l` 551 ur4=`$DNSTAPREAD dnstap.out | grep "UR " | wc -l` 552 553 echo_i "checking UDP message counts" 554 ret=0 555 [ $udp4 -eq 4 ] || { 556 echo_i "ns4 $udp4 expected 4" 557 ret=1 558 } 559 if [ $ret != 0 ]; then echo_i "failed"; fi 560 status=`expr $status + $ret` 561 562 echo_i "checking TCP message counts" 563 ret=0 564 [ $tcp4 -eq 0 ] || { 565 echo_i "ns4 $tcp4 expected 0" 566 ret=1 567 } 568 if [ $ret != 0 ]; then echo_i "failed"; fi 569 status=`expr $status + $ret` 570 571 echo_i "checking AUTH_QUERY message counts" 572 ret=0 573 [ $aq4 -eq 0 ] || { 574 echo_i "ns4 $aq4 expected 0" 575 ret=1 576 } 577 if [ $ret != 0 ]; then echo_i "failed"; fi 578 status=`expr $status + $ret` 579 580 echo_i "checking AUTH_RESPONSE message counts" 581 ret=0 582 [ $ar4 -eq 0 ] || { 583 echo_i "ns4 $ar4 expected 0" 584 ret=1 585 } 586 if [ $ret != 0 ]; then echo_i "failed"; fi 587 status=`expr $status + $ret` 588 589 echo_i "checking CLIENT_QUERY message counts" 590 ret=0 591 [ $cq4 -eq 1 ] || { 592 echo_i "ns4 $cq4 expected 1" 593 ret=1 594 } 595 if [ $ret != 0 ]; then echo_i "failed"; fi 596 status=`expr $status + $ret` 597 598 echo_i "checking CLIENT_RESPONSE message counts" 599 ret=0 600 [ $cr4 -eq 1 ] || { 601 echo_i "ns4 $cr4 expected 1" 602 ret=1 603 } 604 if [ $ret != 0 ]; then echo_i "failed"; fi 605 status=`expr $status + $ret` 606 607 echo_i "checking RESOLVER_QUERY message counts" 608 ret=0 609 [ $rq4 -eq 0 ] || { 610 echo_i "ns4 $rq4 expected 0" 611 ret=1 612 } 613 if [ $ret != 0 ]; then echo_i "failed"; fi 614 status=`expr $status + $ret` 615 616 echo_i "checking RESOLVER_RESPONSE message counts" 617 ret=0 618 [ $rr4 -eq 0 ] || { 619 echo_i "ns4 $rr4 expected 0" 620 ret=1 621 } 622 623 echo_i "checking UPDATE_QUERY message counts" 624 ret=0 625 [ $uq4 -eq 1 ] || { 626 echo_i "ns4 $uq4 expected 1" 627 ret=1 628 } 629 if [ $ret != 0 ]; then echo_i "failed"; fi 630 status=`expr $status + $ret` 631 632 echo_i "checking UPDATE_RESPONSE message counts" 633 ret=0 634 [ $ur4 -eq 1 ] || { 635 echo_i "ns4 $ur4 expected 1" 636 ret=1 637 } 638 if [ $ret != 0 ]; then echo_i "failed"; fi 639 status=`expr $status + $ret` 640 641 mv dnstap.out dnstap.out.save 642 643 $FSTRM_CAPTURE -t protobuf:dnstap.Dnstap -u ns4/dnstap.out \ 644 -w dnstap.out > fstrm_capture.out 2>&1 & 645 fstrm_capture_pid=$! 646 $RNDCCMD -s 10.53.0.4 dnstap -reopen | sed 's/^/ns4 /' | cat_i 647 $DIG $DIGOPTS @10.53.0.4 a.example > dig.out 648 649 echo_i "checking reopened unix socket message counts" 650 sleep 2 651 kill $fstrm_capture_pid 652 wait 653 udp4=`$DNSTAPREAD dnstap.out | grep "UDP " | wc -l` 654 tcp4=`$DNSTAPREAD dnstap.out | grep "TCP " | wc -l` 655 aq4=`$DNSTAPREAD dnstap.out | grep "AQ " | wc -l` 656 ar4=`$DNSTAPREAD dnstap.out | grep "AR " | wc -l` 657 cq4=`$DNSTAPREAD dnstap.out | grep "CQ " | wc -l` 658 cr4=`$DNSTAPREAD dnstap.out | grep "CR " | wc -l` 659 rq4=`$DNSTAPREAD dnstap.out | grep "RQ " | wc -l` 660 rr4=`$DNSTAPREAD dnstap.out | grep "RR " | wc -l` 661 uq4=`$DNSTAPREAD dnstap.out | grep "UQ " | wc -l` 662 ur4=`$DNSTAPREAD dnstap.out | grep "UR " | wc -l` 663 664 echo_i "checking UDP message counts" 665 ret=0 666 [ $udp4 -eq 2 ] || { 667 echo_i "ns4 $udp4 expected 2" 668 ret=1 669 } 670 if [ $ret != 0 ]; then echo_i "failed"; fi 671 status=`expr $status + $ret` 672 673 echo_i "checking TCP message counts" 674 ret=0 675 [ $tcp4 -eq 0 ] || { 676 echo_i "ns4 $tcp4 expected 0" 677 ret=1 678 } 679 if [ $ret != 0 ]; then echo_i "failed"; fi 680 status=`expr $status + $ret` 681 682 echo_i "checking AUTH_QUERY message counts" 683 ret=0 684 [ $aq4 -eq 0 ] || { 685 echo_i "ns4 $aq4 expected 0" 686 ret=1 687 } 688 if [ $ret != 0 ]; then echo_i "failed"; fi 689 status=`expr $status + $ret` 690 691 echo_i "checking AUTH_RESPONSE message counts" 692 ret=0 693 [ $ar4 -eq 0 ] || { 694 echo_i "ns4 $ar4 expected 0" 695 ret=1 696 } 697 if [ $ret != 0 ]; then echo_i "failed"; fi 698 status=`expr $status + $ret` 699 700 echo_i "checking CLIENT_QUERY message counts" 701 ret=0 702 [ $cq4 -eq 1 ] || { 703 echo_i "ns4 $cq4 expected 1" 704 ret=1 705 } 706 if [ $ret != 0 ]; then echo_i "failed"; fi 707 status=`expr $status + $ret` 708 709 echo_i "checking CLIENT_RESPONSE message counts" 710 ret=0 711 [ $cr4 -eq 1 ] || { 712 echo_i "ns4 $cr4 expected 1" 713 ret=1 714 } 715 if [ $ret != 0 ]; then echo_i "failed"; fi 716 status=`expr $status + $ret` 717 718 echo_i "checking RESOLVER_QUERY message counts" 719 ret=0 720 [ $rq4 -eq 0 ] || { 721 echo_i "ns4 $rq4 expected 0" 722 ret=1 723 } 724 if [ $ret != 0 ]; then echo_i "failed"; fi 725 status=`expr $status + $ret` 726 727 echo_i "checking RESOLVER_RESPONSE message counts" 728 ret=0 729 [ $rr4 -eq 0 ] || { 730 echo_i "ns4 $rr4 expected 0" 731 ret=1 732 } 733 734 echo_i "checking UPDATE_QUERY message counts" 735 ret=0 736 [ $uq4 -eq 0 ] || { 737 echo_i "ns4 $uq4 expected 0" 738 ret=1 739 } 740 if [ $ret != 0 ]; then echo_i "failed"; fi 741 status=`expr $status + $ret` 742 743 echo_i "checking UPDATE_RESPONSE message counts" 744 ret=0 745 [ $ur4 -eq 0 ] || { 746 echo_i "ns4 $ur4 expected 0" 747 ret=1 748 } 749 if [ $ret != 0 ]; then echo_i "failed"; fi 750 status=`expr $status + $ret` 751 fi 752 753 echo_i "checking large packet printing" 754 ret=0 755 # Expect one occurrence of "opcode: QUERY" below "reponse_message_data" and 756 # another one below "response_message". 757 lines=`$DNSTAPREAD -y large-answer.fstrm | grep -c "opcode: QUERY"` 758 [ $lines -eq 2 ] || ret=1 759 if [ $ret != 0 ]; then echo_i "failed"; fi 760 status=`expr $status + $ret` 761 762 test_dnstap_roll() ( 763 ip="$1" 764 ns="$2" 765 n="$3" 766 $RNDCCMD -s "${ip}" dnstap -roll "${n}" | sed "s/^/${ns} /" | cat_i && 767 files=$(find "$ns" -name "dnstap.out.[0-9]" | wc -l) && 768 test "$files" -le "${n}" && test "$files" -ge "1" 769 ) 770 771 echo_i "checking 'rndc -roll <value>' (no versions)" 772 ret=0 773 start_server --noclean --restart --port "${PORT}" dnstap ns3 774 _repeat 5 test_dnstap_roll 10.53.0.3 ns3 3 || ret=1 775 if [ $ret != 0 ]; then echo_i "failed"; fi 776 status=$((status+ret)) 777 778 echo_i "checking 'rndc -roll <value>' (versions)" 779 ret=0 780 start_server --noclean --restart --port "${PORT}" dnstap ns2 781 _repeat 5 test_dnstap_roll 10.53.0.2 ns2 3 || ret=1 782 if [ $ret != 0 ]; then echo_i "failed"; fi 783 status=$((status+ret)) 784 785 echo_i "exit status: $status" 786 [ "$status" -eq 0 ] || exit 1 787