From 26a029d407be480d791972afb5975cf62c9360a6 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 02:47:55 +0200 Subject: Adding upstream version 124.0.1. Signed-off-by: Daniel Baumann --- security/nss/tests/qa_stat | 938 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 938 insertions(+) create mode 100755 security/nss/tests/qa_stat (limited to 'security/nss/tests/qa_stat') diff --git a/security/nss/tests/qa_stat b/security/nss/tests/qa_stat new file mode 100755 index 0000000000..ddf8dd8d2a --- /dev/null +++ b/security/nss/tests/qa_stat @@ -0,0 +1,938 @@ +#! /bin/sh +######################################################################## +# +# /u/sonmi/bin/qa_stat - /u/svbld/bin/init/nss/qa_stat +# +# this script is supposed to automatically run QA for NSS on all required +# Unix platforms +# +# parameters +# ---------- +# nssversion (supported: 30b, 31, tip) +# builddate (default - today) +# +# options +# ------- +# -y answer all questions with y - use at your own risk...ignores warnings +# -s silent (only usefull with -y) +# -h, -? - you guessed right - displays this text +# -d debug +# -f - write the (error)output to filename +# -m - send filename to mailinglist (csl) only useful +# with -f +# -cron equivalient to -y -s -d -f $RESULTDIR/$HOST.qa_stat +# +######################################################################## + +O_OPTIONS=ON + +TBX_EXIT=49 # in case we are running on a tinderbox build, any + # early exit needs to return an error +if [ -z "$O_TBX" -o "$O_TBX" = "OFF" ] ; then + if [ -z "$O_LOCAL" -o "$O_LOCAL" = "OFF" ] ; then + . `dirname $0`/header + fi +fi +Debug "Sourced header O_TBX=$O_TBX O_LOCAL=$O_LOCAL" +TBX_EXIT=48 +EARLY_EXIT=TRUE + +URL="cindercone.red.iplanet.com" + +DOCDIR=/u/sonmi/doc + +HTML_ERRORCOLOR=\"#FF0000\" +HTML_ERRORMSG=Failed + +HTML_MISSINGCOLOR=\"#FFFFCC\" +HTML_MISSINGMSG=Missing + +HTML_INCOMPLETECOLOR=$HTML_MISSINGCOLOR +HTML_INCOMPLETEMSG=Incomplete + +HTML_PASSEDCOLOR=\"#66FF99\" +HTML_PASSEDMSG=Passed + +# this file is used to deal with hanging rsh - a new shell is started +# for each rsh, and a function is called after it is finished - they +# communicate with this file + +RSH_FILE=$TMP/rsh.$$ +echo >$RSH_FILE +TMPFILES="$TMPFILES $WARNINGLIST $RSH_FILE " +RSH_WAIT_TIME=80 #maximum time allowed for the 2 rsh to finish... +#TOTAL_TESTS=106 +TOTAL_TESTS=252 #tip +#TOTAL_TESTS=244 #3.4 +#TOTAL_TESTS=123 #3.3.2 +BCT_TOTAL_TESTS=122 #3.2.2 +#TOTAL_TESTS=133 #tip + +Debug "NTDIST $NTDIST" +Debug "UXDIST $UXDIST" +Debug "TESTSCRIPTDIR $TESTSCRIPTDIR" +Debug "RESULTDIR $RESULTDIR" + +############################### watch_rsh ############################## +# local shell function, deals with a hanging rsh (kills it...) +# this function is started as a backgroundprocess before the rsh is started, +# and writes info to the RSH_FILE, after the rsh is finished it writes finish +# info to the same file (this time called as a function, forground). +# the backgroundprocess stays around for RSH_WAIT_TIME, if then the finish +# information is not there attempts to kill the rsh +# +# watch_rsh start qa_computername & +# watch_rsh stop qa_computername +# +######################################################################## +watch_rsh() +{ + case $1 in + start) + echo "$2 started" >>$RSH_FILE + sleep $RSH_WAIT_TIME + O_ALWAYS_YES=ON # may modify global flags because this is a + # forked off bg process - kill_by_name otherwise + # will ask the user if it really should be killed + grep "$2 finished" $RSH_FILE >/dev/null || kill_by_name "rsh $2" + exit + ;; + stop) + echo "$2 finished" >>$RSH_FILE + ;; + esac +} + +############################### find_qa_systems ######################## +# local shell function, tries to determine the QA operating system +# works remotely, and for Windows machines +######################################################################## +find_qa_systems() +{ +for QA_SYS in `ls $RESULTDIR | grep '\.1$' | sed -e "s/\..*//" | sort -u` +do + NO_RSH="FALSE" + QA_OS="" + QA_RHVER="" + IS_64="" + IS_WIN="" + + grep OS-LINE ${RESULTDIR}/${QA_SYS}.nssqa >/dev/null && NO_RSH=TRUE + + if [ "$NO_RSH" = "TRUE" ] + then + + QA_OS=`grep OS-LINE ${RESULTDIR}/${QA_SYS}.nssqa | sort -u | sed \ + -e "s/.*-OS-LINE: /${QA_SYS}/"` + QA_OS_STRING=`echo $QA_OS | sed -e "s/^[_ ]//" -e "s/ /_/g"` + echo $QA_OS_STRING >>$PLATFORMLIST + if [ "$O_SILENT" != ON ] ; then + echo $QA_OS + fi + + #grep OS-LINE ${RESULTDIR}/${QA_SYS}.nssqa | sort -u | sed \ + #-e "s/.*-OS-LINE: /${QA_SYS}_/" >>$PLATFORMLIST + #if [ "$O_SILENT" != ON ] ; then + #grep OS-LINE ${RESULTDIR}/${QA_SYS}.nssqa | sort -u | sed \ + #-e "s/.*-OS-LINE:/${QA_SYS}/" + #fi + else + REM_SYSNAME=$QA_SYS + watch_rsh start $REM_SYSNAME & + qa_stat_get_sysinfo $QA_SYS + watch_rsh stop $REM_SYSNAME + echo $QA_OS_STRING >>$PLATFORMLIST + # use later for missing list + fi +done + +} + +################################### qa_stat_init ########################## +# local shell function, sets the name of the resultfile to: +# if option -f +# $RESULTDIR/result if write permission +# (mozilla/tests_results/security/result) +# $HOME/resultNSS${NSSVER}-${BUILDDATE} if no write permission in $RESULTDIR +######################################################################## +qa_stat_init() +{ + if [ $O_FILE = ON -a $O_CRON = OFF ] # if -f was specified write there + then + RFILE=$FILENAME + else + RFILE=${RESULTDIR}/result.$$ + if [ ! -w $RESULTDIR ] + then + RFILE=$HOME/resultNSS${NSSVER}-${BUILDDATE}.$$ + Debug "Using alternate resultfile $RFILE" + #elif [ $O_CRON = ON ] + #then + ##find ${RESULTDIR} -exec chmod a+rw {} \; #FIXME - umask + ##doesn't seem to work - this is a tmp workaround + fi + + if [ ! -x $RESULTDIR -o ! -r $RESULTDIR -o ! -w $RESULTDIR ] + then + glob_usage "$RESULTDIR does not have the right permissions `ls -l $RESULTDIR`" + fi + if [ -d $RESULTDIR ] + then + cd $RESULTDIR + else + glob_usage "$RESULTDIR does not exist" + fi + fi + + ERRORLIST=${RFILE}.E + PLATFORMLIST=${RFILE}.P + PERFLIST=${RFILE}.PE + TMP_HTML_FILE=${RFILE}.html + HTML_FILE=${RESULTDIR}/result.html + WARNINGLIST=${RFILE}.W + BCMISSINGLIST=${RFILE}.BCM + BCERRORLIST=${RFILE}.BCE + TMPFILE=${RFILE}.T + ML_FILE=${RFILE}.ML + + TMPFILES="$TMPFILES $TMPFILE" + TMPFILES="$TMPFILES $ERRORLIST $PLATFORMLIST $PERFLIST $WARNINGLIST \ + $BCMISSINGLIST $BCERRORLIST $ML_FILE" #FIXME uncomment + + FILENAME=$RFILE #we might want to mail it...later switch to html file + O_FILE="ON" + + rm $ERRORLIST $PLATFORMLIST $PERFLIST $WARNINGLIST \ + $BCMISSINGLIST $BCERRORLIST $TMP_HTML_FILE 2>/dev/null + touch $ERRORLIST $PLATFORMLIST $PERFLIST $WARNINGLIST \ + $BCMISSINGLIST $BCERRORLIST $TMP_HTML_FILE 2>/dev/null + + if [ $O_WIN = "ON" -a "$O_TBX" = "ON" ] ; then + HTML_PATH="http://${URL}${UX_D0}/nss${NSSVER}/tinderbox/tests_results/security/`basename $RESULTDIR`" + else + HTML_PATH="http://${URL}${RESULTDIR}" + fi + HREF_TMP_HTML_FILE="${HTML_PATH}/`basename $HTML_FILE`" + + write_qa_header_html >$TMP_HTML_FILE +} + +################################# html_footer ######################### +# local shell function, writes end of the html body +####################################################################### +write_qa_header_html() +{ +echo 'Subject: QA Report ' $NSSVER $BUILDDATE ' +From: sonmi@iplanet.com +Reply-To: sonmi@iplanet.com +Content-Type: text/html; charset=us-ascii + + + + + + + +
+  +
  +

