Whamcloud - gitweb
LU-14475 log: Rewrite some log messages
[fs/lustre-release.git] / lustre / tests / racer.sh
1 #!/bin/bash
2 set -e
3
4 ONLY=${ONLY:-"$*"}
5
6 LUSTRE=${LUSTRE:-$(dirname $0)/..}
7 . $LUSTRE/tests/test-framework.sh
8 init_test_env $@
9 init_logging
10
11 build_test_filter
12
13 racer=$LUSTRE/tests/racer/racer.sh
14 echo racer: $racer with $MDSCOUNT MDTs
15
16 if [ "$SLOW" = "no" ]; then
17         DURATION=${DURATION:-300}
18 else
19         DURATION=${DURATION:-900}
20 fi
21 MOUNT_2=${MOUNT_2:-"yes"}
22
23 check_and_setup_lustre
24
25 CLIENTS=${CLIENTS:-$HOSTNAME}
26 RACERDIRS=${RACERDIRS:-"$DIR $DIR2"}
27 echo RACERDIRS=$RACERDIRS
28
29 RACER_FAILOVER=${RACER_FAILOVER:-false}
30 FAIL_TARGETS=${FAIL_TARGETS:-"MDS OST"}
31 RACER_FAILOVER_PERIOD=${RACER_FAILOVER_PERIOD:-60}
32
33 if $RACER_FAILOVER; then
34         declare -a  victims
35         for target in $FAIL_TARGETS; do
36                 victims=(${victims[@]} $(get_facets $target))
37         done
38         echo Victim facets ${victims[@]}
39 fi
40
41 if ((MDSCOUNT > 1)); then
42         (( $MDS1_VERSION >= $(version_code 2.5.0) )) &&
43                 RACER_ENABLE_REMOTE_DIRS=${RACER_ENABLE_REMOTE_DIRS:-true}
44         (( $MDS1_VERSION >= $(version_code 2.8.0) )) &&
45                 RACER_ENABLE_STRIPED_DIRS=${RACER_ENABLE_STRIPED_DIRS:-true}
46         (( $MDS1_VERSION >= $(version_code 2.13.57) )) &&
47                 RACER_ENABLE_MIGRATION=${RACER_ENABLE_MIGRATION:-true}
48 fi
49
50 [[ "$MDS1_VERSION" -lt $(version_code 2.9.54) || $mgs_FSTYPE != zfs ]] &&
51         RACER_ENABLE_SNAPSHOT=false
52
53 (( "$MDS1_VERSION" <= $(version_code 2.9.55) )) &&
54         RACER_ENABLE_PFL=false
55
56 (( "$MDS1_VERSION" <= $(version_code 2.10.53) )) &&
57         RACER_ENABLE_DOM=false
58
59 (( "$MDS1_VERSION" < $(version_code 2.10.55) )) &&
60         RACER_ENABLE_FLR=false
61
62 (( $MDS1_VERSION < $(version_code 2.12.0) )) &&
63         RACER_ENABLE_SEL=false
64
65 RACER_ENABLE_REMOTE_DIRS=${RACER_ENABLE_REMOTE_DIRS:-false}
66 RACER_ENABLE_STRIPED_DIRS=${RACER_ENABLE_STRIPED_DIRS:-false}
67 RACER_ENABLE_MIGRATION=${RACER_ENABLE_MIGRATION:-false}
68 RACER_ENABLE_SNAPSHOT=${RACER_ENABLE_SNAPSHOT:-true}
69 RACER_ENABLE_PFL=${RACER_ENABLE_PFL:-true}
70 RACER_ENABLE_DOM=${RACER_ENABLE_DOM:-true}
71 RACER_ENABLE_FLR=${RACER_ENABLE_FLR:-true}
72 RACER_ENABLE_SEL=${RACER_ENABLE_SEL:-true}
73 RACER_EXTRA_LAYOUT=${RACER_EXTRA_LAYOUT:-""}
74
75 fail_random_facet () {
76         local facets=${victims[@]}
77         facets=${facets// /,}
78
79         sleep $RACER_FAILOVER_PERIOD
80         while [ ! -f $racer_done ]; do
81                 local facet=$(get_random_entry $facets)
82                 facet_failover $facet
83                 sleep $RACER_FAILOVER_PERIOD
84         done
85 }
86
87 # run racer
88 test_1() {
89         local rrc=0
90         local rc=0
91         local clients=$CLIENTS
92         local RDIRS
93         local i
94         local racer_done=$TMP/racer_done
95
96         rm -f $racer_done
97
98         for d in ${RACERDIRS}; do
99                 is_mounted $d || continue
100
101                 RDIRS="$RDIRS $d/racer"
102                 mkdir -p $d/racer
103                 if [[ -n "$RACER_EXTRA_LAYOUT" ]]; then
104                         $LFS setstripe $d/racer $RACER_EXTRA_LAYOUT ||
105                         error "setstripe $RACER_EXTRA_LAYOUT failed"
106                 fi
107                 if [ $MDSCOUNT -ge 2 ]; then
108                         for i in $(seq $((MDSCOUNT - 1))); do
109                                 RDIRS="$RDIRS $d/racer$i"
110                                 if [ ! -e $d/racer$i ]; then
111                                         $LFS mkdir -i $i $d/racer$i ||
112                                                 error "lfs mkdir $i failed"
113                                 fi
114                                 if [[ -n "$RACER_EXTRA_LAYOUT" ]]; then
115                                         $LFS setstripe $d/racer$i \
116                                                 $RACER_EXTRA_LAYOUT ||
117                                         error "setstripe \
118                                                 $RACER_EXTRA_LAYOUT failed"
119                                 fi
120                         done
121                 fi
122         done
123
124         local rpids=""
125         for rdir in $RDIRS; do
126                 do_nodes $clients "DURATION=$DURATION \
127                         MDSCOUNT=$MDSCOUNT OSTCOUNT=$OSTCOUNT\
128                         RACER_ENABLE_REMOTE_DIRS=$RACER_ENABLE_REMOTE_DIRS \
129                         RACER_ENABLE_STRIPED_DIRS=$RACER_ENABLE_STRIPED_DIRS \
130                         RACER_ENABLE_MIGRATION=$RACER_ENABLE_MIGRATION \
131                         RACER_ENABLE_PFL=$RACER_ENABLE_PFL \
132                         RACER_ENABLE_DOM=$RACER_ENABLE_DOM \
133                         RACER_ENABLE_FLR=$RACER_ENABLE_FLR \
134                         RACER_MAX_CLEANUP_WAIT=$RACER_MAX_CLEANUP_WAIT \
135                         RACER_ENABLE_SEL=$RACER_ENABLE_SEL \
136                         RACER_EXTRA=$RACER_EXTRA \
137                         RACER_EXTRA_LAYOUT=\\\"$RACER_EXTRA_LAYOUT\\\" \
138                         RACER_PROGS=$RACER_PROGS \
139                         NUM_THREADS=$NUM_THREADS \
140                         MAX_FILES=$MAX_FILES \
141                         LFS=$LFS \
142                         LCTL=$LCTL \
143                         $racer $rdir $NUM_RACER_THREADS" &
144                 pid=$!
145                 rpids="$rpids $pid"
146         done
147
148         local failpid=""
149         if $RACER_FAILOVER; then
150                 fail_random_facet &
151                 failpid=$!
152                 echo racers failpid: $failpid
153         fi
154
155         local lss_pids=""
156         if $RACER_ENABLE_SNAPSHOT; then
157                 lss_gen_conf
158
159                 $LUSTRE/tests/racer/lss_create.sh &
160                 pid=$!
161                 lss_pids="$lss_pids $pid"
162
163                 $LUSTRE/tests/racer/lss_destroy.sh &
164                 pid=$!
165                 lss_pids="$lss_pids $pid"
166         fi
167
168         echo racers pids: $rpids
169         for pid in $rpids; do
170                 wait $pid
171                 rc=$?
172                 echo "pid=$pid rc=$rc"
173                 if [ $rc != 0 ]; then
174                     rrc=$((rrc + 1))
175                 fi
176         done
177
178         if $RACER_FAILOVER; then
179                 touch $racer_done
180                 wait $failpid
181                 rrc=$((rrc + $?))
182         fi
183
184         if $RACER_ENABLE_SNAPSHOT; then
185                 killall -q lss_create.sh
186                 killall -q lss_destroy.sh
187
188                 for pid in $lss_pids; do
189                         wait $pid
190                 done
191
192                 lss_cleanup
193         fi
194
195         return $rrc
196 }
197 run_test 1 "racer on clients: ${CLIENTS:-$(hostname)} DURATION=$DURATION"
198
199 complete $SECONDS
200 check_and_cleanup_lustre
201 exit_status