From dada4c5a55de3984e596468a163cedc4d5ac5189 Mon Sep 17 00:00:00 2001 From: Pau Espin Pedrol Date: Thu, 15 Feb 2018 16:07:23 +0100 Subject: ttcn3-tcpdump-stop.sh: Wait to receive last packets before stopping tcpdump There's a time delay between packets are sent through the system and tcpdump reads, buffers and stores them into the pcap file. We need to give it more time to process everything before killing it, otherwise last (or all) packets from the test are not captured. Change-Id: I240d8f1bdb2ca6ad353e60ef15937dc2bd4cbebd --- ttcn3-tcpdump-stop.sh | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'ttcn3-tcpdump-stop.sh') diff --git a/ttcn3-tcpdump-stop.sh b/ttcn3-tcpdump-stop.sh index 575c0eff..a085bf70 100755 --- a/ttcn3-tcpdump-stop.sh +++ b/ttcn3-tcpdump-stop.sh @@ -1,6 +1,25 @@ #!/bin/sh PIDFILE=/tmp/tcpdump.pid +TESTCASE=$1 + +if [ "z$TTCN3_PCAP_PATH" = "z" ]; then + TTCN3_PCAP_PATH=/tmp +fi + +# Wait for up to 2 seconds if we keep receiving traffinc from tcpdump, +# otherwise we might lose last packets from test. +i=0 +prev_count=-1 +count=$(stat --format="%s" "$TTCN3_PCAP_PATH/$TESTCASE.pcap") +while [ $count -gt $prev_count ] && [ $i -lt 2 ] +do + echo "Waiting for tcpdump to finish... $i (prev_count=$prev_count, count=$count)" + sleep 1 + prev_count=$count + count=$(stat --format="%s" "$TTCN3_PCAP_PATH/$TESTCASE.pcap") + i=$((i+1)) +done if [ -e $PIDFILE ]; then # NOTE: This requires you to be root or something like -- cgit v1.2.3