+Tinderbox
+Tinderbox QA result
+Mozilla Daily NSS QA result

+  + +  +
  +
+

+QA Results

+ + + + + + + + + + + + + +' +} + +################################# html_footer ######################### +# local shell function, writes end of the html body +####################################################################### +html_footer() +{ + echo '' + echo '' +} + +################################# setQAsysvars ######################### +# local shell function, sets system specific variables +######################################################################## +setQAsysvars() +{ + if [ "$MACHINE" != "0" ] + then + MACHINE=`echo $MACHINE | sed -e 's/^bct.//g'` + TESTDATE=`ls -ld $MACHINE | awk '{ print $6, $7, $8 }'` + TESTNUMBER=`echo $MACHINE | sed -e 's/.*\.//'` + SYSNAME=`echo $MACHINE | sed -e 's/\..*//'` + Debug "SYSNAME= $SYSNAME" + + if [ "$O_TBX" = "ON" -o "$O_LOCAL" = "ON" ] ; then + QA_SYS_OS=$QA_OS + else + QA_SYS_OS=`grep $SYSNAME $PLATFORMLIST | + sed -e 's/ //' | \ + sort | uniq | sed -e "s/$SYSNAME//" \ + -e "s/^_//" | sort | uniq` + fi + Debug "QA_SYS_OS= $QA_SYS_OS" + fi + BUILD_SYS=`echo $BUILDPLATFORM | sed -e 's/\.OBJ//' -e 's/_DBG/ Debug/' \ + -e 's/_OPT/ Optimized/' -e 's/_64/ 64bit/' -e 's/_glibc_PTH//' \ + -e 's/_/ /'` + Debug "BUILD_SYS=$BUILD_SYS" + if [ -f "${RESULTDIR}/${MACHINE}/results.html" ] ; then + RESULT="${HTML_PATH}/${MACHINE}/results.html" + else + RESULT="0" + fi + if [ -f "${RESULTDIR}/bct/${MACHINE}/results.html" ] ; then + BCB_RESULT="${HTML_PATH}/bct/${MACHINE}/results.html" + else + BCB_RESULT="0" + fi + + if [ -f "${RESULTDIR}/${MACHINE}/output.log" ] ; then + LOG="${HTML_PATH}/${MACHINE}/output.log" + else + LOG="0" + fi + if [ -f "${RESULTDIR}/bct/${MACHINE}/output.log" ] ; then + BCB_LOG="${HTML_PATH}/bct/${MACHINE}/output.log" + else + BCB_LOG="0" + fi +} + +################################# html_line() ######################### +# local shell function, writes a line in the html table +######################################################################## +html_line() +{ + echo '' + echo '' + echo '' + if [ "$QA_SYS_OS" != "0" ] ; then + echo '' + else + echo '' + fi + echo '' + if [ "$SYSNAME" != "0" ] ; then + echo '' + else + echo '' + fi + #echo '' + echo '' + # hopefully we never run more different tests on a tinderbox build... + # on win some shells can not handle exit codes greater then 52 (64???) + # so for very early exits the codes are set 50-45, for failures later + # in the process the higher the number, the more failures + if [ "$O_TBX" = "ON" -a "$TBX_EXIT" -gt 45 ] ; then + TBX_EXIT=0 + fi + if [ "$1" = "failed" ] + then + TBX_EXIT=`expr $TBX_EXIT + 1` + echo '' + elif [ "$1" = "passed" ] + then + echo '' + elif [ "$1" = "incomplete" ] + then + TBX_EXIT=`expr $TBX_EXIT + 1` + echo '' + else + TBX_EXIT=`expr $TBX_EXIT + 1` + echo '' + fi + if [ "$CURRENT_TABLE" != "BC" ] ; then + if [ "$RESULT" = "0" ] ; then + echo '' + else + echo '' + fi + if [ "$LOG" = "0" ] ; then + echo '' + else + echo '' + fi + if [ "$1" = "failed" ] ; then + echo '' + else + echo '' + fi + else + # + # + # + + #echo '' + #echo '' + #echo '' + #if [ "$RESULT" != "0" -a "$LOG" != "0" ] ; then + #echo '' + #elif [ "$RESULT" = "0" -a "$LOG" != "0" ] ; then + #echo '' + #elif [ "$RESULT" != "0" -a "$LOG" = "0" ] ; then + #echo '' + #else + #echo '' + #fi + #if [ "$BCB_RESULT" != "0" -a "$BCB_LOG" != "0" ] ; then + #echo '' + #elif [ "$BCB_RESULT" = "0" -a "$BCB_LOG" != "0" ] ; then + #echo '' + #elif [ "$BCB_RESULT" != "0" -a "$BCB_LOG" = "0" ] ; then + #echo '' + #else + #echo '' + #fi + if [ "$BCB_RESULT" = "0" ] ; then + echo '' + else + echo '' + fi + if [ "$BCB_LOG" = "0" ] ; then + echo '' + else + echo '' + fi + fi + echo '' + echo '' +} + +################################# qa_errorlist ######################### +# local shell function, finds problems in the previously run QA +# linux:the gnu grep, on Linux can output 10 lines above and 3 lines below +# the errormessage +######################################################################## +qa_errorlist() +{ + grep "bgcolor=red" ${MACHINES_TO_CHECK}*/results.html | + sed -e 's/.results.html:' + echo '' + echo '' + echo '' + #echo '' + #echo '' + echo '' + echo '' + echo '' + echo '' + +} + +old_bc_test() +{ +CURRENT_TABLE="BC" #so html_line can determine which fields to write + + qa_stat_table "Backward Compatibility Test" + echo '' + echo '' + echo '' + echo '' + #echo '' + #echo '' + echo '' + echo '' + echo '' + echo '' + + for w in `ls */results.html` + do + TMP_RESULT="`dirname $w`/results.tmp" + TMP_BC_RESULT="`dirname bct/$w`/results.tmp" + rm $TMP_RESULT $TMP_BC_RESULT 2>/dev/null + cat $w | sed -e 's/<[^>]*>//g' -e 's/ /_/g' \ + -e 's/signtool_-[vw]/signtool_-vw/' | + grep '_[PF]a[si][sl]ed' >$TMP_RESULT + cat bct/$w | sed -e 's/<[^>]*>//g' -e 's/ /_/g' \ + -e 's/signtool_-[vw]/signtool_-vw/' | + grep '_[PF]a[si][sl]ed' >$TMP_BC_RESULT + diff $TMP_RESULT $TMP_BC_RESULT 2>>$BCMISSINGLIST | + grep -v "Create_objsign_cert_.signtool_-G.*Passed" | + grep -v "porting_Alice.s_email_cert" | + grep -v "^[0-9,cad]*$" | grep -v "^---$" | grep -v "^---.$" | + grep -v "Can.t_run_pk12util_tests_for_NSS_3.2" >/dev/null && ( + echo "$w differs" >> $BCMISSINGLIST + echo "=========================================" + echo "diff $w bct/$w" + echo "=========================================" + diff $TMP_RESULT $TMP_BC_RESULT 2>&1 | + grep -v "Create_objsign_cert_.signtool_-G.*Passed" | + grep -v "porting_Alice.s_email_cert" | + grep -v "Can.t_run_pk12util_tests_for_NSS_3.2" + ) 2>&1 >>$BCERRORLIST + + #diff -b $w bct/$w 2>>$BCMISSINGLIST | + #grep -v "Create objsign cert .signtool -G.*Passed" | + #grep -v "Listing signed files in jar .signtool -v.*Passed" | + #grep -v "Listing signed files in jar .signtool -w.*Passed" | + #grep -v "backward compatibility" | + #grep -v "Can.t run pk12util tests for NSS 3.2" | + #grep -v "porting Alice.s email cert " | + #grep -v "^---$" | grep -v "^[<> ] $" | + #grep -v "^---.$" | grep -v "^[<> ] .$" | + #grep -v '< ' | + #grep -v "^[0-9,cad]*$" 2>>$BCMISSINGLIST >/dev/null && ( + #echo "$w differs" >> $BCMISSINGLIST + #echo "=========================================" + #echo "diff $w bct/$w" + #echo "=========================================" + #diff -b $w bct/$w 2>&1 | + #grep -v "Listing signed files in jar .signtool -v.*Passed" | + #grep -v "Listing signed files in jar .signtool -w.*Passed" | + #grep -v "backward compatibility" | + #grep -v "Can.t run pk12util tests for NSS 3.2" | + #grep -v "porting Alice.s email cert " | + #grep -v "^---$" | grep -v "^[<> ] $" | + #grep -v "^---.$" | grep -v "^[<> ] .$" | + #grep -v '< ' | + #grep -v "^[0-9,cad]*$" \ + #) 2>&1 >>$BCERRORLIST + rm $TMP_RESULT $TMP_BC_RESULT 2>/dev/null + done + rm $ERRORLIST + cat $BCMISSINGLIST | sed -e "s/^diff: bc_...s.//" \ + -e "s/.results.html.*/\/results.html/" | + sort -u > $ERRORLIST + + platformlist + echo '
 Build-OS and versionQA-OSSystemnameP/FresultoutputerrorsQA time / #
