You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
111 lines
2.2 KiB
111 lines
2.2 KiB
#!/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}
|
|
}
|