| #!/bin/bash |
| |
| # Licensed to the Apache Software Foundation (ASF) under one or more |
| # contributor license agreements. See the NOTICE file distributed with |
| # this work for additional information regarding copyright ownership. |
| # The ASF licenses this file to you under the Apache License, Version 2.0 |
| # (the "License"); you may not use this file except in compliance with |
| # the License. You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| |
| SANDBOX=$1 |
| REVISION=$2 |
| # DEBUG echo "+++ $0" |
| # SHOULD BE DEFINED OUTSIDE. DERBYDIR=${HOME}/Apache/${SANDBOX} |
| if [ "${DERBYDIR}" == "" ] || [ "${REVISION}" == "" ] |
| then |
| echo "Usage: $0 <DERBYDIR> revision" |
| echo " Example: $0 Derby ..." |
| echo " $0 DerbyJvm1.4 ..." |
| echo " $0 TinderBox_Derby ..." |
| exit |
| fi |
| |
| if [ ! -e ${DERBYDIR} ] |
| then |
| echo "${DERBYDIR} does not exist." |
| exit |
| fi |
| |
| cd ${DERBYDIR} |
| if [ ! -e env.sh ] |
| then |
| echo "${DERBYDIR} does not appear to be a Derby sandbox (No env.sh found)" |
| exit |
| fi |
| . ./env.sh |
| |
| TOOLDIR="${DERBYDIR}/${BRANCH_DIR}/tools/testing/reporting/scripts" |
| . ${TOOLDIR}/env |
| |
| JIRA_DESCRIPTIONS="${DERBYDIR}/${BRANCH_DIR}/tools/testing/reporting/Failures/JIRA_description.txt" |
| |
| # Get the list of testsuite we are running: |
| TESTLISTFILE="${DERBYDIR}/testing/showtestlist" |
| SUITES=`gawk '{ print $1 }' ${TESTLISTFILE} | grep -v "^#"` |
| ## SUITES="derbyall" |
| |
| if [ ! -e ${TESTLOGDIR} ] |
| then |
| echo "${TESTLOGDIR} does not exist" |
| exit |
| fi |
| # Get the set of platforms |
| cd ${TESTLOGDIR} |
| PLATFORMS=`ls` |
| |
| cd ${DERBYDIR}/FailReports |
| |
| SUMMARY="${REVISION}.html" |
| # DEBUG echo -n "SUMMARY: ${SUMMARY} in ";pwd |
| echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">" > ${SUMMARY} |
| echo "<html>" >> ${SUMMARY} |
| echo "<head>" >> ${SUMMARY} |
| echo "<title>${REVISION} ${DERBYVERSION} Apache Derby Open Source Database</title>" >> ${SUMMARY} |
| echo "</head>" >> ${SUMMARY} |
| echo "<body>" >> ${SUMMARY} |
| echo "<font size=\"+2\"><b><i>${SANDBOX}</i> ${REVISION} </b></font>" >> ${SUMMARY} |
| |
| # DEBUG echo "${SANDBOX}" |
| echo "<TABLE border="1">" >> ${SUMMARY} |
| |
| echo "<TR>" >> ${SUMMARY} |
| for PLATFORM in ${PLATFORMS} |
| do |
| if [ -e ${DERBYDIR}/testing/testlog/${PLATFORM}/externallyVisible ] && [ ! -e ${DERBYDIR}/testing/testlog/${PLATFORM}/excludeFromMailReport ] |
| then |
| echo "<TD>" >> ${SUMMARY} |
| TEMP=`echo ${PLATFORM} | sed -e 's/_/<br>/g'` |
| # echo "${PLATFORM}" >> ${SUMMARY} |
| echo "${TEMP}" >> ${SUMMARY} |
| echo "</TD>" >> ${SUMMARY} |
| fi |
| done |
| echo "</TR>" >> ${SUMMARY} |
| |
| echo "<TR>" >> ${SUMMARY} |
| |
| REVISION=`echo ${REVISION} | sed -e 's/M//'` |
| for PLATFORM in ${PLATFORMS} |
| do |
| HADERRORS="" |
| if [ -e ${DERBYDIR}/testing/testlog/${PLATFORM}/externallyVisible ] && [ ! -e ${DERBYDIR}/testing/testlog/${PLATFORM}/excludeFromMailReport ] |
| then |
| echo "<TD style=\"vertical-align: top;\">" >> ${SUMMARY} |
| # DEBUG echo "${PLATFORM}" |
| # echo "${PLATFORM}" >> ${SUMMARY} |
| # echo "</TD>" >> ${SUMMARY} |
| FOUNDSUITES="false" # Must handle the case when no suites are reported. |
| for SUITE in ${SUITES} # The SUITES we look for |
| do |
| # DEBUG echo "SUITE: ${SUITE}" |
| FOUNDTHIS=`grep ${SUITE} ${DERBYDIR}/testing/testlog/${PLATFORM}/${REVISION}.csv` |
| if [ "${FOUNDTHIS}" != "" ] |
| then |
| FOUNDSUITES="true" |
| fi |
| if [ -e ${DERBYDIR}/testing/testlog/${PLATFORM}/${REVISION}.csv ] |
| then |
| # DEBUG echo " ${SUITE}" |
| # DEBUG echo "${DERBYDIR}/testing/testlog/${PLATFORM}/${REVISION}-${SUITE}_fail.txt" |
| # DEBUG ls -l ${DERBYDIR}/testing/testlog/${PLATFORM}/${REVISION}-${SUITE}_fail.txt |
| if [ -e ${DERBYDIR}/testing/testlog/${PLATFORM}/${REVISION}-${SUITE}_fail.txt ] |
| then |
| FAILFILE="${DERBYDIR}/testing/testlog/${PLATFORM}/${REVISION}-${SUITE}_fail.txt" |
| # dos2unix ${FAILFILE} FAILFILE$$ |
| gawk '{ sub("\r$", ""); print }' ${FAILFILE} > FAILFILE$$ |
| FAILFILE="FAILFILE$$" |
| # DEBUG echo "FAILFILE: ${FAILFILE}" |
| JUNIT=`echo ${SUITE} | grep 'org.apache.derbyTesting.'` |
| if [ "${JUNIT}" == "" ] |
| then |
| LINES=`grep : ${FAILFILE}` |
| else |
| # LINES=`grep "^.*) " ${FAILFILE} | sed -e 's/^[1-9]).//' | sed -e 's/org.apache.derbyTesting/../' | sed -e 's/).*: /) /'` |
| LINES=`grep "^.*) " ${FAILFILE} | sed -e 's/^[1-9]).//' | sed -e 's/org.apache.derbyTesting/../' | sed -e 's/).*: /) /' | gawk '{ print $1 }'` |
| fi |
| # Better go via file to really have LINES be a set of lines which may contain blanks. |
| # The way it stands now each "word" is treated as a LINE. |
| rm ${FAILFILE} |
| # DEBUG echo "LINES: ${LINES}" |
| JIRALIST="" |
| for LINE in ${LINES} |
| do |
| # DEBUG echo "LINE: ${LINE}" |
| if [ "${JUNIT}" == "" ] |
| then |
| FAILEDTEST=`echo ${LINE} | gawk -F: '{ print $2 }'` |
| else |
| FAILEDTEST=`echo ${LINE} | gawk '{ print $1 }'` |
| fi |
| # DEBUG echo "FAILEDTEST: ${FAILEDTEST}" |
| JIRA=`grep -v "^#" ${JIRA_DESCRIPTIONS} | grep "${FAILEDTEST}" | gawk '{ print $1 }'` |
| # DEBUG echo "JIRA: ${JIRA}" |
| if [ "${JIRA}" == "" ] |
| then |
| JIRA="'${FAILEDTEST}':<BR> <i><b>New JIRA?</b></i><BR>" |
| else |
| JIRAS=${JIRA} |
| INNERJIRAS="'${FAILEDTEST}':" |
| ORDELIM="" |
| for JIRA in ${JIRAS} |
| do |
| if [ "${JIRA}" == "NEW?" ] |
| then |
| JIRA=" ${ORDELIM}<i><b>New JIRA?</b></i>" |
| else |
| JIRA=" ${ORDELIM}<A HREF=\"https://issues.apache.org/jira/browse/DERBY-${JIRA}\">DERBY-${JIRA}</A>" |
| fi |
| INNERJIRAS="${INNERJIRAS}<BR>${JIRA}" |
| ORDELIM="or " |
| done |
| JIRA="${INNERJIRAS}<BR>" |
| fi |
| # DEBUG echo " ${REVISION} ${JIRA} ${SANDBOX} ${PLATFORM}" |
| JIRALIST="${JIRALIST}<BR>${JIRA}" |
| done # LINES |
| echo "<b>${SUITE}</b>: ${JIRALIST}<BR><BR>" >> ${SUMMARY} |
| HADERRORS="${HADERRORS}E" |
| else |
| # echo "${DERBYDIR}/testing/testlog/${PLATFORM}/${REVISION}-${SUITE}_fail.txt does not exist" |
| # echo " ${REVISION} NA ${SANDBOX} ${PLATFORM} (Not available)" |
| # echo "<b><i>${SUITE}</i></b>" >> ${SUMMARY} |
| HADERRORS="${HADERRORS}" |
| if [ "${SUITE}" == "derbyall" ] |
| then |
| # DEBUG echo "SUITE == derbyall" |
| DERBYALLRUN=`grep derbyall ${DERBYDIR}/testing/testlog/${PLATFORM}/${REVISION}.csv` |
| if [ "${DERBYALLRUN}" != "" ] |
| then |
| DAERR=`echo ${DERBYALLRUN} | gawk '{ print $2 }'` |
| ERRS="No errors!" |
| if [ "${DAERR}" == "" ] |
| then |
| ERRS="Unknown!" |
| HADERRORS="${HADERRORS}U" |
| fi |
| # DEBUG echo "${SUITE}: ${ERRS}" |
| echo "<b>${SUITE}</b>: <br><b><i>${ERRS}</i></b><br><br>" >> ${SUMMARY} |
| fi |
| fi |
| fi # [ -e ${DERBYDIR}/testing/testlog/${PLATFORM}/${REVISION}-${SUITE}_fail.txt ] |
| fi # [ -e ${DERBYDIR}/testing/testlog/${PLATFORM}/${REVISION}.csv ] |
| done # SUITES |
| # DEBUG echo "HADERRORS: ${HADERRORS}" |
| if [ ! -e ${DERBYDIR}/testing/testlog/${PLATFORM}/${REVISION}-system ] |
| then |
| echo "<b>${REVISION}: <i>NA</i></b>" >> ${SUMMARY} |
| elif [ ! -e ${DERBYDIR}/testing/testlog/${PLATFORM}/${REVISION}.csv ] |
| then |
| echo "<b>Total: <i>NA</i></b>" >> ${SUMMARY} |
| elif [ "${HADERRORS}" == "" ] |
| then |
| TOTALMSG="No errors!" |
| if [ "${FOUNDSUITES}" == "false" ] |
| then |
| TOTALMSG="No results found!" |
| fi |
| echo "<br><br><b>TOTAL:</b> <br><b><i>${TOTALMSG}</i></b>" >> ${SUMMARY} |
| fi |
| echo "</TD>" >> ${SUMMARY} |
| fi # [ -e ${DERBYDIR}/testing/testlog/${PLATFORM}/externallyVisible ] && [ not -e ${PLATFORM}/excludeFromMailReport ] |
| done # PLATFORMS |
| echo "</TR>" >> ${SUMMARY} |
| echo "</TABLE>" >> ${SUMMARY} |
| date >> ${SUMMARY} |
| echo "</body>" >> ${SUMMARY} |
| chmod go+r ${SUMMARY} |
| |
| # Make SUMARY publicly available: |
| SRC="${SUMMARY}" |
| DST="${PUBLISHDIR}" |
| echo "**** OBS! ${SCPUT} ${SRC} ${PUBLISHUSER}@${PUBLISHSITE}:${DST}/${SANDBOX}/FailReports/" |
| ### ${SCPUT} ${SRC} ${PUBLISHUSER}@${PUBLISHSITE}:${DST}/${SANDBOX}/FailReports/ |
| # DEBUG echo "--- $0" |