blob: 03d39ea886d057546fdc3ca19ab4a01423839be3 [file] [log] [blame]
#!/bin/sh
# Copyright (c) 2005, Wipro Technologies Ltd. All rights reserved.
# Created by: Dr. B. Thangaraju <balat.raju@wipro.com>
# Prashant P Yendigeri <prashant.yendigeri@wipro.com>
# This file is licensed under the GPL license. For the full content
# of this license, see the COPYING file at the top level of this
# source tree.
#
# This execute.sh script executes executables and format the results
# including time statistics like time taken to execute OPTS.
# This script doesn't use 'make' or 'gcc'. This script will be useful
# to run test cases on embedded target.
# Run all the tests in the conformance area.
# Function to calculate starting time
start_func()
{
START_DATE=`date`
START_HOUR=`date +%H`
START_MIN=`date +%M`
START_SEC=`date +%S`
if [ $START_HOUR -eq 0 ]
then
TOTAL_START_HOUR=0
else
TOTAL_START_HOUR=`expr $START_HOUR '*' 3600`
fi
if [ $START_MIN -eq 0 ]
then
TOTAL_START_MIN=0
else
TOTAL_START_MIN=`expr $START_MIN '*' 60`
fi
TOTAL_START_TEMP=`expr $TOTAL_START_HOUR + $TOTAL_START_MIN`
TOTAL_START_SECS=`expr $TOTAL_START_TEMP + $START_SEC`
}
end_func_noday_change()
{
END_DATE=`date`
END_HOUR=`date +%H`
END_MIN=`date +%M`
END_SEC=`date +%S`
TOTAL_END_HOUR=`expr $END_HOUR '*' 3600`
TOTAL_END_MIN=`expr $END_MIN '*' 60`
TOTAL_END_TEMP=`expr $TOTAL_END_HOUR + $TOTAL_END_MIN`
TOTAL_END_SECS=`expr $TOTAL_END_TEMP + $END_SEC`
TOTAL_TIME=`expr $TOTAL_END_SECS - $TOTAL_START_SECS`
TOTAL_HR=`expr $TOTAL_TIME / 3600`
TOTAL_MIN=`expr $TOTAL_TIME / 60`
TOTAL_SEC=$TOTAL_TIME
if [ $TOTAL_SEC -gt 60 ]
then
TOTAL_SEC=`expr $TOTAL_SEC % 60`
fi
if [ $TOTAL_MIN -gt 60 ]
then
TOTAL_MIN=`expr $TOTAL_MIN % 60`
fi
if [ $TOTAL_HR -gt 60 ]
then
TOTAL_HR=`expr $TOTAL_HR % 60`
fi
}
# Function to calculate end time
end_func()
{
END_DATE=`date`
END_HOUR=`date +%H`
END_MIN=`date +%M`
END_SEC=`date +%S`
if [ $END_HOUR -eq 0 ]
then
TOTAL_END_HOUR=0
else
TOTAL_END_HOUR=`expr $END_HOUR '*' 3600`
fi
if [ $END_MIN -eq 0 ]
then
TOTAL_END_MIN=0
else
TOTAL_END_MIN=`expr $END_MIN '*' 60`
fi
TOTAL_END_TEMP=`expr $TOTAL_END_HOUR + $TOTAL_END_MIN`
TOTAL_END_SECS=`expr $TOTAL_END_TEMP + $END_SEC`
TOTAL_START_SECS=`expr 86400 - $TOTAL_START_SECS`
TOTAL_TIME=`expr $TOTAL_END_SECS + $TOTAL_START_SECS`
TOTAL_HR=`expr $TOTAL_TIME / 3600`
TOTAL_MIN=`expr $TOTAL_TIME / 60`
TOTAL_SEC=$TOTAL_TIME
if [ $TOTAL_SEC -gt 60 ]
then
TOTAL_SEC=`expr $TOTAL_SEC % 60`
fi
if [ $TOTAL_MIN -gt 60 ]
then
TOTAL_MIN=`expr $TOTAL_MIN % 60`
fi
if [ $TOTAL_HR -gt 60 ]
then
TOTAL_HR=`expr $TOTAL_HR % 60`
fi
}
# Function to display the Execution Time Statistics
display_func()
{
echo -ne "\n\n\n\n\t\t*******************************************\n"
echo -ne "\t\t* EXECUTION TIME STATISTICS *\n"
echo -ne "\t\t*******************************************\n"
echo -ne "\t\t* START : $START_DATE *\n"
echo -ne "\t\t* END : $END_DATE *\n"
echo -ne "\t\t* DURATION : *\n"
echo -ne "\t\t* $TOTAL_HR hours *\n"
echo -ne "\t\t* $TOTAL_MIN minutes *\n"
echo -ne "\t\t* $TOTAL_SEC seconds *\n"
echo -ne "\t\t*******************************************\n"
}
# Variables for formatting the OPTS results
declare -i TOTAL=0
declare -i PASS=0
declare -i FAIL=0
declare -i UNRES=0
declare -i UNSUP=0
declare -i UNTEST=0
declare -i INTR=0
declare -i HUNG=0
declare -i SEGV=0
declare -i OTH=0
# Maximum five minutes waiting time period to execute a test. If it exceeds, the test case will go into the 'HUNG' category.
TIMEOUT_VAL=300
# if gcc available then remove the below line comment else put the t0 in posixtestsuite directory.
#gcc -o t0 t0.c
./t0 0 > /dev/null 2>&1
TIMEVAL_RET=$?
# Find executable files from the conformance directory
# If you want to execute any specific test cases, you should modify here.
FINDFILESsh=`find ./conformance/ -name '*-*.sh' -print`
FINDFILES=`find ./conformance/ -name '*-*.test' -print | grep -v core`
NEWSTR=`echo $FINDFILES $FINDFILESsh`
# Main program
start_func
PM_TO_AM=`date +%P`
if [ $PM_TO_AM = "pm" ]
then
COUNT=1
fi
echo "Run the conformance tests"
echo "=========================================="
count=1
while $TRUE
do
FILE=`echo $NEWSTR | cut -f$count -d" "`
if [ -z $FILE ]
then
PM_TO_AM=`date +%P`
if [ $PM_TO_AM = "am" ]
then
COUNT=`expr $COUNT + 1`
fi
if [ $COUNT -eq 2 ]
then
end_func
else
end_func_noday_change
fi
echo
echo -ne "\t\t***************************\n"
echo -ne "\t\t CONFORMANCE TEST RESULTS\n"
echo -ne "\t\t***************************\n"
echo -ne "\t\t* TOTAL: " $TOTAL "\n"
echo -ne "\t\t* PASSED: " $PASS "\n"
echo -ne "\t\t* FAILED: " $FAIL "\n"
echo -ne "\t\t* UNRESOLVED: " $UNRES "\n"
echo -ne "\t\t* UNSUPPORTED: " $UNSUP "\n"
echo -ne "\t\t* UNTESTED: " $UNTEST "\n"
echo -ne "\t\t* INTERRUPTED: " $INTR "\n"
echo -ne "\t\t* HUNG: " $HUNG "\n"
echo -ne "\t\t* SEGV: " $SEGV "\n"
echo -ne "\t\t* OTHERS: " $OTH "\n"
echo -ne "\t\t***************************\n"
display_func
echo "Finished"
exit
elif [ -x $FILE ]
then
FILEcut=`echo $FILE | cut -b3-80`
TOTAL=$TOTAL+1
./t0 $TIMEOUT_VAL $FILE > /dev/null 2>&1
RET_VAL=$?
if [ $RET_VAL -gt 5 -a $RET_VAL -ne $TIMEVAL_RET ]
then
INTR_VAL=10
fi
case $RET_VAL in
0)
PASS=$PASS+1
echo "$FILEcut:execution:PASS "
;;
1)
FAIL=$FAIL+1
echo "$FILEcut:execution:FAIL "
;;
255)
FAIL=$FAIL+1
echo "$FILEcut:execution:FAIL "
;;
2)
UNRES=$UNRES+1
echo "$FILEcut:execution:UNRESOLVED "
;;
3)
;;
4)
UNSUP=$UNSUP+1
echo "$FILEcut:execution:UNSUPPORTED "
;;
5)
UNTEST=$UNTEST+1
echo "$FILEcut:execution:UNTESTED "
;;
10)
INTR=$INTR+1
echo "$FILEcut:execution:INTERRUPTED "
;;
$TIMEVAL_RET)
HUNG=$HUNG+1
echo "$FILEcut:execution:HUNG "
;;
139)
SEGV=$SEGV+1
echo "$FILEcut:execution:Segmentaion Fault "
;;
*)
OTH=$OTH+1
echo "OTHERS: RET_VAL for $FILE : $RET_VAL"
;;
esac
fi
count=`expr $count + 1`
done
######################################################################################