'$BUILD_SYS''$QA_SYS_OS''$SYSNAME''$SYSNAME $TESTNUMBER $TESTDATE''$HTML_ERRORMSG''$HTML_PASSEDMSG''$HTML_INCOMPLETEMSG''$HTML_MISSINGMSG''$HTML_MISSINGMSG' result '$HTML_MISSINGMSG' log  error errorsP/FP/FAll Currentold dllsold executablesresult, loglogresult'$HTML_MISSINGMSG'result, loglogresult'$HTML_MISSINGMSG''$HTML_MISSINGMSG' result '$HTML_MISSINGMSG' log '$TESTDATE $TESTNUMBER'
/ /' -e 's/<[^>]*>/ /g' + grep 'cache hits; .* cache misses, .* cache not reusable' \ + ${MACHINES_TO_CHECK}*/output.log | + grep strsclnt | + grep -v '0 cache hits; 0 cache misses, 0 cache not reusable' | + grep -v ' cache hits; 1 cache misses, 0 cache not reusable' + for logfile in ${MACHINES_TO_CHECK}*/output.log; do + grep -vi "write to SSL socket" $logfile | + grep -vi "HDX PR_Read returned error" | + grep -vi "no error" | + grep -vi "12285" | + grep -i $BEFORE_CONTEXT_GREP $AFTER_CONTEXT_GREP error + #grep -vi "5938" | needed for -v option + #grep -vi "HDX PR_Read hit EOF" | + grep -vi "write to SSL socket" $logfile | + grep -vi "peer cannot verify" | + grep -vi "error" | + grep -vi "fatal" | + grep -vi "TCP Connection aborted" | + grep -vi "TCP connection reset" | + grep $BEFORE_CONTEXT_GREP $AFTER_CONTEXT_GREP -i failed + done + grep -i $BEFORE_CONTEXT_GREP $AFTER_CONTEXT_GREP "segmentation violation" \ + ${MACHINES_TO_CHECK}*/output.log + grep -i $BEFORE_CONTEXT_GREP $AFTER_CONTEXT_GREP "memory fault" \ + ${MACHINES_TO_CHECK}*/output.log + grep -i $BEFORE_CONTEXT_GREP $AFTER_CONTEXT_GREP "bus error" \ + ${MACHINES_TO_CHECK}*/output.log + grep -i $BEFORE_CONTEXT_GREP $AFTER_CONTEXT_GREP "core dumped" \ + ${MACHINES_TO_CHECK}*/output.log + grep -i $BEFORE_CONTEXT_GREP $AFTER_CONTEXT_GREP fatal \ + ${MACHINES_TO_CHECK}*/output.log + grep -i $BEFORE_CONTEXT_GREP $AFTER_CONTEXT_GREP -i\ + "PKCS12 decode not verified" ${MACHINES_TO_CHECK}*/output.log + + if [ -n "${MACHINES_TO_CHECK}" ] ; then + find ${MACHINES_TO_CHECK}* -name core -print 2>/dev/null | + grep -v bct + else + find . -name core -print 2>/dev/null | + grep -v bct + fi +} + +tbx_missing_platforms () +{ + QA_MISSING="QA report missing" + MACHINE="0" + + if [ "$QA_OS_STRING" = "WINNT4.0" ] ; then + QA_OS_STRING="Windows-NT-4.0" + fi + for BUILDPLATFORM in `grep $QA_OS_STRING $TESTSCRIPTDIR/platformlist.tbx` + do + if [ "$BUILDPLATFORM" != "$QA_OS_STRING" ] ; then + Debug "BUILDPLATFORM = $BUILDPLATFORM QA_OS_STRING = $QA_OS_STRING" + grep $BUILDPLATFORM ${MACHINES_TO_CHECK}*/results.html \ + >/dev/null || { + setQAsysvars + html_line missing >>$TMP_HTML_FILE + } + fi + done +} + +############################ platform _list ########################### +# local shell function, generate pass/fail information for each Platform +######################################################################## +platformlist() +{ + grep Platform ${MACHINES_TO_CHECK}*/results.html | + sed -e 's/.results.html:

