Whamcloud - gitweb
LU-164 test: Update testframework to restart sessions at next suite
authorChris Gearing <chris@whamcloud.com>
Mon, 27 Feb 2012 10:59:26 +0000 (10:59 +0000)
committerOleg Drokin <green@whamcloud.com>
Mon, 5 Mar 2012 04:01:41 +0000 (23:01 -0500)
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 <chris@whamcloud.com>
Change-Id: Ieaa987874d69fa8c33c3af92957e99607a8a7be7
Reviewed-on: http://review.whamcloud.com/414
Tested-by: Hudson
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Robert Read <rread@whamcloud.com>
Reviewed-by: Bobi Jam <bobijam@whamcloud.com>
lustre/tests/auster
lustre/tests/test-framework.sh

index 877e35e..6b5988e 100755 (executable)
@@ -21,6 +21,7 @@ Run Lustre regression tests suites.
       -D FULLLOGDIR Full directory for logs
       -f STR    Config name (cfg/<name>.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
index b7b289c..94867a5 100644 (file)
@@ -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
 }