5 LUSTRE=${LUSTRE:-$(cd $(dirname $0)/..; echo $PWD)}
6 . $LUSTRE/tests/test-framework.sh
8 . ${CONFIG:=$LUSTRE/tests/cfg/$NAME.sh}
10 racer=`which racer.sh`
11 [ -z "$racer" ] && echo racer is not installed && exit 1
13 CLIENTS=${CLIENTS:-$HOSTNAME}
16 DURATION=${DURATION:-120}
21 sleep $1 && kill -s ALRM $$ &
23 echo TIMERPID=$TIMERPID
34 echo "DOING RACER CLEANUP ... "
36 # Check if all processes are killed
38 local clients=$CLIENTS
40 # 1.Let chance to racer to kill all it's processes
41 # FIXME: not sure how long does it take for racer to kill all processes
42 # 80 is sometimes are enough for 2 clients; sometimes it takes more than 150 sec
43 while [ $WAIT -lt 90 ]; do
44 running=$(do_nodes $clients "ps uax | grep $RDIR " | egrep -v "(acceptance|grep|pdsh|bash)" || true)
45 [ -z "$running" ] && rc=0 && break
46 echo "clients $clients are still running the racer processes. Waited $WAIT secs"
49 [ $INTERVAL -lt 40 ] && INTERVAL=$((INTERVAL + INTERVAL))
51 WAIT=$((WAIT + INTERVAL))
54 # 2. Kill the remaining processes
55 if [ $rc -ne 0 ]; then
56 for C in ${clients//,/ } ; do
57 pids=$(do_node $C "ps uax | grep $RDIR " | egrep -v "(acceptance|grep|PATH)" | awk '{print $2}' || true)
58 if [ ! -z "$pids" ]; then
59 echo "client $C still running racer processes after $WAIT seconds. Killing $pids"
60 do_node $C "ps uax | grep $RDIR " | egrep -v "(acceptance|grep|PATH)"
61 do_node $C kill -TERM $pids || true
62 # let processes to be killed
64 # 3. Check if the processes were killed
65 # exit error if the processes still exist
67 do_node $C "ps -P $pid" && RC=1 || true
70 echo "All processes on client $C exited after $WAIT seconds. OK."
74 echo "No racer processes running after $WAIT seconds. OK."
75 wait_remote_prog $racer 10
80 if [ "$timeout" == "timeout" ]; then
81 echo $timeout killing RACERPID=$RACERPID
82 kill $RACERPID || true
83 sleep 2 # give chance racer to kill it's processes
86 echo "Racer completed before DURATION=$DURATION expired. Cleaning up..."
95 echo "$0: completed $RC"
100 log "Start racer on clients: $CLIENTS DURATION=$DURATION"
103 trap racer_timeout ALRM
105 timer_on $((DURATION + 5))
107 do_nodes $CLIENTS "DURATION=$DURATION $racer $RDIR" &
109 echo RACERPID=$RACERPID
110 wait $RACERPID || RC=2
112 echo "$0: completed $RC"