• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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