Whamcloud - gitweb
New release 2.15.64
[fs/lustre-release.git] / lustre / tests / auster
index d885bbe..b352d9f 100755 (executable)
@@ -26,6 +26,8 @@ usage() {
 Usage ${0##*/} [options]  suite [suite options] [suite [suite options]]
 Run Lustre regression tests suites.
       -c, --config CONFIG   Test environment config file
+      -C, --client-only     Run client-side sanity tests against an already setup
+                            filesystem. Users must define FSNAME and mgs_HOST manually.
       -d, --log-dir LOGDIR            Top level directory for logs
       -D, --full-log-dir FULLLOGDIR   Full directory for logs
       -f, --cfg-name STR    Config name (cfg/<name>.sh)
@@ -66,6 +68,10 @@ Run all tests in the regression group 5 times using large config.
 
   auster -f large -g test-groups/regression -i 5
 
+Run the client-only tests from sanity.
+
+  FSNAME=myfilesystem mgs_HOST=1.2.3.4 auster -C sanity
+
 EOF
        exit
 }
@@ -79,7 +85,8 @@ reformat=false
 script_lang=bash
 test_logs_dir=/tmp/test_logs/$(date +%Y-%m-%d)/$(date +%H%M%S)
 export HONOR_EXCEPT=
-do_setup=true
+export do_setup=true
+export client_tests_only=false
 export "${SLOW:=no}"
 export "${NAME:=local}"
 
@@ -88,6 +95,7 @@ for arg in "$@"; do
        shift
        case "$arg" in
                --config) set -- "$@" '-c';;
+               --client-only) set -- "$@" '-C';;
                --log-dir) set -- "$@" '-d';;
                --full-log-dir) set -- "$@" '-D';;
                --group) set -- "$@" '-g';;
@@ -108,10 +116,11 @@ for arg in "$@"; do
        esac
 done
 
-while getopts "c:d:D:nkf:S:g:Hi:rRslL:Nhv" opt
+while getopts "c:Cd:D:nkf:S:g:Hi:rRslL:Nhv" opt
 do
        case "$opt" in
                c) export CONFIG=$OPTARG;;
+               C) client_tests_only=true;;
                d) test_logs_dir=$OPTARG/$(date +%Y-%m-%d)/$(date +%H%M%S);;
                D) test_logs_dir=$OPTARG;;
                g) test_group_file=$OPTARG;;
@@ -140,216 +149,25 @@ else
     shift $((OPTIND -1))
 fi
 
-reset_lustre() {
-    if $do_reset; then
-        stopall
-        setupall
-    fi
-}
-
 STARTTIME=`date +%s`
 
 : ${LUSTRE:=$(cd $(dirname $0)/..; echo $PWD)}
 . $LUSTRE/tests/test-framework.sh
 init_test_env
 
