Whamcloud - gitweb
b=17839
[fs/lustre-release.git] / lustre / tests / run_dbench.sh
1 #!/bin/bash
2 set -x
3
4 TMP=${TMP:-/tmp}
5
6 TESTSUITELOG=${TESTSUITELOG:-$TMP/recovery-mds-scale}
7 LOG=${TESTSUITELOG}_$(basename $0)-$(hostname)
8 DEBUGLOG=${LOG}.debug
9
10 mkdir -p ${LOG%/*}
11
12 rm -f $LOG $DEBUGLOG
13 exec 2>$DEBUGLOG
14
15 if [ -z "$MOUNT" -o -z "$END_RUN_FILE" -o -z "$LOAD_PID_FILE" ]; then
16     echo "The following must be set: MOUNT END_RUN_FILE LOAD_PID_FILE"
17     exit 1
18 fi
19
20 echoerr () { echo "$@" 1>&2 ; }
21
22 signaled() {
23     trap 0
24     echoerr "$(date +'%F %H:%M:%S'): client load was signaled to terminate"
25     kill  $load_pid 
26     kill -TERM -$PPID
27     sleep 5
28     kill -KILL -$PPID
29 }
30
31 trap signaled TERM
32
33 # recovery-mds-scale uses this to signal the client loads to die
34 echo $$ >$LOAD_PID_FILE
35
36 TESTDIR=$MOUNT/dbench-$(hostname)
37
38 CONTINUE=true
39
40 while [ ! -e "$END_RUN_FILE" ] && $CONTINUE; do
41     echoerr "$(date +'%F %H:%M:%S'): dbench run starting"
42
43     mkdir -p $TESTDIR
44     rundbench -D $TESTDIR 2 1>$LOG &
45     load_pid=$!
46
47     wait $load_pid
48     if [ ${PIPESTATUS[0]} -eq 0 ]; then
49         echoerr "$(date +'%F %H:%M:%S'): dbench succeeded"
50         cd $TMP
51         rm -rf $TESTDIR
52         echoerr "$(date +'%F %H:%M:%S'): dbench run finished"
53     else
54         echoerr "$(date +'%F %H:%M:%S'): dbench failed"
55         if [ -z "$ERRORS_OK" ]; then
56             echo $(hostname) >> $END_RUN_FILE
57         fi
58         if [ $BREAK_ON_ERROR ]; then
59             # break
60             CONTINUE=false
61         fi
62     fi
63 done
64
65 echoerr "$(date +'%F %H:%M:%S'): dbench run exiting"