added tests
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
#!/bin/sh
|
||||
|
||||
# This is analyzer of output of NPB-style formed tests
|
||||
# Requires variables: LAUNCH_EXIT_CODE, STDOUT_FN, STDERR_FN
|
||||
# Produces variables: SUBTEST_COUNT, TEST_PASSED, RESULT_COMMENT, ERROR_LEVEL, TASK_CALC_TIME
|
||||
# Produces functions: analyze_subtest
|
||||
|
||||
SUBTEST_COUNT=`grep 'Completed.' <"$STDOUT_FN" | wc -l`
|
||||
|
||||
if [ `grep -E 'Assertion' <"$STDERR_FN" | wc -l` -gt 0 ]; then
|
||||
TEST_PASSED=0
|
||||
RESULT_COMMENT="Assertion failed"
|
||||
ERROR_LEVEL=5
|
||||
elif [ `grep -E 'RTS fatal' <"$STDERR_FN" | wc -l` -gt 0 ]; then
|
||||
TEST_PASSED=0
|
||||
RESULT_COMMENT="RTS fatal"
|
||||
ERROR_LEVEL=4
|
||||
elif [ `grep -E 'RTS err' <"$STDERR_FN" | wc -l` -gt 0 ]; then
|
||||
TEST_PASSED=0
|
||||
RESULT_COMMENT="RTS err"
|
||||
ERROR_LEVEL=3
|
||||
elif [ `grep "END OF" <"$STDOUT_FN" | wc -l` -eq 0 ]; then
|
||||
TEST_PASSED=0
|
||||
RESULT_COMMENT="Crash"
|
||||
ERROR_LEVEL=2
|
||||
elif [ $LAUNCH_EXIT_CODE -ne 0 ]; then
|
||||
TEST_PASSED=0
|
||||
RESULT_COMMENT="Launch failure"
|
||||
ERROR_LEVEL=6
|
||||
elif [ `grep ' SUCCESSFUL' <"$STDOUT_FN" | wc -l` -lt $SUBTEST_COUNT ]; then
|
||||
TEST_PASSED=0
|
||||
RESULT_COMMENT="Has failed subtests"
|
||||
ERROR_LEVEL=1
|
||||
else
|
||||
TEST_PASSED=1
|
||||
RESULT_COMMENT="OK"
|
||||
ERROR_LEVEL=0
|
||||
fi
|
||||
|
||||
if [ $SUBTEST_COUNT -eq 1 ]; then
|
||||
TASK_CALC_TIME=`grep 'Time in seconds' <"$STDOUT_FN" | awk '{ print $5 }'`
|
||||
fi
|
||||
|
||||
analyze_subtest() {
|
||||
# Produces variables: SUBTEST_NAME, TEST_PASSED, RESULT_COMMENT, ERROR_LEVEL, TASK_CALC_TIME
|
||||
local SUBTEST_RES_START=`grep -n 'Completed.' <"$STDOUT_FN" | head -n $1 | tail -n 1 | sed 's/:.*//g'`
|
||||
local SUBTEST_RES_END=
|
||||
if [ $1 -lt $SUBTEST_COUNT ]; then
|
||||
SUBTEST_RES_END=`grep -n 'Completed.' <"$STDOUT_FN" | head -n $(( $1 + 1 )) | tail -n 1 | sed 's/:.*//g'`
|
||||
SUBTEST_RES_END=$(( SUBTEST_RES_END - 1))
|
||||
else
|
||||
SUBTEST_RES_END=`cat "$STDOUT_FN" | wc -l`
|
||||
fi
|
||||
local linecount=$(( SUBTEST_RES_END - SUBTEST_RES_START + 1 ))
|
||||
local tmp=`mktemp`
|
||||
cat "$STDOUT_FN" | head -n $SUBTEST_RES_END | tail -n $linecount >$tmp
|
||||
SUBTEST_NAME=`grep "Completed." <$tmp | head -n 1 | awk '{ print $1 }'`
|
||||
local CLASS_NAME=`grep "Class" <$tmp | head -n 1 | awk '{ print $3 }'`
|
||||
if [ -n "$CLASS_NAME" ]; then
|
||||
SUBTEST_NAME="$SUBTEST_NAME ($CLASS_NAME)"
|
||||
fi
|
||||
TEST_PASSED=`grep "Verification" <$tmp | head -n 1 | awk '{ print $3 }'`
|
||||
if [ "$TEST_PASSED" = "SUCCESSFUL" ]; then
|
||||
TEST_PASSED=1
|
||||
RESULT_COMMENT="OK"
|
||||
ERROR_LEVEL=0
|
||||
else
|
||||
TEST_PASSED=0
|
||||
RESULT_COMMENT="Subtest failed"
|
||||
ERROR_LEVEL=1
|
||||
fi
|
||||
TASK_CALC_TIME=`grep 'Time in seconds' <$tmp | awk '{ print $5 }'`
|
||||
rm $tmp
|
||||
}
|
||||
Reference in New Issue
Block a user