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
This commit is contained in:
Pau Espin 2018-02-15 16:07:23 +01:00 committed by Harald Welte
parent 8fdd3130fe
commit dada4c5a55
1 changed files with 19 additions and 0 deletions

View File

@ -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