X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Ftests%2Ftest-framework.sh;h=f41aa763004ab4c738bda8103ecd3274a2017e4e;hb=cc877f503d372de20d9e85efaa22132d427bc99a;hp=ad8eff64fd0ca16e53fe813735b7e6552cbbf3bc;hpb=80474b3f23505147900fc70be8d9634a0b496be0;p=fs%2Flustre-release.git diff --git a/lustre/tests/test-framework.sh b/lustre/tests/test-framework.sh index ad8eff6..f41aa76 100644 --- a/lustre/tests/test-framework.sh +++ b/lustre/tests/test-framework.sh @@ -248,6 +248,8 @@ load_module() { shift BASE=`basename $module $EXT` + module_loaded ${BASE} && return + # If no module arguments were passed, get them from $MODOPTS_, else from # modprobe.conf if [ $# -eq 0 ]; then @@ -262,7 +264,7 @@ load_module() { (($# > 0)) && shift 2 # Ensure we have accept=all for lnet - if [ $module = lnet ]; then + if [ $(basename $module) = lnet ]; then # OK, this is a bit wordy... local arg accept_all_present=false for arg in "$@"; do @@ -275,8 +277,6 @@ load_module() { [ $# -gt 0 ] && echo "${module} options: '$*'" - module_loaded ${BASE} && return - # Note that insmod will ignore anything in modprobe.conf, which is why we're # passing options on the command-line. if [ "$BASE" == "lnet_selftest" ] && \ @@ -301,12 +301,6 @@ load_modules_local() { echo "Using modprobe to load modules" return 0 fi - if [ "$HAVE_MODULES" = true ]; then - # we already loaded - echo "Modules already loaded" - return 0 - fi - HAVE_MODULES=true echo Loading modules from $LUSTRE load_module ../libcfs/libcfs/libcfs @@ -392,8 +386,6 @@ unload_modules() { fi fi - HAVE_MODULES=false - check_mem_leak || return 254 echo "modules unloaded." @@ -1137,10 +1129,7 @@ wait_recovery_complete () { local facet=$1 # Use default policy if $2 is not passed by caller. - #define OBD_RECOVERY_TIMEOUT (obd_timeout * 5 / 2) - # as we are in process of changing obd_timeout in different ways - # let's set MAX longer than that - local MAX=${2:-$(( TIMEOUT * 4 ))} + local MAX=${2:-$(max_recovery_time)} local var_svc=${facet}_svc local procfile="*.${!var_svc}.recovery_status" @@ -2046,6 +2035,7 @@ check_timeout () { is_mounted () { local mntpt=$1 + [ -z $mntpt ] && return 1 local mounted=$(mounted_lustre_filesystems) echo $mounted' ' | grep -w -q $mntpt' ' @@ -2607,13 +2597,8 @@ run_test() { return $? } -EQUALS="======================================================================" equals_msg() { - msg="$@" - - local suffixlen=$((${#EQUALS} - ${#msg})) - [ $suffixlen -lt 5 ] && suffixlen=5 - log `echo $(printf '===== %s %.*s\n' "$msg" $suffixlen $EQUALS)` + banner "$*" } log() { @@ -2668,18 +2653,15 @@ reset_fail_loc () { # Log a message (on all nodes) padded with "=" before and after. # Also appends a timestamp and prepends the testsuite name. # + +EQUALS="====================================================================================================" banner() { msg="== ${TESTSUITE} $*" - # pad the message out to 70 with "=" last=${msg: -1:1} - [[ $last != "=" && $last != " " ]] && msg+=" " - for i in $(seq $((68 - ${#msg})) ); do - msg+="=" - done + [[ $last != "=" && $last != " " ]] && msg="$msg " + msg=$(printf '%s%.*s' "$msg" $((${#EQUALS} - ${#msg})) $EQUALS ) # always include at least == after the message - msg+="==" - - log "$msg $(date +"%H:%M:%S (%s)")" + log "$msg== $(date +"%H:%M:%S (%s)")" } # @@ -2724,7 +2706,8 @@ run_one_logged() { rm -rf $LOGDIR/err echo - run_one $1 "$2" 2>&1 | tee $test_log + log_sub_test_begin test_${1} + (run_one $1 "$2") 2>&1 | tee $test_log local RC=${PIPESTATUS[0]} [ $RC -ne 0 ] && [ ! -f $LOGDIR/err ] && \ @@ -2733,7 +2716,7 @@ run_one_logged() { duration=$((`date +%s` - $BEFORE)) pass "(${duration}s)" [ -f $LOGDIR/err ] && TEST_ERROR=$(cat $LOGDIR/err) - log_sub_test test_${1} $TEST_STATUS $duration "$RC" "$TEST_ERROR" + log_sub_test_end $TEST_STATUS $duration "$RC" "$TEST_ERROR" if [ -f $LOGDIR/err ]; then $FAIL_ON_ERROR && exit $RC @@ -3580,6 +3563,24 @@ do_ls () { return $rc } +# target_start_and_reset_recovery_timer() +# service_time = at_est2timeout(service_time); +# service_time += 2 * (CONNECTION_SWITCH_MAX + CONNECTION_SWITCH_INC + +# INITIAL_CONNECT_TIMEOUT); +# CONNECTION_SWITCH_MAX : min(25U, max(CONNECTION_SWITCH_MIN,obd_timeout)) +#define CONNECTION_SWITCH_INC 1 +#define INITIAL_CONNECT_TIMEOUT max(CONNECTION_SWITCH_MIN,obd_timeout/20) +#define CONNECTION_SWITCH_MIN 5U + +max_recovery_time () { + local init_connect_timeout=$(( TIMEOUT / 20 )) + [[ $init_connect_timeout > 5 ]] || init_connect_timeout=5 + + local service_time=$(( $(at_max_get client) + $(( 2 * $(( 25 + 1 + init_connect_timeout)) )) )) + + echo $service_time +} + get_clients_mount_count () { local clients=${CLIENTS:-`hostname`} @@ -3921,8 +3922,12 @@ log_test() { yml_log_test $1 >> $YAML_LOG } -log_sub_test() { - yml_log_sub_test $@ >> $YAML_LOG +log_sub_test_begin() { + yml_log_sub_test_begin $@ >> $YAML_LOG +} + +log_sub_test_end() { + yml_log_sub_test_end $@ >> $YAML_LOG } run_llverdev() @@ -3930,6 +3935,9 @@ run_llverdev() local dev=$1 local devname=$(basename $1) local size=$(grep "$devname"$ /proc/partitions | awk '{print $3}') + # loop devices aren't in /proc/partitions + [ "x$size" == "x" ] && local size=$(ls -l $dev | awk '{print $5}') + size=$(($size / 1024 / 1024)) # Gb local partial_arg=""