From b031b90a0320401db1ae474c4cbd89226bf5f2c9 Mon Sep 17 00:00:00 2001 From: Chris Gearing Date: Mon, 27 Feb 2012 10:59:26 +0000 Subject: [PATCH] LU-164 test: Update testframework to restart sessions at next suite Update the test framework so that it can append to yaml files rather than begin a new series and allow auster to begin at a selected test_suite. auster has a new switch '-S suite-name' which allows the caller to start a test group part way through. The idea behind all of this is that a test session that fails at a test suite can be restarted at the next suite. Signed-off-by: Chris Gearing Change-Id: Ieaa987874d69fa8c33c3af92957e99607a8a7be7 Reviewed-on: http://review.whamcloud.com/414 Tested-by: Hudson Tested-by: Maloo Reviewed-by: Robert Read Reviewed-by: Bobi Jam --- lustre/tests/auster | 14 ++++++++++---- lustre/tests/test-framework.sh | 18 ++++++++++-------- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/lustre/tests/auster b/lustre/tests/auster index 877e35e..6b5988e 100755 --- a/lustre/tests/auster +++ b/lustre/tests/auster @@ -21,6 +21,7 @@ Run Lustre regression tests suites. -D FULLLOGDIR Full directory for logs -f STR Config name (cfg/.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 @@ -66,13 +67,14 @@ reformat=false test_logs_dir=/tmp/test_logs/$(date +%Y-%m-%d)/$(date +%H%M%S) 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=:;; @@ -249,6 +251,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 +288,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 diff --git a/lustre/tests/test-framework.sh b/lustre/tests/test-framework.sh index b7b289c..94867a5 100644 --- a/lustre/tests/test-framework.sh +++ b/lustre/tests/test-framework.sh @@ -4656,15 +4656,17 @@ init_logging() { mkdir -p $LOGDIR init_clients_lists - if check_shared_dir $LOGDIR; then - touch $LOGDIR/shared - echo "Logging to shared log directory: $LOGDIR" - else - echo "Logging to local directory: $LOGDIR" - fi + if [ ! -f $YAML_LOG ]; then # If the yaml log already exists then we will just append to it + if check_shared_dir $LOGDIR; then + touch $LOGDIR/shared + echo "Logging to shared log directory: $LOGDIR" + else + echo "Logging to local directory: $LOGDIR" + fi - yml_nodes_file $LOGDIR >> $YAML_LOG - yml_results_file >> $YAML_LOG + yml_nodes_file $LOGDIR >> $YAML_LOG + yml_results_file >> $YAML_LOG + fi umask $SAVE_UMASK } -- 1.8.3.1