diff -r 000000000000 -r 6474c204b198 security/nss/coverage/report.sh --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/security/nss/coverage/report.sh Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,206 @@ +#!/bin/bash +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +OS=`uname -s` +ARCH=`uname -p` +SCRIPT_DIR=`pwd` +DATE=`date +%Y-%m-%d` + +if [ $# -lt 1 -o $# -gt 3 ]; then + echo "Usage: $0 [securitytip|securityjes5] " + exit 1 +fi + +BRANCH="$1" + +if [ "${BRANCH}" != "securitytip" -a "${BRANCH}" != "securityjes5" ]; then + echo "Usage: $0 [securitytip|securityjes5] " + exit 1 +fi + +if [ $# -ge 2 ]; then + DATE=$2 +fi + +if [ $# -ge 3 ]; then + ARCH=$3 +fi + +HEADER="Code Coverage - NSS - ${BRANCH} - ${OS}/${ARCH} - ${DATE}" + +COV_DIR="/share/builds/mccrel3/security/coverage" +BRANCH_DIR="${COV_DIR}/${BRANCH}" +DATE_DIR="${BRANCH_DIR}/${DATE}-${ARCH}" +CVS_DIR="${DATE_DIR}/cvs_mozilla" +TCOV_DIR="${DATE_DIR}/tcov_mozilla" +OUTPUT="${DATE_DIR}/nss.html" + +LIB_PATH="/mozilla/security/nss/lib" +CVS_PATH="${CVS_DIR}${LIB_PATH}" +TCOV_PATH="${TCOV_DIR}${LIB_PATH}" + +MIN_GREEN=70 +MIN_YELLOW=40 + +print_header() +{ + echo "" + echo "${HEADER}" + echo "" + echo "" + echo "

${HEADER}


" +} + +print_footer() +{ + echo "" +} + +print_notes() +{ + echo "" + echo "" + echo "
Test Execution Notes

" +} + +print_legend() +{ + echo "" + echo "" + echo "" + echo "" + echo "" + echo "" + echo "
Legend
${MIN_GREEN}% - 100% of blocks tested
${MIN_YELLOW}% - ${MIN_GREEN}% of blocks tested
0% - ${MIN_YELLOW}% of blocks tested
File not tested (these files are not included into statistics)
" +} + +set_color() +{ + if [ ${PERCENT_INT} -le ${MIN_YELLOW} ]; then + bgcolor="ORANGE" + elif [ ${PERCENT_INT} -le ${MIN_GREEN} ]; then + bgcolor="YELLOW" + else + bgcolor="LIGHTGREEN" + fi +} + +create_table() +{ + echo "" + echo "" + echo "" + echo "" +} + +close_table() +{ + if [ "${LASTDIR}" != "" ]; then + if [ ${DFILES} -gt 0 ]; then + if [ ${DBLOCKS_TOTAL} -eq 0 ]; then + PERCENT_INT=0 + else + PERCENT_INT=`expr ${DBLOCKS_EXEC} \* 100 \/ ${DBLOCKS_TOTAL}` + fi + set_color + + echo "" + else + echo "" + fi + echo "
${DIR}
FileTested blocks (Tested blocks/Total blocks/Total lines)
Total: ${PERCENT_INT}% (${DBLOCKS_EXEC}/${DBLOCKS_TOTAL})
Total: Not tested

" + fi +} + +print_line() +{ + LINES_TOTAL=`wc -l "${file}" | /usr/bin/awk '{print $1}'` + + if [ -r "${TCOV_PATH}/${DIR}/${FILE}" ]; then + BLOCKS_EXEC=`cat "${TCOV_PATH}/${DIR}/${FILE}" | grep "Basic blocks executed" | /usr/bin/awk '{print $1}'` + BLOCKS_TOTAL=`cat "${TCOV_PATH}/${DIR}/${FILE}" | grep "Basic blocks in this file" | /usr/bin/awk '{print $1}'` + + DBLOCKS_EXEC=`expr ${DBLOCKS_EXEC} + ${BLOCKS_EXEC}` + DBLOCKS_TOTAL=`expr ${DBLOCKS_TOTAL} + ${BLOCKS_TOTAL}` + TBLOCKS_EXEC=`expr ${TBLOCKS_EXEC} + ${BLOCKS_EXEC}` + TBLOCKS_TOTAL=`expr ${TBLOCKS_TOTAL} + ${BLOCKS_TOTAL}` + + TFILES=`expr ${TFILES} + 1` + DFILES=`expr ${DFILES} + 1` + + PERCENT_EXEC=`cat "${TCOV_PATH}/${DIR}/${FILE}" | grep "Percent of the file executed" | /usr/bin/awk '{print $1}'` + PERCENT_INT=`echo ${PERCENT_EXEC} | cut -d. -f1` + set_color + + echo "${FILE}" + echo "${PERCENT_EXEC}% (${BLOCKS_EXEC}/${BLOCKS_TOTAL}/${LINES_TOTAL})" + else + echo "${FILE}" + echo "Not tested (0/?/${LINES_TOTAL})" + fi +} + +print_total() +{ + echo "" + if [ ${TFILES} -gt 0 ]; then + if [ ${TBLOCKS_TOTAL} -eq 0 ]; then + PERCENT_INT=0 + else + PERCENT_INT=`expr ${TBLOCKS_EXEC} \* 100 \/ ${TBLOCKS_TOTAL}` + fi + set_color + + echo "" + else + echo "" + fi + echo "

Total: ${PERCENT_INT}% (${TBLOCKS_EXEC}/${TBLOCKS_TOTAL})

Total: Not tested


" +} + +process_cmd() +{ + LASTDIR="" + TBLOCKS_EXEC=0 + TBLOCKS_TOTAL=0 + TFILES=0 + + for dir in `find "${CVS_PATH}" -type d | sort` + do + DIR=`echo "${dir}" | sed "s:^${CVS_PATH}/::"` + for file in `ls -1 ${dir}/*.c 2> /dev/null` + do + if [ "${DIR}" != "${LASTDIR}" ]; then + close_table + create_table + + LASTDIR="${DIR}"; + DBLOCKS_EXEC=0 + DBLOCKS_TOTAL=0 + DFILES=0 + fi + + FILE=`echo "${file}" | sed "s:^.*/\(.*.c\):\1:"` + print_line + done + done + + close_table + print_total +} + +report() +{ + print_header > "${OUTPUT}" + print_notes >> "${OUTPUT}" + process_cmd >> "${OUTPUT}" + print_legend >> "${OUTPUT}" + print_footer >> "${OUTPUT}" +} + +report + +exit 0