X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Ftests%2Fha.sh;fp=lustre%2Ftests%2Fha.sh;h=d30424a33ae1347529999bb6e2d115e0197c639f;hp=13af59f76bd3431d04b60189ae29889414f49bf8;hb=d4bba4c239ce18d2955b5f39a0ea6bac2413d49f;hpb=ccac422cf9dd3b2390d1c70cd42eff06d2f53be3 diff --git a/lustre/tests/ha.sh b/lustre/tests/ha.sh index 13af59f..d30424a 100755 --- a/lustre/tests/ha.sh +++ b/lustre/tests/ha.sh @@ -223,6 +223,7 @@ declare ha_mdtest_params=${MDTESTP:-'" -i 1 -n 1000"'} declare ha_mpirun_options=${MPIRUN_OPTIONS:-""} declare ha_clients_stripe=${CLIENTSSTRIPE:-'"$STRIPEPARAMS"'} declare ha_nclientsset=${NCLIENTSSET:-1} +declare ha_ninstmustfail=${NINSTMUSTFAIL:-0} declare ha_racer_params=${RACERP:-"MDSCOUNT=1"} @@ -420,6 +421,7 @@ ha_repeat_mpi_load() local machines=$5 local stripeparams=$6 local mpiuser=$7 + local mustpass=$8 local tag=${ha_mpi_load_tags[$load]} local cmd=${ha_mpi_load_cmds[$tag]} local dir=$ha_test_dir/$client-$tag @@ -432,10 +434,12 @@ ha_repeat_mpi_load() cmd=${cmd//"{}"/$dir} cmd=${cmd//"{params}"/$parameter} + [[ -n "$ha_postcmd" ]] && ha_postcmd=${ha_postcmd//"{}"/$dir} ha_info "Starting $tag" machines="-machinefile $machines" while [ ! -e "$ha_stop_file" ] && ((rc == 0)); do + ha_info "$client Starts: $cmd" 2>&1 | tee -a $log { local mdt_index if $ha_mdt_index_random && [ $ha_mdt_index -ne 0 ]; then @@ -450,18 +454,32 @@ ha_repeat_mpi_load() ha_on $client chmod a+xwr $dir && ha_on $client "su $mpiuser sh -c \" $mpirun $ha_mpirun_options \ -np $((${#ha_clients[@]} * mpi_threads_per_client )) \ - $machines $cmd \" " && + $machines $cmd \" " || rc=$? + [[ -n "$ha_postcmd" ]] && ha_info "$ha_postcmd" && + ha_on $client $ha_postcmd >>"$log" 2>&1 + (( ((rc == 0)) && (( mustpass != 0 )) )) || + (( ((rc != 0)) && (( mustpass == 0 )) )) && ha_on $client rm -rf "$dir"; } >>"$log" 2>&1 || rc=$? - ha_info rc=$rc - - if ((rc != 0)); then + ha_info rc=$rc mustpass=$mustpass + + # mustpass=0 means that failure is expected + if (( rc !=0 )); then + if (( mustpass != 0 )); then + touch "$ha_fail_file" + touch "$ha_stop_file" + ha_dump_logs "${ha_clients[*]} ${ha_servers[*]}" + else + # Ok to fail + rc=0 + fi + elif (( mustpass == 0 )); then touch "$ha_fail_file" touch "$ha_stop_file" ha_dump_logs "${ha_clients[*]} ${ha_servers[*]}" fi - echo $rc >"$status" + echo rc=$rc mustpass=$mustpass >"$status" nr_loops=$((nr_loops + 1)) done @@ -469,7 +487,8 @@ ha_repeat_mpi_load() [ $nr_loops -ne 0 ] && avg_loop_time=$((($(date +%s) - start_time) / nr_loops)) - ha_info "$tag stopped: rc $rc avg loop time $avg_loop_time" + ha_info "$tag stopped: rc=$rc mustpass=$mustpass \ + avg loop time $avg_loop_time" } ha_start_mpi_loads() @@ -532,7 +551,11 @@ ha_start_mpi_loads() local stripe=${!aref} local m=$(( n % ha_nclientsset)) machines=${mach[m]} - ha_repeat_mpi_load $client $load $status "$parameter" $machines "$stripe" "$mpiuser" & + local mustpass=1 + [[ $ha_ninstmustfail == 0 ]] || + mustpass=$(( n % ha_ninstmustfail )) + ha_repeat_mpi_load $client $load $status "$parameter" \ + $machines "$stripe" "$mpiuser" "$mustpass" & ha_status_files+=("$status") done done @@ -552,11 +575,12 @@ ha_repeat_nonmpi_load() local avg_loop_time=0 local start_time=$(date +%s) - cmd=${cmd//"{}"/$dir} + cmd=${cmd//"{}"/$dir} - ha_info "Starting $tag on $client" + ha_info "Starting $tag on $client" while [ ! -e "$ha_stop_file" ] && ((rc == 0)); do + ha_info "$client Starts: $cmd" 2>&1 | tee -a $log ha_on $client "mkdir -p $dir && \ $cmd && \ rm -rf $dir" >>"$log" 2>&1 || rc=$?