Files
SAPFOR/dvm/tools/tester/trunk/test-suite/Performance/test-analyzer.sh

75 lines
2.5 KiB
Bash
Raw Normal View History

2024-05-02 17:08:55 +03:00
#!/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
}