X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Ftests%2Fauster;h=4fefde819ec4848f070dc335a0405a418eaed002;hb=47ccacd58dafb3d9a257c37a06b57a8bd19ff1ce;hp=d885bbe1ffdc6af86f90731d5b80068d8d4f7ad5;hpb=8d5fee5d41ee41d583e300b8b81783b999f8ebc3;p=fs%2Flustre-release.git diff --git a/lustre/tests/auster b/lustre/tests/auster index d885bbe..4fefde8 100755 --- a/lustre/tests/auster +++ b/lustre/tests/auster @@ -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/.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,21 @@ 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 "${*//,/ }" -} - -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 -} +# 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 if [ $upload_logs = true ] ; then upload_script=$(find_script_in_path maloo_upload.sh $PATH:$LUSTRE/tests) @@ -368,9 +182,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