Whamcloud - gitweb
LU-734 tests: save recovery-*-scale debug logs into $LOGDIR
[fs/lustre-release.git] / lustre / tests / run_IOR.sh
1 #!/bin/bash
2 set -x
3
4 TMP=${TMP:-/tmp}
5
6 TESTLOG_PREFIX=${TESTLOG_PREFIX:-$TMP/recovery-mds-scale}
7 LOG=$TESTLOG_PREFIX.$(basename $0 .sh)_stdout.$(hostname -s).log
8 DEBUGLOG=$(echo $LOG | sed 's/\(.*\)stdout/\1debug/')
9
10 mkdir -p ${LOG%/*}
11
12 rm -f $LOG $DEBUGLOG
13 exec 2>$DEBUGLOG
14
15 . $(dirname $0)/functions.sh
16
17 IOR=${IOR:-"$(which IOR)"}
18
19 assert_env MOUNT END_RUN_FILE LOAD_PID_FILE IOR
20
21 trap signaled TERM
22
23 # if MACHINEFILE set and exists -- use it
24 if [ -z $MACHINEFILE ] || [ ! -e $MACHINEFILE ]; then
25     MACHINEFILE=$TMP/$(basename $0)-$(hostname).machines
26     echo $(hostname) >$MACHINEFILE
27 fi
28
29 THREADS_PER_CLIENT=${THREADS_PER_CLIENT:-3}
30 NUM_CLIENTS=$(cat $MACHINEFILE | wc -l)
31
32 # recovery-*-scale scripts use this to signal the client loads to die
33 echo $$ >$LOAD_PID_FILE
34
35 TESTDIR=${TESTDIR:-$MOUNT/d0.ior-$(hostname)}
36
37 CONTINUE=true
38 while [ ! -e "$END_RUN_FILE" ] && $CONTINUE; do
39     echoerr "$(date +'%F %H:%M:%S'): IOR run starting"
40     mkdir -p $TESTDIR
41     # need this only if TESTDIR is not default
42     chmod -R 777 $TESTDIR
43
44     mpi_run -np $((NUM_CLIENTS * THREADS_PER_CLIENT)) -machinefile ${MACHINEFILE} \
45         $IOR -a POSIX -b 1g -o $TESTDIR/IOR-file -s 1 -t 1m -v -w -r 1>$LOG &
46     load_pid=$!
47     wait $load_pid
48     if [ ${PIPESTATUS[0]} -eq 0 ]; then
49         echoerr "$(date +'%F %H:%M:%S'): IOR succeeded"
50         cd $TMP
51         rm -rf $TESTDIR
52         echoerr "$(date +'%F %H:%M:%S'): IOR run finished"
53     else
54         echoerr "$(date +'%F %H:%M:%S'): IOR 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'): IOR run exiting"