diff --git a/bin/tests/system/dnstap/tests.sh b/bin/tests/system/dnstap/tests.sh index e340551bbf..b9c3126d0d 100644 --- a/bin/tests/system/dnstap/tests.sh +++ b/bin/tests/system/dnstap/tests.sh @@ -17,6 +17,24 @@ RNDCCMD="$RNDC -p ${CONTROLPORT} -c ../common/rndc.conf" status=0 +# dnstap_data_ready +# Flushes capture_file and checks wheter its size is >= min_file_size. +dnstap_data_ready() { + # Process id of running fstrm_capture. + fstrm_capture_pid=$1 + # Output file provided to fstrm_capture via -w switch. + capture_file=$2 + # Minimum expected file size. + min_size_expected=$3 + + kill -HUP $fstrm_capture_pid + file_size=`wc -c < "$capture_file" | tr -d ' '` + if [ $file_size -lt $min_size_expected ]; then + return 1 + fi +} + + for bad in bad-*.conf do ret=0 @@ -537,6 +555,7 @@ EOF echo_i "checking unix socket message counts" sleep 2 + retry_quiet 5 dnstap_data_ready $fstrm_capture_pid dnstap.out 470 kill $fstrm_capture_pid wait udp4=`$DNSTAPREAD dnstap.out | grep "UDP " | wc -l` @@ -648,6 +667,7 @@ EOF echo_i "checking reopened unix socket message counts" sleep 2 + retry_quiet 5 dnstap_data_ready $fstrm_capture_pid dnstap.out 270 kill $fstrm_capture_pid wait udp4=`$DNSTAPREAD dnstap.out | grep "UDP " | wc -l`