| #!/bin/bash |
| |
| if [ -z "$1" -o -z "$2" ] ; then |
| echo "required args missing" |
| exit 1 |
| fi |
| |
| IDX=$3 |
| TOT=$4 |
| MYTEST=`echo $0 | sed "s/\/[^\/]*\$//g" |sed "s/.*\///g"` |
| mkdir -p $2/$MYTEST |
| rm -f $2/$MYTEST/*.log $2/$MYTEST/*.result |
| FAILS=0 |
| WHICH=$IDX |
| SPID= |
| SCRIPT_DIR=`dirname $0` |
| SCRIPT_DIR=`readlink -f $SCRIPT_DIR` |
| LOGPATH=$2 |
| |
| feedback() { |
| if [ "$2" != "$4" ] ; then |
| FAILS=$(( $FAILS + 1 )) |
| echo -n -e "\e[31m" |
| fi |
| T=" --- killed --- " |
| if [ ! -z "`cat $LOGPATH/$MYTEST/$3.time`" ] ; then |
| T="`cat $LOGPATH/$MYTEST/$3.time | grep real | sed "s/.*\ //g"`" |
| T="$T `cat $LOGPATH/$MYTEST/$3.time | grep user | sed "s/.*\ //g"`" |
| T="$T `cat $LOGPATH/$MYTEST/$3.time | grep sys | sed "s/.*\ //g"`" |
| fi |
| printf "%-35s [ %3s/%3s ]: %3s : %8s : %s\n" $1 $WHICH $TOT $2 "$T" $3 |
| if [ "$2" != "0" ] ; then |
| echo -n -e "\e[0m" |
| fi |
| WHICH=$(( $WHICH + 1)) |
| } |
| |
| spawn() { |
| if [ ! -z "$1" ] ; then |
| if [ `ps $1 | wc -l` -eq 2 ]; then |
| # echo "prerequisite still up" |
| return 0 |
| fi |
| fi |
| |
| QQ=`pwd` |
| cd $SCRIPT_DIR |
| cd $2 |
| $3 $4 $5 > $LOGPATH/$MYTEST/serverside.log 2> $LOGPATH/$MYTEST/serverside.log & |
| SPID=$! |
| cd $QQ |
| sleep 0.5s |
| # echo "launched prerequisite $SPID" |
| } |
| |
| _dotest() { |
| EXPRES=0 |
| if [ ! -z "$4" ] ; then |
| EXPRES=$4 |
| fi |
| T=$3 |
| # echo "$1/lws-$MYTEST $5 $6 $7 $8 $9 ${10} ${11} ${12} ${13} ${14}" |
| ( |
| { |
| /usr/bin/time -p /usr/bin/valgrind -q $1/lws-$MYTEST $5 $6 $7 $8 $9 ${10} ${11} ${12} ${13} ${14} > $2/$MYTEST/$T.log 2> $2/$MYTEST/$T.log ; |
| echo $? > $2/$MYTEST/$T.result |
| } 2> $2/$MYTEST/$T.time >/dev/null |
| ) >/dev/null 2> /dev/null & |
| W=$! |
| WT=0 |
| while [ $WT -le 820 ] ; do |
| kill -0 $W 2>/dev/null |
| if [ $? -ne 0 ] ; then |
| WT=10000 |
| else |
| if [ $WT -ge 800 ] ; then |
| WT=10000 |
| kill $W 2>/dev/null |
| wait $W 2>/dev/null |
| fi |
| fi |
| sleep 0.1s |
| WT=$(( $WT + 1 )) |
| done |
| |
| R=254 |
| if [ -e $2/$MYTEST/$T.result ] ; then |
| R=`cat $2/$MYTEST/$T.result` |
| cat $2/$MYTEST/$T.log | tail -n 3 > $2/$MYTEST/$T.time |
| if [ $R -ne $EXPRES ] ; then |
| pwd |
| echo Expected result $EXPRES but got $R |
| echo |
| cat $2/$MYTEST/$T.log |
| echo |
| fi |
| fi |
| |
| feedback $MYTEST $R $T $EXPRES |
| } |
| |
| dotest() |
| { |
| _dotest $1 $2 $3 0 "$4" "$5" "$6" "$7" "$8" "$9" "${10}" "${11}" "${12}" "${13}" |
| } |
| |
| dofailtest() |
| { |
| _dotest $1 $2 $3 1 $4 $5 $6 $7 $8 $9 ${10} ${11} ${12} ${13} |
| } |