Platform: /---/' \ + -e 's/
//' >$TMPFILE + # this is done a little complicated to avoid starting a subshell in + # a while read that gets the input from a pipeline, and variables set + #in or underneath this function get unset after done... + for MB in `cat $TMPFILE` ; do + MACHINE=`echo $MB | sed -e "s/---.*//"` + BUILDPLATFORM=`echo $MB | sed -e "s/.*---//"` + grep "${MACHINE}[^0-9]" $ERRORLIST >/dev/null + ret=$? + setQAsysvars + if [ $ret -eq 0 ] + then + echo "Failed $MACHINE $BUILDPLATFORM" >>$RFILE + html_line failed >>$TMP_HTML_FILE + else + echo "Passed $MACHINE $BUILDPLATFORM" >>$RFILE + html_line passed >>$TMP_HTML_FILE + fi + done +} + +############################ missing_platforms ########################### +# local shell function, finds out if we ran on all required platforms +######################################################################## +missing_platforms() +{ + QA_MISSING="QA report missing" + MACHINE="0" + SYSNAME="0" + QA_SYS_OS="0" + + for BUILDPLATFORM in `cat $TESTSCRIPTDIR/platformlist` + do + grep $BUILDPLATFORM $PLATFORMLIST > /dev/null || { + setQAsysvars + html_line missing >>$TMP_HTML_FILE + } + done +} + +############################ incomplete_results ########################### +# local shell function, finds out if all qa runs were complete +######################################################################## +incomplete_results () +{ + + for w in `ls ${MACHINES_TO_CHECK}*/results.html` + do + grep bgcolor=red $w || { + PASSED_LINES="" + PASSED_LINES=`grep bgcolor=lightGreen $w | wc -l` + if [ -n "$PASSED_LINES" -a "$PASSED_LINES" -lt "$TOTAL_TESTS" ] ; then + BUILDPLATFORM=`grep Platform $w | sed -e 's/

