From 27e1ecb19cef4f04ab56727f2382cf228b368ad2 Mon Sep 17 00:00:00 2001 From: Timothy Day Date: Tue, 28 Nov 2023 17:46:35 +0000 Subject: [PATCH] LU-17322 auster: move functions to test-framework.sh auster is essentially a wrapper around test-framework.sh. It's more sensible for functions to be defined in the test library rather than a test wrapper. A comment in auster even suggests this. This small refactor will make it easier to write alternative testing wrappers. Test-Parameters: trivial Signed-off-by: Timothy Day Change-Id: Ia10a44396f81f0423c9c15cc9779658292bc739f Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/53271 Tested-by: Oleg Drokin Tested-by: jenkins Tested-by: Maloo Reviewed-by: Oleg Drokin --- lustre/tests/auster | 205 --------------------------------------- lustre/tests/test-framework.sh | 212 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 212 insertions(+), 205 deletions(-) diff --git a/lustre/tests/auster b/lustre/tests/auster index 39e621f..4fefde8 100755 --- a/lustre/tests/auster +++ b/lustre/tests/auster @@ -149,13 +149,6 @@ else shift $((OPTIND -1)) fi -reset_lustre() { - if $do_reset; then - stopall - setupall - fi -} - STARTTIME=`date +%s` : ${LUSTRE:=$(cd $(dirname $0)/..; echo $PWD)} @@ -172,204 +165,6 @@ if $client_tests_only; then export OSTCOUNT="$(( $($LFS osts | wc -l) - 1 ))" fi -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 -} - if [ $upload_logs = true ] ; then upload_script=$(find_script_in_path maloo_upload.sh $PATH:$LUSTRE/tests) if [[ -z $upload_script ]]; then diff --git a/lustre/tests/test-framework.sh b/lustre/tests/test-framework.sh index 186236f..749b2ba 100755 --- a/lustre/tests/test-framework.sh +++ b/lustre/tests/test-framework.sh @@ -155,6 +155,218 @@ print_summary () { fi } +reset_lustre() { + if $do_reset; then + stopall + setupall + fi +} + +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]} +} + +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="" + + 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 first_suite not set or this is the first suite + if [ "x"$first_suite == "x" ] || [ $first_suite == $suite ]; then + 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 +} + # Get information about the Lustre environment. The information collected # will be used in Lustre tests. # usage: get_lustre_env -- 1.8.3.1