Whamcloud - gitweb
LU-4304 tests: fix auster to detect "SKIP" test status
[fs/lustre-release.git] / lustre / tests / auster
index 877e35e..d8570cc 100755 (executable)
 set -e
 
 export TF_FAIL=/tmp/tf.fail
+export TF_SKIP=/tmp/tf.skip
 
 usage() {
     less -F <<EOF
-Usage ${0##*/} [options]  suite [suite optoins] [suite [suite options]]
+Usage ${0##*/} [options]  suite [suite options] [suite [suite options]]
 Run Lustre regression tests suites.
       -c CONFIG Test environment config file
       -d LOGDIR Top level directory for logs
       -D FULLLOGDIR Full directory for logs
       -f STR    Config name (cfg/<name>.sh)
       -g GROUP  Test group file (Overrides tests listed on command line)
+      -S TESTSUITE First test suite to run allows for restarts
       -i N      Repeat tests N times (default 1). A new directory
                 will be created under LOGDIR for each iteration.
       -k        Don't stop when subtests fail
@@ -64,15 +66,16 @@ repeat_count=1
 upload_logs=false
 reformat=false
 test_logs_dir=/tmp/test_logs/$(date +%Y-%m-%d)/$(date +%H%M%S)
-export SLOW=no
+export ${SLOW:=no}
 export ${NAME:=local}
-while getopts "c:d:D:nkf:g:i:rRslhv" opt
+while getopts "c:d:D:nkf:S:g:i:rRslhv" opt
 do
     case "$opt" in
         c) CONFIG=$OPTARG;;
         d) test_logs_dir=$OPTARG/$(date +%Y-%m-%d)/$(date +%H%M%S);;
         D) test_logs_dir=$OPTARG;;
         g) test_group_file=$OPTARG;;
+        S) FIRST_SUITE=$OPTARG;;
         k) export FAIL_ON_ERROR=false;;
         n) dry_run=:;;
         v) verbose=:;;
@@ -80,7 +83,7 @@ do
         f) NAME=$OPTARG;;
         R) do_reset=:;;
         r) reformat=:;;
-        s) SLOW=yes;;
+       s) export SLOW=yes;;
         l) upload_logs=true;;
         h|\?) usage;;
     esac
@@ -132,7 +135,7 @@ setup_if_needed() {
     auster_cleanup=false
 
     local MOUNTED=$(mounted_lustre_filesystems)
-    if $(echo $MOUNTED | grep -w -q $MOUNT); then
+    if $(echo $MOUNTED' ' | grep -w -q $MOUNT' '); then
         check_config_clients $MOUNT
        # init_facets_vars
        # init_param_vars
@@ -144,7 +147,7 @@ setup_if_needed() {
     setupall
 
     MOUNTED=$(mounted_lustre_filesystems)
-    if ! $(echo $MOUNTED | grep -w -q $MOUNT); then
+    if ! $(echo $MOUNTED' ' | grep -w -q $MOUNT' '); then
         echo "Lustre is not mounted after setup! "
         exit 1
     fi
@@ -190,24 +193,28 @@ doit() {
 
 
 run_suite() {
-    suite_name=$1
-    suite_script=$2
-    title $suite_name
-    log_test $suite_name
-
-    rm -f $TF_FAIL
-    local start_ts=$(date +%s)
-    doit bash $suite_script
-    rc=$?
-    duration=$(($(date +%s) - $start_ts))
-    if [ -f $TF_FAIL -o $rc -ne 0 ]; then
-        status="FAIL"
-    else
-        status="PASS"
-    fi
-    log_test_status $duration $status
-
-    reset_lustre
+       local suite_name=$1
+       local suite_script=$2
+       title $suite_name
+       log_test $suite_name
+
+       rm -f $TF_FAIL
+       touch $TF_SKIP
+       local start_ts=$(date +%s)
+       doit bash $suite_script
+       local rc=$?
+       local duration=$(($(date +%s) - $start_ts))
+
+       local status="PASS"
+       if [[ $rc -ne 0 || -f $TF_FAIL ]]; then
+               status="FAIL"
+       elif [[ -f $TF_SKIP ]]; then
+               status="SKIP"
+       fi
+       log_test_status $duration $status
+       [[ ! -f $TF_SKIP ]] || rm -f $TF_SKIP
+
+       reset_lustre
 }
 
 run_suite_logged() {
@@ -249,6 +256,7 @@ run_suites() {
     while ((n < repeat_count)); do
         local RC=0
         local logdir=${test_logs_dir}
+        local first_suite=$FIRST_SUITE
         ((repeat_count > 1)) && logdir="$logdir/$n"
         reset_logging $logdir
         set -- "${argv[@]}"
@@ -285,9 +293,12 @@ run_suites() {
                 esac
                 shift
             done
-            echo "running: $suite $opts"
-            run_suite_logged $suite || RC=$?
-            echo $suite returned $RC
+            if [ "x"$first_suite == "x" ] || [ $first_suite == $suite ]; then   # If first_suite not set or this is the first suite
+                echo "running: $suite $opts"
+                run_suite_logged $suite || RC=$?
+                unset first_suite
+                echo $suite returned $RC
+            fi
         done
         if $upload_logs; then
             $upload_script $LOGDIR
@@ -313,8 +324,8 @@ fi
 export NAME MOUNT START CLEAN
 . ${CONFIG:-$LUSTRE/tests/cfg/$NAME.sh}
 
-assert_env mds_HOST MDS_MKFS_OPTS
-assert_env ost_HOST OST_MKFS_OPTS OSTCOUNT
+assert_env mds_HOST
+assert_env ost_HOST OSTCOUNT
 assert_env FSNAME MOUNT MOUNT2
 
 echo "Started at `date`"