From: Diego Fronza Date: Thu, 1 Oct 2020 17:04:05 +0000 (-0300) Subject: Fix dnstap system test on FreeBSD X-Git-Tag: v9.17.7~53^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d934513c42fc25be10804fb55bbea4ccdeeb8e7f;p=thirdparty%2Fbind9.git Fix dnstap system test on FreeBSD This commit ensures that dnstap output files captured by fstrm_capture are properly flushed before any attempt on reading them with dnstap-read is done. By reading fstrm-capture source code it was noticed that signal SIGHUP is used to flush the capture file. --- diff --git a/bin/tests/system/dnstap/tests.sh b/bin/tests/system/dnstap/tests.sh index 5f237d7a383..ceaf30df5f7 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`