1#!/bin/sh 2# test average shannon entropy calculation for multiple documents 3# (verification is more accurate with identical mails) 4 5PATH=/bin:/usr/bin 6DBACL=$TESTBIN/dbacl 7 8prerequisite_command() { 9 type $2 2>&1 > /dev/null 10 if [ 0 -ne $? ]; then 11 echo "$1: $2 not found, test will be skipped" 12 exit 77 13 fi 14} 15 16prerequisite_command $0 formail 17prerequisite_command $0 grep 18prerequisite_command $0 awk 19prerequisite_command $0 tr 20 21DBACL_PATH="`pwd`/`basename $0 .sh`_`date +"%Y%m%dT%H%M%S"`" 22export DBACL_PATH 23 24mkdir "$DBACL_PATH" 25 26(echo ; echo "From - -" ; cat ${sourcedir}/sample.spam-1 ; \ 27 echo ; echo "From - -" ; cat ${sourcedir}/sample.spam-1 ; \ 28 echo ; echo "From - -" ; cat ${sourcedir}/sample.spam-1 ; \ 29 echo ; echo "From - -" ; cat ${sourcedir}/sample.spam-1 ; ) \ 30 > "$DBACL_PATH/mbox" 31 32cat $DBACL_PATH/mbox \ 33 | $DBACL -l dummy -T email -X -d \ 34 | grep '# shannon' \ 35 | awk '{print $3/log(2)}' \ 36 | tr '\n' ' ' \ 37 > "$DBACL_PATH/out1" 38 39cat $DBACL_PATH/mbox \ 40 | formail -s $DBACL -c dummy -vX \ 41 | awk '{d += $3; e += $5} END{print (d/4), (e/4)}' \ 42 | tr '\n' ' ' \ 43 > "$DBACL_PATH/out2" 44 45echo "`cat \"$DBACL_PATH/out1\"` `cat \"$DBACL_PATH/out2\"`" \ 46 | awk ' 47function abs(x) { return (x >= 0) ? x : -x } 48{ 49 # must invert exit value 50 exit !( abs($1 - $3) < (0.15/2.0) * ($1 + $3) ) 51}' 52 53RESULT=$? 54rm -rf "$DBACL_PATH" 55 56exit $RESULT