-print_summary () {
-    trap 0
-    local form="%-13s %-17s %s\n"
-    printf "$form" "status" "script" "skipped tests E(xcluded) S(low)"
-    echo "------------------------------------------------------------------------------------"
-    echo "Done!"
-}
-
-
-setup_if_needed() {
-       ! ${do_setup} && return
-       nfs_client_mode && return
-       AUSTER_CLEANUP=false
-
-       local MOUNTED=$(mounted_lustre_filesystems)
-       if $(echo $MOUNTED' ' | grep -w -q $MOUNT' '); then
-               check_config_clients $MOUNT
-               # init_facets_vars
-               # init_param_vars
-               return
-       fi
-
-       echo "Lustre is not mounted, trying to do setup ... "
-       $reformat && CLEANUP_DM_DEV=true formatall
-       setupall
-
-       MOUNTED=$(mounted_lustre_filesystems)
-       if ! $(echo $MOUNTED' ' | grep -w -q $MOUNT' '); then
-               echo "Lustre is not mounted after setup! "
-               exit 1
-       fi
-       AUSTER_CLEANUP=true
-}
-
-cleanup_if_needed() {
-       if $AUSTER_CLEANUP; then
-               cleanupall
-       fi
-}
-
-find_script_in_path() {
-    target=$1
-    path=$2
-    for dir in $(tr : " " <<< $path); do
-        if [ -f $dir/$target ]; then
-            echo $dir/$target
-            return 0
-        fi
-        if [ -f $dir/$target.sh ]; then
-            echo $dir/$target.sh
-            return 0
-        fi
-    done
-    return 1
-}
-
-title() {
-    log "-----============= acceptance-small: "$*" ============----- `date`"
-}
-
-doit() {
-    if $dry_run; then
-        printf "Would have run: %s\n" "$*"
-        return 0
-    fi
-    if $verbose; then
-        printf "Running: %s\n" "$*"
-    fi
-    "$@"
-}
-
-
-run_suite() {
-       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 $script_lang $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
-
-       return $rc
-}
-
-run_suite_logged() {
-       local suite_name=${1%.sh}
-       local suite=$(echo ${suite_name} | tr "[:lower:]-" "[:upper:]_")
-
-       suite_script=$(find_script_in_path $suite_name $LUSTRE/tests)
-
-       if [[ -z $suite_script ]]; then
-               echo "Can't find test script for $suite_name"
-               return 1
-       fi
-
-       echo "run_suite $suite_name $suite_script"
-       local log_name=${suite_name}.suite_log.$(hostname -s).log
-       if $verbose; then
-               run_suite $suite_name $suite_script 2>&1 |tee  $LOGDIR/$log_name
-       else
-               run_suite $suite_name $suite_script > $LOGDIR/$log_name 2>&1
-       fi
-
-       return ${PIPESTATUS[0]}
-}
-
-#
-# Add this to test-framework somewhere.
-reset_logging() {
-    export LOGDIR=$1
-    unset YAML_LOG
-    init_logging
-}
-
-split_commas() {
-    echo "${*//,/ }"
-}
+# Set CLIENTONLY, while trying to discover some common
+# variables so the test runner doesn't need do this
+# manually
+if $client_tests_only; then
+       export CLIENTONLY=true;
+       export FSTYPE=${FSTYPE:-ldiskfs};
+       export MDSCOUNT="$(( $($LFS mdts | wc -l) - 1 ))"
+       export OSTCOUNT="$(( $($LFS osts | wc -l) - 1 ))"
+fi
 
-run_suites() {
-    local n=0
-    local argv=("$@")
-    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[@]}"
-        while [[ -n $1 ]]; do
-            unset ONLY EXCEPT START_AT STOP_AT
-            local opts=""
-            local time_limit=""
-            #echo "argv: $*"
-            suite=$1
-            shift;
-            while [[ -n $1 ]]; do
-                case "$1" in
-                    --only)
-                        shift;
-                        export ONLY=$(split_commas $1)
-                        opts+="ONLY=$ONLY ";;
-                    --suite)
-                        shift;
-                        export SUITE=$(split_commas $1)
-                        opts+="SUITE=$SUITE ";;
-                    --pattern)
-                        shift;
-                        export PATTERN=$(split_commas $1)
-                        opts+="PATTERN=$PATTERN ";;
-                    --except)
-                        shift;
-                        export EXCEPT=$(split_commas $1)
-                        opts+="EXCEPT=$EXCEPT ";;
-                    --start-at)
-                        shift;
-                        export START_AT=$1
-                        opts+="START_AT=$START_AT ";;
-                    --stop-at)
-                        shift;
-                        export STOP_AT=$1
-                        opts+="STOP_AT=$STOP_AT ";;
-                    --time-limit)
-                        shift;
-                        time_limit=$1;;
-                    *)
-                        break;;
-                esac
-                shift
-            done
-            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
-        fi
-        n=$((n + 1))
-    done
-}
+# special return code to stop testing without cleanup
+# used with the --stop-on-error option
+export STOP_NOW_RC=111
 
 if [ $upload_logs = true ] ; then
     upload_script=$(find_script_in_path maloo_upload.sh $PATH:$LUSTRE/tests)
@@ -368,9 +186,17 @@ fi
 export NAME MOUNT START CLEAN
 . ${CONFIG:-$LUSTRE/tests/cfg/$NAME.sh}
 
-assert_env mds_HOST
-assert_env ost_HOST OSTCOUNT
-assert_env FSNAME MOUNT MOUNT2
+# Only need to know where (MOUNT) and how (mgs_HOST) to
+# mount Lustre for client-side only tests
+if $client_tests_only; then
+       assert_env mgs_HOST
+else
+       assert_env mds_HOST
+       assert_env ost_HOST OSTCOUNT
+       assert_env MOUNT2
+fi
+
+assert_env FSNAME MOUNT
 
 echo "Started at `date`"
 setup_if_needed