blob: bb2113b77a7fb6fb3c17cc4425f6b3943b3c8c00 [file]
#!/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>&nbsp;&nbsp;<i><b>New JIRA?</b></i><BR>"
else
JIRAS=${JIRA}
INNERJIRAS="'${FAILEDTEST}':"
ORDELIM=""
for JIRA in ${JIRAS}
do
if [ "${JIRA}" == "NEW?" ]
then
JIRA="&nbsp;&nbsp;${ORDELIM}<i><b>New JIRA?</b></i>"
else
JIRA="&nbsp;&nbsp;${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"