#!/bin/sh

READER="../example/ndpiReader -p ../example/protos.txt -c ../example/categories.txt"

RC=0
PCAPS=`cd pcap; /bin/ls *.pcap`

build_results() {
    for f in $PCAPS; do 
	#echo $f
	# create result files if not present
	if [ ! -f result/$f.out ]; then
	    CMD="$READER -q -i pcap/$f -w result/$f.out -v 2"
	    $CMD 
	fi
	# test fuzz target built with sanitizer on input from corpus
	if [ -f ../fuzz/fuzz_ndpi_reader ]; then
		../fuzz/fuzz_ndpi_reader pcap/$f
	fi
    done
}

check_results() {
    for f in $PCAPS; do 
	if [ -f result/$f.out ]; then
	    CMD="$READER -q -i pcap/$f -w /tmp/reader.out -v 2"
	    $CMD
	    NUM_DIFF=`diff result/$f.out /tmp/reader.out | wc -l`
	    
	    if [ $NUM_DIFF -eq 0 ]; then
		printf "%-32s\tOK\n" "$f"
	    else
		printf "%-32s\tERROR\n" "$f"
		echo "$CMD"
		diff result/$f.out /tmp/reader.out
		RC=1
	    fi

	    /bin/rm /tmp/reader.out
	fi
    done
}

build_results
check_results

exit $RC