From f54d536fe2c41b7ce5db7adbaf0e21c30276b5ca Mon Sep 17 00:00:00 2001 From: Yu Jian Date: Wed, 29 Aug 2012 16:59:29 +0800 Subject: [PATCH] LU-1779 tests: fix run_one_logged() to log SKIP status 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 Change-Id: Ia4e8f51040034abdec9c67aaf0a128b63baaa688 Reviewed-on: http://review.whamcloud.com/3810 Tested-by: Hudson Reviewed-by: Minh Diep Tested-by: Maloo Reviewed-by: Andreas Dilger --- lustre/tests/test-framework.sh | 60 ++++++++++++++++++++++++------------------ 1 file changed, 35 insertions(+), 25 deletions(-) diff --git a/lustre/tests/test-framework.sh b/lustre/tests/test-framework.sh index 446724665..f79c954 100644 --- a/lustre/tests/test-framework.sh +++ b/lustre/tests/test-framework.sh @@ -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() { -- 1.8.3.1