diff --git a/bin/tests/system/dnstap/tests.sh b/bin/tests/system/dnstap/tests.sh index 5f237d7a38..ceaf30df5f 100644 --- a/bin/tests/system/dnstap/tests.sh +++ b/bin/tests/system/dnstap/tests.sh @@ -16,6 +16,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 @@ -536,6 +554,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` @@ -647,6 +666,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`