Whamcloud - gitweb
216e56fded04c6b4d3aebe8dfe3c79fc8d5fa747
[fs/lustre-release.git] / lustre / tests / racer / racer.sh
1 #!/bin/bash
2 #set -x
3
4 MAX_FILES=${MAX_FILES:-20}
5 DIR=${DIR:-$1}
6 DIR=${DIR:-"/mnt/lustre/racer"}
7 DURATION=${DURATION:-$((60*5))}
8
9 NUM_THREADS=${NUM_THREADS:-$2}
10 NUM_THREADS=${NUM_THREADS:-3}
11
12 mkdir -p $DIR
13
14 RACER_PROGS="file_create dir_create file_rm file_rename file_link file_symlink \
15 file_list file_concat file_exec"
16
17 racer_cleanup()
18 {
19         echo "racer cleanup"
20         for P in $RACER_PROGS; do
21                 killall $P.sh
22         done
23         trap 0
24
25         local TOT_WAIT=0
26         local MAX_WAIT=$DURATION
27         local SHORT_WAIT=5
28
29         local rc
30         while [[ $TOT_WAIT -le $MAX_WAIT ]]; do
31                 rc=0
32                 echo sleeping $SHORT_WAIT sec ...
33                 sleep $SHORT_WAIT
34                 # this only checks whether processes exist
35                 for P in $RACER_PROGS; do
36                         killall -0 $P.sh
37                         [[ $? -eq 0 ]] && (( rc+=1 ))
38                 done
39                 if [[ $rc -eq 0 ]]; then
40                         echo there should be NO racer processes:
41                         ps aux | grep -E "${RACER_PROGS// /|}"
42                         return 0
43                 fi
44                 echo -n "Waited $(( TOT_WAIT + SHORT_WAIT)), rc=$rc "
45                 (( SHORT_WAIT+=SHORT_WAIT ))
46                 (( TOT_WAIT+=SHORT_WAIT ))
47         done
48         ps aux | grep -E "${RACER_PROGS// /|}"
49         return 1
50 }
51
52 RC=0
53
54 echo "Running $0 for $DURATION seconds. CTRL-C to exit"
55 trap "
56         echo \"Cleaning up\" 
57         racer_cleanup
58         exit 0
59 " INT TERM
60
61 cd `dirname $0`
62 for N in `seq 1 $NUM_THREADS`; do
63         for P in $RACER_PROGS; do
64                 ./$P.sh $DIR $MAX_FILES &
65         done
66 done
67
68 sleep $DURATION
69 racer_cleanup || RC=$?
70
71 # Check our to see whether our test DIR is still available.
72 df $DIR
73 (( RC+=$? ))
74 if [ $RC -eq 0 ]; then
75     echo "We survived $0 for $DURATION seconds."
76 fi
77 exit $RC