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