Whamcloud - gitweb
LU-1779 tests: fix run_one_logged() to log SKIP status
authorYu Jian <yujian@whamcloud.com>
Fri, 7 Sep 2012 02:58:35 +0000 (10:58 +0800)
committerAndreas Dilger <adilger@whamcloud.com>
Thu, 25 Oct 2012 20:25:33 +0000 (16:25 -0400)
In the current test framework, only those tests which are in the
$ALWAYS_EXCEPT list are logged with SKIP status, other skipped
tests are all logged with PASS status.

This patch fixes the above issue by setting the SKIP status in
pass() and logging the status in run_one_logged().

Signed-off-by: Yu Jian <yujian@whamcloud.com>
Change-Id: I7d4e66982a04d8759e887d88d0e406da719c03bf
Reviewed-on: http://review.whamcloud.com/3899
Tested-by: Hudson
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Tested-by: Maloo <whamcloud.maloo@gmail.com>
lustre/tests/test-framework.sh

index 3096dc2..e41073b 100644 (file)
@@ -3058,13 +3058,19 @@ skip_env () {
     $FAIL_ON_SKIP_ENV && error false $@ || skip $@
 }
 
-skip () {
+skip() {
     echo
-    log " SKIP: ${TESTSUITE} ${TESTNAME} $@"
-    [ "$ALWAYS_SKIPPED" ] && \
-        skip_logged ${TESTNAME} "$@" || true
-    [ "$TESTSUITELOG" ] && \
-        echo "${TESTSUITE}: SKIP: $TESTNAME $@" >> $TESTSUITELOG || true
+    log " SKIP: $TESTSUITE $TESTNAME $@"
+
+    if [[ -n "$ALWAYS_SKIPPED" ]]; then
+        skip_logged $TESTNAME "$@"
+    else
+        mkdir -p $LOGDIR
+        echo "$@" > $LOGDIR/skip
+    fi
+
+    [[ -n "$TESTSUITELOG" ]] &&
+        echo "$TESTSUITE: SKIP: $TESTNAME $@" >> $TESTSUITELOG || true
 }
 
 build_test_filter() {
@@ -3132,41 +3138,36 @@ run_test() {
         echo -n "."
         return 0
     fi
+
+    LAST_SKIPPED="y"
+    ALWAYS_SKIPPED="y"
     testname=EXCEPT_$1
     if [ ${!testname}x != x ]; then
-        LAST_SKIPPED="y"
         TESTNAME=test_$1 skip "skipping excluded test $1"
         return 0
     fi
     testname=EXCEPT_$base
     if [ ${!testname}x != x ]; then
-        LAST_SKIPPED="y"
         TESTNAME=test_$1 skip "skipping excluded test $1 (base $base)"
         return 0
     fi
     testname=EXCEPT_ALWAYS_$1
     if [ ${!testname}x != x ]; then
-        LAST_SKIPPED="y"
-        ALWAYS_SKIPPED="y"
         TESTNAME=test_$1 skip "skipping ALWAYS excluded test $1"
         return 0
     fi
     testname=EXCEPT_ALWAYS_$base
     if [ ${!testname}x != x ]; then
-        LAST_SKIPPED="y"
-        ALWAYS_SKIPPED="y"
         TESTNAME=test_$1 skip "skipping ALWAYS excluded test $1 (base $base)"
         return 0
     fi
     testname=EXCEPT_SLOW_$1
     if [ ${!testname}x != x ]; then
-        LAST_SKIPPED="y"
         TESTNAME=test_$1 skip "skipping SLOW test $1"
         return 0
     fi
     testname=EXCEPT_SLOW_$base
     if [ ${!testname}x != x ]; then
-        LAST_SKIPPED="y"
         TESTNAME=test_$1 skip "skipping SLOW test $1 (base $base)"
         return 0
     fi
@@ -3214,11 +3215,13 @@ complete () {
 }
 
 pass() {
-    # Set TEST_STATUS here; will be used for logging the result
-    if [ -f $LOGDIR/err ]; then
+    # Set TEST_STATUS here. It will be used for logging the result.
+    TEST_STATUS="PASS"
+
+    if [[ -f $LOGDIR/err ]]; then
         TEST_STATUS="FAIL"
-    else
-        TEST_STATUS="PASS"
+    elif [[ -f $LOGDIR/skip ]]; then
+        TEST_STATUS="SKIP"
     fi
     echo "$TEST_STATUS $@" 2>&1 | tee -a $TESTSUITELOG
 }
@@ -3294,6 +3297,7 @@ run_one_logged() {
     local name=${TESTSUITE}.test_${1}.test_log.$(hostname -s).log
     local test_log=$LOGDIR/$name
     rm -rf $LOGDIR/err
+    rm -rf $LOGDIR/skip
     local SAVE_UMASK=`umask`
     umask 0022
 
@@ -3307,7 +3311,12 @@ run_one_logged() {
 
     duration=$((`date +%s` - $BEFORE))
     pass "$1" "(${duration}s)"
-    [ -f $LOGDIR/err ] && TEST_ERROR=$(cat $LOGDIR/err)
+
+    if [[ -f $LOGDIR/err ]]; then
+        TEST_ERROR=$(cat $LOGDIR/err)
+    elif [[ -f $LOGDIR/skip ]]; then
+        TEST_ERROR=$(cat $LOGDIR/skip)
+    fi
     log_sub_test_end $TEST_STATUS $duration "$RC" "$TEST_ERROR"
 
     if [ -f $LOGDIR/err ]; then
@@ -3324,7 +3333,8 @@ run_one_logged() {
 #
 skip_logged(){
     log_sub_test_begin $1
-    log_sub_test_end "SKIP" "0" "0" "\"$2\""
+    shift
+    log_sub_test_end "SKIP" "0" "0" "$@"
 }
 
 canonical_path() {