Whamcloud - gitweb
LU-1779 tests: fix run_one_logged() to log SKIP status
authorYu Jian <yujian@whamcloud.com>
Wed, 29 Aug 2012 08:59:29 +0000 (16:59 +0800)
committerOleg Drokin <green@whamcloud.com>
Thu, 6 Sep 2012 14:30:36 +0000 (10:30 -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: Ia4e8f51040034abdec9c67aaf0a128b63baaa688
Reviewed-on: http://review.whamcloud.com/3810
Tested-by: Hudson
Reviewed-by: Minh Diep <mdiep@whamcloud.com>
Tested-by: Maloo <whamcloud.maloo@gmail.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
lustre/tests/test-framework.sh

index 4467246..f79c954 100644 (file)
@@ -3680,13 +3680,19 @@ skip_env () {
     $FAIL_ON_SKIP_ENV && error false $@ || skip $@
 }
 
-skip () {
-    echo
-    log " SKIP: ${TESTSUITE} ${TESTNAME} $@"
-    [ "$ALWAYS_SKIPPED" ] && \
-        skip_logged ${TESTNAME} "$@" || true
-    [ "$TESTSUITELOG" ] && \
-        echo "${TESTSUITE}: SKIP: $TESTNAME $@" >> $TESTSUITELOG || true
+skip() {
+       echo
+       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() {
@@ -3754,41 +3760,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
@@ -3836,13 +3837,15 @@ complete () {
 }
 
 pass() {
-    # Set TEST_STATUS here; will be used for logging the result
-    if [ -f $LOGDIR/err ]; then
-        TEST_STATUS="FAIL"
-    else
-        TEST_STATUS="PASS"
-    fi
-    echo "$TEST_STATUS $@" 2>&1 | tee -a $TESTSUITELOG
+       # Set TEST_STATUS here. It will be used for logging the result.
+       TEST_STATUS="PASS"
+
+       if [[ -f $LOGDIR/err ]]; then
+               TEST_STATUS="FAIL"
+       elif [[ -f $LOGDIR/skip ]]; then
+               TEST_STATUS="SKIP"
+       fi
+       echo "$TEST_STATUS $@" 2>&1 | tee -a $TESTSUITELOG
 }
 
 check_mds() {
@@ -3916,6 +3919,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
 
@@ -3929,7 +3933,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
@@ -3945,8 +3954,9 @@ run_one_logged() {
 # Print information of skipped tests to result.yml
 #
 skip_logged(){
-    log_sub_test_begin $1
-    log_sub_test_end "SKIP" "0" "0" "\"$2\""
+       log_sub_test_begin $1
+       shift
+       log_sub_test_end "SKIP" "0" "0" "$@"
 }
 
 canonical_path() {