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