Platform:/ /' -e 's/
//'` + MACHINE=`echo $w | sed -e "s/.results.html//"` + #MACHINE=`echo $w | sed -e "s/\.[0-9]*.results.html//"` + setQAsysvars + html_line incomplete >>$TMP_HTML_FILE + elif [ "$PASSED_LINES" -gt "$TOTAL_TESTS" ] ; then + echo "WARNING - more tests than expected on $w ($PASSED_LINES)" >>$WARNINGLIST + fi + } + done +} + +qa_stat_table() +{ + echo ' ' + echo '
 ' + echo '
' + echo '

' + echo ''$1'

' + echo ' ' + echo '' + echo '' +} + +############################### psaperf ######################## +# local shell function, copies results of the daily performance test +# into a table in the QA report +######################################################################## +rsaperf() +{ + grep RSAPERF */output.log | grep -v "_DBG" > $PERFLIST + + qa_stat_table "Performance list" + + echo '' + echo '' + echo '' + echo '' + echo '' + echo '' + echo '' + cat $PERFLIST | + while read MACHINE BUILDPLATFORM no_iter t1 t2 total total_unit t3 \ + t4 t5 average average_unit + do + #caution subshell, variables local to this loop + BUILD_SYS=`echo $BUILDPLATFORM | sed -e 's/\.OBJ//' \ + -e 's/_DBG/ Debug/' \ + -e 's/_OPT/ Optimized/' -e 's/_64/ 64bit/' -e 's/_glibc_PTH//' \ + -e 's/_/ /'` + TESTNUMBER=`echo $MACHINE | sed -e 's/[^\.]*\.//' -e 's/\/.*//'` + MACHINE=`echo $MACHINE | sed -e 's/\..*//'` + TESTDATE=`ls -ld ${MACHINE}.${TESTNUMBER} | awk '{ print $6, $7, $8 }'` + echo '' + echo '' + echo '' + echo '' + echo '' + echo '' + echo '' + echo '' + echo '' + echo '' + echo '' + echo '' + echo '' + echo '' + done + echo '
Build-OS and versionSystemname# of iterationsaverage for one opTotalQA time / #
'$BUILD_SYS''$MACHINE''$no_iter''$average' '$average_unit''$total' '$total_unit''$TESTDATE $TESTNUMBER'
' +} + +############################### qa_stat_cleanup ######################## +# local shell function, finishes html file, sets variables for global Exit +######################################################################## +qa_stat_cleanup() +{ + + html_footer >>$TMP_HTML_FILE + + O_DEBUG=OFF + + EARLY_EXIT=FALSE + cp $TMP_HTML_FILE $HTML_FILE + FILENAME=$HTML_FILE #we might want to mail it... + Exit +} + + +############################### bc_test ######################## +# local shell function, evaluates the results of the backward u +# compatibility tests +######################################################################## +bc_header() +{ +CURRENT_TABLE="BC" #so html_line can determine which fields to write + + qa_stat_table "Backward Compatibility Test" + echo '

