X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lustre%2Ftests%2Fauster;h=07e6f43487af7416fe491fe01880f2061e5223b9;hp=ed55576014e36496ea406d93f843798677d2a9e4;hb=c04dddd71d140c61f654681c1993f5bb1ded4f48;hpb=be86ec961aada9055d543e449979202b4e775136 diff --git a/lustre/tests/auster b/lustre/tests/auster index ed55576..07e6f43 100755 --- a/lustre/tests/auster +++ b/lustre/tests/auster @@ -13,12 +13,15 @@ set -e export TF_FAIL=/tmp/tf.fail usage() { - less -F <.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 @@ -26,7 +29,7 @@ Run Lustre regression tests suites. -r Reformat (during initial configuration if needed) -s SLOW=yes -v Verbose mode - -l Send logs to the Maloo database after run + -l Send logs to the Maloo database after run (can be done later by running maloo_upload.sh) -h This help. @@ -47,9 +50,9 @@ the default "local" configuration. auster -s sanity replay-single --except 70b -Run test listed in batch-list 5 times using large config. +Run all tests in the regression group 5 times using large config. - auster -f large -r 5 -b batch-list + auster -f large -g test-groups/regression -r 5 EOF exit @@ -61,31 +64,41 @@ verbose=false repeat_count=1 upload_logs=false reformat=false -test_logs_dir=/tmp/test_logs +test_logs_dir=/tmp/test_logs/$(date +%Y-%m-%d)/$(date +%H%M%S) export SLOW=no export ${NAME:=local} -while getopts "c:d:nkf: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;; - k) export FAIL_ON_ERROR=false;; + 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=:;; - i) repeat_count=$OPTARG;; - f) NAME=$OPTARG;; - R) do_reset=:;; - r) reformat=:;; - s) SLOW=yes;; - l) upload_logs=true;; + i) repeat_count=$OPTARG;; + f) NAME=$OPTARG;; + R) do_reset=:;; + r) reformat=:;; + s) SLOW=yes;; + l) upload_logs=true;; h|\?) usage;; esac done -shift $((OPTIND -1)) + +# If a test_group_file is specified, then ignore rest of command line +if [[ $test_group_file ]]; then + export TEST_GROUP=$(basename $test_group_file) + set $(sed 's/#.*$//' $test_group_file) +else + shift $((OPTIND -1)) +fi # # Various paramters for the tests scripts -# +# #: ${SIZE:=$((RAMKB * 2))} #: ${RSIZE:=512} #: ${UID:=1000} @@ -96,8 +109,8 @@ shift $((OPTIND -1)) reset_lustre() { if $do_reset; then - stopall - setupall + stopall + setupall fi } @@ -121,7 +134,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 @@ -133,7 +146,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 @@ -142,7 +155,7 @@ setup_if_needed() { cleanup_if_needed() { if $auster_cleanup; then - cleanupall + cleanupall fi } @@ -150,14 +163,14 @@ find_script_in_path() { target=$1 path=$2 for dir in $(tr : " " <<< $path); do - if [ -e $dir/$target ]; then - echo $dir/$target - return 0 - fi - if [ -e $dir/$target.sh ]; then - echo $dir/$target.sh - return 0 - fi + 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 } @@ -172,7 +185,7 @@ doit() { return 0 fi if $verbose; then - printf "Running: %s\n" "$*" + printf "Running: %s\n" "$*" fi "$@" } @@ -181,12 +194,12 @@ doit() { run_suite() { suite_name=$1 suite_script=$2 - only=$3 title $suite_name log_test $suite_name + rm -f $TF_FAIL local start_ts=$(date +%s) - doit bash $suite_script $only + doit bash $suite_script rc=$? duration=$(($(date +%s) - $start_ts)) if [ -f $TF_FAIL -o $rc -ne 0 ]; then @@ -202,21 +215,20 @@ run_suite() { run_suite_logged() { local suite_name=${1%.sh} local suite=$(echo ${suite_name} | tr "[:lower:]-" "[:upper:]_") - local suite_only=${suite}_ONLY - suite_script=$(find_script_in_path $suite_name $PATH:$LUSTRE/tests) + 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 ${!suite_only}" - local log_name=${suite_name}.suite_log.$(hostname).log + + 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 "${!suite_only}" 2>&1 |tee $LOGDIR/$log_name + run_suite $suite_name $suite_script 2>&1 |tee $LOGDIR/$log_name else - run_suite $suite_name $suite_script "${!suite_only}" > $LOGDIR/$log_name 2>&1 + run_suite $suite_name $suite_script > $LOGDIR/$log_name 2>&1 fi } @@ -224,7 +236,7 @@ run_suite_logged() { # # Add this to test-framework somewhere. reset_logging() { - export LOGDIR=${1:-${test_logs_dir}/$(date +%Y-%m-%d)/$(date +%H%M%S)} + export LOGDIR=$1 unset YAML_LOG init_logging } @@ -236,54 +248,57 @@ split_commas() { run_suites() { local n=0 local argv=("$@") - local basedir=${test_logs_dir}/$(date +%Y-%m-%d)/$(date +%H%M%S) while ((n < repeat_count)); do - local RC=0 - local logdir=$basedir - ((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 ";; - --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 - echo "running: $suite $opts" - run_suite_logged $suite || RC=$? - echo $suite returned $RC - done - if $upload_logs; then - $upload_script $LOGDIR - fi - n=$((n + 1)) + 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 ";; + --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 } @@ -291,7 +306,7 @@ if [ $upload_logs = true ] ; then upload_script=$(find_script_in_path maloo_upload.sh $PATH:$LUSTRE/tests) if [[ -z $upload_script ]]; then echo "Can't find maloo_upload.sh script" - exit 1 + exit 1 fi if [ ! -r ~/.maloorc ] ; then @@ -304,10 +319,11 @@ 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`" setup_if_needed run_suites "$@"