1#!/bin/bash 2 3if [ -z "$1" -o -z "$2" ] ; then 4 echo "required args missing" 5 exit 1 6fi 7 8IDX=$3 9TOT=$4 10MYTEST=`echo $0 | sed "s/\/[^\/]*\$//g" |sed "s/.*\///g"` 11mkdir -p $2/$MYTEST 12rm -f $2/$MYTEST/*.log $2/$MYTEST/*.result 13FAILS=0 14WHICH=$IDX 15SPID= 16SCRIPT_DIR=`dirname $0` 17SCRIPT_DIR=`readlink -f $SCRIPT_DIR` 18LOGPATH=$2 19 20feedback() { 21 if [ "$2" != "$4" ] ; then 22 FAILS=$(( $FAILS + 1 )) 23 echo -n -e "\e[31m" 24 fi 25 T=" --- killed --- " 26 if [ ! -z "`cat $LOGPATH/$MYTEST/$3.time`" ] ; then 27 T="`cat $LOGPATH/$MYTEST/$3.time | grep real | sed "s/.*\ //g"`" 28 T="$T `cat $LOGPATH/$MYTEST/$3.time | grep user | sed "s/.*\ //g"`" 29 T="$T `cat $LOGPATH/$MYTEST/$3.time | grep sys | sed "s/.*\ //g"`" 30 fi 31 printf "%-35s [ %3s/%3s ]: %3s : %8s : %s\n" $1 $WHICH $TOT $2 "$T" $3 32 if [ "$2" != "0" ] ; then 33 echo -n -e "\e[0m" 34 fi 35 WHICH=$(( $WHICH + 1)) 36} 37 38spawn() { 39 if [ ! -z "$1" ] ; then 40 if [ `ps $1 | wc -l` -eq 2 ]; then 41# echo "prerequisite still up" 42 return 0 43 fi 44 fi 45 46 QQ=`pwd` 47 cd $SCRIPT_DIR 48 cd $2 49 $3 $4 $5 > $LOGPATH/$MYTEST/serverside.log 2> $LOGPATH/$MYTEST/serverside.log & 50 SPID=$! 51 cd $QQ 52 sleep 0.5s 53# echo "launched prerequisite $SPID" 54} 55 56_dotest() { 57 EXPRES=0 58 if [ ! -z "$4" ] ; then 59 EXPRES=$4 60 fi 61 T=$3 62# echo "$1/lws-$MYTEST $5 $6 $7 $8 $9 ${10} ${11} ${12} ${13} ${14}" 63 ( 64 { 65 /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 ; 66 echo $? > $2/$MYTEST/$T.result 67 } 2> $2/$MYTEST/$T.time >/dev/null 68 ) >/dev/null 2> /dev/null & 69 W=$! 70 WT=0 71 while [ $WT -le 820 ] ; do 72 kill -0 $W 2>/dev/null 73 if [ $? -ne 0 ] ; then 74 WT=10000 75 else 76 if [ $WT -ge 800 ] ; then 77 WT=10000 78 kill $W 2>/dev/null 79 wait $W 2>/dev/null 80 fi 81 fi 82 sleep 0.1s 83 WT=$(( $WT + 1 )) 84 done 85 86 R=254 87 if [ -e $2/$MYTEST/$T.result ] ; then 88 R=`cat $2/$MYTEST/$T.result` 89 cat $2/$MYTEST/$T.log | tail -n 3 > $2/$MYTEST/$T.time 90 if [ $R -ne $EXPRES ] ; then 91 pwd 92 echo Expected result $EXPRES but got $R 93 echo 94 cat $2/$MYTEST/$T.log 95 echo 96 fi 97 fi 98 99 feedback $MYTEST $R $T $EXPRES 100} 101 102dotest() 103{ 104 _dotest $1 $2 $3 0 "$4" "$5" "$6" "$7" "$8" "$9" "${10}" "${11}" "${12}" "${13}" 105} 106 107dofailtest() 108{ 109 _dotest $1 $2 $3 1 $4 $5 $6 $7 $8 $9 ${10} ${11} ${12} ${13} 110} 111