Build-OS and versionQA-OSSystemnameP/FAll Currentbackward comp. testresultoutputQA time / #
Build-OS and versionQA-OSSystemnameP/FAll Currentbackward comp. testresultoutputQA time / #
' >>$TMP_HTML_FILE + + head -200 $BCERRORLIST | sed -e 's/<[^>]*>//g' -e "s/^/
/" +} + +bc_test() +{ +CURRENT_TABLE="BC" #so html_line can determine which fields to write + + qa_stat_table "Backward Compatibility Test" + echo 'Build-OS and version' + echo 'QA-OS' + echo 'Systemname' + echo 'P/F' + #echo 'All Current' + #echo 'backward comp. test' + echo 'result' + echo 'output' + echo 'QA time / #' + echo '' + +set -x + for w in `ls */results.html` + do + BCT_DIR=`dirname "bct/$w"` + BCT_RESULT="bct/$w" + BCT_LOG="$BCT_DIR/output.log" + grep "bgcolor=red" $BCT_RESULT | + sed -e 's/.results.html:/ /' -e 's/<[^>]*>/ /g' + grep 'cache hits; .* cache misses, .* cache not reusable' \ + $BCT_LOG | + grep -v selfserv | + grep -v '0 cache hits; 1 cache misses, 0 cache not reusable' | + grep -v '0 cache hits; 0 cache misses, 0 cache not reusable' | + grep -v ' cache hits; 1 cache misses, 0 cache not reusable' + grep -vi "write to SSL socket" $BCT_LOG | + grep -vi "HDX PR_Read returned error" | + grep -vi "no error" | + grep -vi "12285" | + grep -i $BEFORE_CONTEXT_GREP $AFTER_CONTEXT_GREP error + grep -vi "write to SSL socket" $BCT_LOG | + grep -vi "peer cannot verify" | + grep -vi "TCP Connection aborted" | + grep -vi "error" | + grep -vi "fatal" | + grep -vi "TCP connection reset" | + grep $BEFORE_CONTEXT_GREP $AFTER_CONTEXT_GREP -i failed $BCT_LOG + grep -i $BEFORE_CONTEXT_GREP $AFTER_CONTEXT_GREP "segmentation violation" $BCT_LOG + grep -i $BEFORE_CONTEXT_GREP $AFTER_CONTEXT_GREP "memory fault" $BCT_LOG + grep -i $BEFORE_CONTEXT_GREP $AFTER_CONTEXT_GREP "bus error" $BCT_LOG + grep -i $BEFORE_CONTEXT_GREP $AFTER_CONTEXT_GREP "core dumped" $BCT_LOG + grep -i $BEFORE_CONTEXT_GREP $AFTER_CONTEXT_GREP fatal $BCT_LOG + grep -i $BEFORE_CONTEXT_GREP $AFTER_CONTEXT_GREP -i "PKCS12 decode not verified" $BCT_LOG + find ${BTC_DIR} -name core -print + + done 2>&1 >>$BCERRORLIST + rm $ERRORLIST + cat $BCMISSINGLIST | sed -e "s/^diff: bc_...s.//" \ + -e "s/.results.html.*/\/results.html/" | + sort -u > $ERRORLIST + + platformlist + echo '' >>$TMP_HTML_FILE + + head -200 $BCERRORLIST | sed -e 's/<[^>]*>//g' -e "s/^/
/" +} + + +############################### bc_test ######################## +# local shell function, evaluates the results of the backward u +# compatibility tests +# move the whole function to old to tests a new solution +######################################################################## +bc_test_old() +{ +CURRENT_TABLE="BC" #so html_line can determine which fields to write + + qa_stat_table "Backward Compatibility Test" + echo 'Build-OS and version' + echo 'QA-OS' + echo 'Systemname' + echo 'P/F' + #echo 'All Current' + #echo 'backward comp. test' + echo 'result' + echo 'output' + echo 'QA time / #' + echo '' + + for w in `ls */results.html` + do + diff -b $w bct/$w 2>>$BCMISSINGLIST | + grep -v "Create objsign cert .signtool -G.*Passed" | + grep -v "Listing signed files in jar .signtool -v.*Passed" | + grep -v "Listing signed files in jar .signtool -w.*Passed" | + grep -v "backward compatibility" | + grep -v "Can.t run pk12util tests for NSS 3.2" | + grep -v "porting Alice.s email cert " | + grep -v "^---$" | grep -v "^[<> ] $" | + grep -v "^---.$" | grep -v "^[<> ] .$" | + grep -v '< ' | + grep -v "^[0-9,cad]*$" 2>>$BCMISSINGLIST >/dev/null && ( + echo "$w differs" >> $BCMISSINGLIST + echo "=========================================" + echo "diff $w bct/$w" + echo "=========================================" + diff -b $w bct/$w 2>&1 | + grep -v "Listing signed files in jar .signtool -v.*Passed" | + grep -v "Listing signed files in jar .signtool -w.*Passed" | + grep -v "backward compatibility" | + grep -v "Can.t run pk12util tests for NSS 3.2" | + grep -v "porting Alice.s email cert " | + grep -v "^---$" | grep -v "^[<> ] $" | + grep -v "^---.$" | grep -v "^[<> ] .$" | + grep -v '< ' | + grep -v "^[0-9,cad]*$" \ + ) 2>&1 >>$BCERRORLIST + done + rm $ERRORLIST + cat $BCMISSINGLIST | sed -e "s/^diff: bc_...s.//" \ + -e "s/.results.html.*/\/results.html/" | + sort -u > $ERRORLIST + + platformlist + echo '' >>$TMP_HTML_FILE + + head -200 $BCERRORLIST | sed -e 's/<[^>]*>//g' -e "s/^/
/" + +} + +############################### tbx_main ######################## +# local shell function, tinderbox variation of the qa status script +######################################################################## +tbx_main() +{ + TBX_EXIT=47 + qa_stat_get_sysinfo # find out the OS we are running and all required tests + # on this OS + + MACHINES_TO_CHECK=$HOST #`uname -n` only search the local tests for errors + qa_errorlist > $ERRORLIST # + platformlist + #tbx_missing_platforms #temp. taken out until we find a better way to + #determine if all necessary QA ran - right now we run different + #tinderboxes on one machine + incomplete_results + echo '' >>$TMP_HTML_FILE + echo '' >> $TMP_HTML_FILE + cat $ERRORLIST | sed -e "s/^/
/" >>$TMP_HTML_FILE + +} + +############################### qa_stat_main ######################## +# local shell function, main flow of the qa status script +######################################################################## +qa_stat_main() +{ + find_qa_systems 2>/dev/null + MACHINES_TO_CHECK="" # check all founf qa runs + qa_errorlist > $ERRORLIST + platformlist + missing_platforms + incomplete_results + echo '' >>$TMP_HTML_FILE + echo '' >> $TMP_HTML_FILE + cat $ERRORLIST | sed -e "s/^/
/" >>$TMP_HTML_FILE + cat $WARNINGLIST 2>/dev/null | sed -e "s/^/
/" >>$TMP_HTML_FILE 2>/dev/null + rsaperf >>$TMP_HTML_FILE + bc_header >>$TMP_HTML_FILE + MACHINES_TO_CHECK="bct/" + TOTAL_TESTS=$BCT_TOTAL_TESTS + BEFORE_CONTEXT_GREP="" #WORKAROUND - errors in one outputlog within the first + AFTER_CONTEXT_GREP="" # or last lines will show up in the next/previos file + qa_errorlist > $ERRORLIST + platformlist + missing_platforms + incomplete_results + echo '' >>$TMP_HTML_FILE + echo '' >> $TMP_HTML_FILE + cat $ERRORLIST | sed -e "s/^/
/" >>$TMP_HTML_FILE + cat $WARNINGLIST 2>/dev/null | sed -e "s/^/
/" >>$TMP_HTML_FILE 2>/dev/null + #bc_test >>$TMP_HTML_FILE +} + +CURRENT_TABLE="Standard" +qa_stat_init + +if [ "$O_TBX" = "ON" -o "$O_LOCAL" = "ON" ] ; then + tbx_main +else + qa_stat_main +fi + +qa_stat_cleanup -- cgit v1.2.3