OOZIE-2841 Limit FindBugs diff errors in JIRA comments (andras.piros via gezapeti)
Project: http://git-wip-us.apache.org/repos/asf/oozie/repo Commit: http://git-wip-us.apache.org/repos/asf/oozie/commit/890f69ea Tree: http://git-wip-us.apache.org/repos/asf/oozie/tree/890f69ea Diff: http://git-wip-us.apache.org/repos/asf/oozie/diff/890f69ea Branch: refs/heads/oya Commit: 890f69ead827467381983b185fd4fa9a6a0780cd Parents: 1392eea Author: Gezapeti Cseh <gezap...@gmail.com> Authored: Mon Mar 27 17:18:17 2017 +0200 Committer: Gezapeti Cseh <gezap...@gmail.com> Committed: Mon Mar 27 17:18:17 2017 +0200 ---------------------------------------------------------------------- bin/test-patch | 65 +++++++++++++++++------------ bin/test-patch-11-findbugs-diff | 79 +++++++++++++++++++++++++++++------- release-log.txt | 1 + 3 files changed, 103 insertions(+), 42 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/oozie/blob/890f69ea/bin/test-patch ---------------------------------------------------------------------- diff --git a/bin/test-patch b/bin/test-patch index d69cc59..33a6d11 100755 --- a/bin/test-patch +++ b/bin/test-patch @@ -23,6 +23,8 @@ TEMPDIR=${TESTPATCHDIR}/tmp REPORTDIR=${TESTPATCHDIR}/reports SUMMARYFILE=${REPORTDIR}/TEST-SUMMARY.jira SUMMARYFILETXT=${REPORTDIR}/TEST-SUMMARY.txt +SUMMARYFILE_FULL=${REPORTDIR}/TEST-SUMMARY-FULL.jira +SUMMARYFILE_FULL_TXT=${REPORTDIR}/TEST-SUMMARY-FULL.txt JIRAHOST="https://issues.apache.org" JIRAURL="${JIRAHOST}/jira" @@ -84,9 +86,9 @@ prepareSCM() { echo "It should not happen DIRTYSCM=false & RESETSCM=false" exit 1 fi - echo "Cleaning local ${SCM} workspace" >> ${SUMMARYFILE} + summary_both "Cleaning local ${SCM} workspace" else - echo "WARNING: Running test-patch on a dirty local ${SCM} workspace" >> ${SUMMARYFILE} + summary_both "WARNING: Running test-patch on a dirty local ${SCM} workspace" fi } ############################################################################### @@ -292,16 +294,16 @@ applyPatch() { fi else echo "Patch failed to apply to head of branch" - echo "{color:red}-1{color} Patch failed to apply to head of branch" >> ${SUMMARYFILE} - echo "" >> ${SUMMARYFILE} - echo "----------------------------" >> ${SUMMARYFILE} + summary_both "{color:red}-1{color} Patch failed to apply to head of branch" + summary_both "" + summary_both "----------------------------" echo cleanupAndExit 1 fi fi echo "" >> $STDOUT echo "Patch applied" - echo "{color:green}+1 PATCH_APPLIES{color}" >> $SUMMARYFILE + summary_both "{color:green}+1 PATCH_APPLIES{color}" echo } ############################################################################### @@ -312,7 +314,7 @@ run() { echo " Running test-patch task ${task}" outputFile="`basename $1`-$2.out" $1 --op=$2 --tempdir=${TEMPDIR} --reportdir=${REPORTDIR} \ - --summaryfile=${SUMMARYFILE} --patchfile=${PATCHFILE} ${MVNPASSTHRU} \ + --summaryfile=${SUMMARYFILE} --summaryfile-full=${SUMMARYFILE_FULL} --patchfile=${PATCHFILE} ${MVNPASSTHRU} \ ${VERBOSEOPTION} | tee ${TEMPDIR}/${outputFile} >> $STDOUT if [[ $? != 0 ]] ; then echo " Failure, check for details ${TEMPDIR}/${outputFile}" @@ -351,6 +353,12 @@ createReports() { echo } ############################################################################### +summary_both() { + LINE=$1 + echo ${LINE} >> ${SUMMARYFILE} + echo ${LINE} >> ${SUMMARYFILE_FULL} +} +############################################################################### echo @@ -359,12 +367,13 @@ parseArgs "$@" prepareTestPatchDirs echo "" > ${SUMMARYFILE} +echo "" > ${SUMMARYFILE_FULL} if [ "${PATCHFILE}" == "" ] ; then echo "Testing JIRA ${JIRAISSUE}" echo - echo "Testing JIRA ${JIRAISSUE}" >> ${SUMMARYFILE} - echo "" >> ${SUMMARYFILE} + summary_both "Testing JIRA ${JIRAISSUE}" + summary_both "" else if [ ! -e ${PATCHFILE} ] ; then echo "Patch file does not exist" @@ -372,54 +381,56 @@ else fi echo "Testing patch ${PATCHFILE}" echo - echo "Testing patch ${PATCHFILE}" >> ${SUMMARYFILE} - echo "" >> ${SUMMARYFILE} + summary_both "Testing patch ${PATCHFILE}" + summary_both "" fi prepareSCM -echo "" >> ${SUMMARYFILE} +summary_both "" if [ "${PATCHFILE}" == "" ] ; then downloadPatch ${JIRAISSUE} fi -echo "----------------------------" >> ${SUMMARYFILE} -echo "" >> ${SUMMARYFILE} +summary_both "----------------------------" +summary_both "" getAllTasks prePatchRun applyPatch postPatchRun createReports -echo "" >> ${SUMMARYFILE} -echo "----------------------------" >> ${SUMMARYFILE} +summary_both "" +summary_both "----------------------------" MINUSONES=`grep -c "\}\-1" ${SUMMARYFILE}` if [[ $MINUSONES == 0 ]]; then - echo "{color:green}*+1 Overall result, good!, no -1s*{color}" >> ${SUMMARYFILE} + summary_both "{color:green}*+1 Overall result, good!, no -1s*{color}" else - echo "{color:red}*-1 Overall result, please check the reported -1(s)*{color}" >> ${SUMMARYFILE} + summary_both "{color:red}*-1 Overall result, please check the reported -1(s)*{color}" fi -echo "" >> ${SUMMARYFILE} +summary_both "" WARNINGS=`grep -c "\}WARNING" ${SUMMARYFILE}` if [[ $WARNINGS != 0 ]]; then - echo "{color:red}. There is at least one warning, please check{color}" >> ${SUMMARYFILE} + summary_both "{color:red}. There is at least one warning, please check{color}" fi -echo "" >> ${SUMMARYFILE} +summary_both "" if [ ! -z "${JIRAISSUE}" ]; then - echo "The full output of the test-patch run is available at" >> ${SUMMARYFILE} - echo "" >> ${SUMMARYFILE} - echo ". ${BUILD_URL}" >> ${SUMMARYFILE} - echo "" >> ${SUMMARYFILE} + summary_both "The full output of the test-patch run is available at" + summary_both "" + summary_both ". ${BUILD_URL}" + summary_both "" else echo echo "Refer to ${REPORTDIR} for detailed test-patch reports" echo fi -cat ${SUMMARYFILE} | sed -e 's/{color}//' -e 's/{color:green}//' -e 's/{color:red}//' -e 's/^\.//' -e 's/^\*//' -e 's/\*$//' > ${SUMMARYFILETXT} - +cat ${SUMMARYFILE} | sed -e 's/{color}//' -e 's/{color:green}//' -e 's/{color:red}//' -e 's/{color:orange}//' -e 's/^\.//' -e 's/^\*//' -e 's/\*$//' > ${SUMMARYFILETXT} cat ${SUMMARYFILETXT} +cat ${SUMMARYFILE_FULL} | sed -e 's/{color}//' -e 's/{color:green}//' -e 's/{color:red}//' -e 's/{color:orange}//' -e 's/^\.//' -e 's/^\*//' -e 's/\*$//' > ${SUMMARYFILE_FULL_TXT} + grep "^+1 Overall result" ${SUMMARYFILETXT} &> /dev/null +grep "^+1 Overall result" ${SUMMARYFILE_FULL_TXT} &> /dev/null cleanupAndExit "$?" http://git-wip-us.apache.org/repos/asf/oozie/blob/890f69ea/bin/test-patch-11-findbugs-diff ---------------------------------------------------------------------- diff --git a/bin/test-patch-11-findbugs-diff b/bin/test-patch-11-findbugs-diff index f7a4b2f..8001bb8 100755 --- a/bin/test-patch-11-findbugs-diff +++ b/bin/test-patch-11-findbugs-diff @@ -22,6 +22,7 @@ OP="" TEMPDIR=${BASEDIR}/tmp REPORTDIR="" SUMMARYFILE="" +SUMMARYFILE_FULL="" STDOUT="/dev/null" MVNPASSTHRU="" FINDBUGS_JAR_URL=https://repo1.maven.org/maven2/me/andrz/findbugs/findbugs-diff/0.1.0/findbugs-diff-0.1.0-all.jar @@ -31,6 +32,7 @@ FINDBUGS_PRIORITY_THRESHOLD=2 # Scariest and scary FINDBUGS_RANK_THRESHOLD=9 FINDBUGS_XML_NAME=findbugsXml.xml +BUG_LIMIT_PER_PROJECT=5 cleanup_and_exit() { @@ -52,7 +54,7 @@ remove_file_if_present() { } print_usage() { - echo "Usage: $0 --taskname | (--op=pre|post|report --tempdir=<TEMP DIR> --reportdir=<REPORT DIR> --summaryfile=<SUMMARY FILE>) [--verbose] [-D<VALUE>...] [-P<VALUE>...]" + echo "Usage: $0 --taskname | (--op=pre|post|report --tempdir=<TEMP DIR> --reportdir=<REPORT DIR> --summaryfile=<SUMMARY FILE> --summaryfile-full=<FULL SUMMARY FILE>) [--verbose] [-D<VALUE>...] [-P<VALUE>...]" echo } @@ -76,6 +78,9 @@ parse_args() { --summaryfile=*) SUMMARYFILE=${i#*=} ;; + --summaryfile-full=*) + SUMMARYFILE_FULL=${i#*=} + ;; --verbose) STDOUT="/dev/stdout" ;; @@ -87,7 +92,7 @@ parse_args() { ;; esac done - if [[ "${TASKNAME}" == "" || "${OP}" == "" || "${TEMPDIR}" == "" || "${REPORTDIR}" == "" || "${SUMMARYFILE}" == "" ]] ; then + if [[ "${TASKNAME}" == "" || "${OP}" == "" || "${TEMPDIR}" == "" || "${REPORTDIR}" == "" || "${SUMMARYFILE}" == "" || "${SUMMARYFILE_FULL}" == "" ]] ; then echo "Missing options" echo print_usage @@ -108,9 +113,9 @@ verify_and_save_findbugs_output() { REPORT_SUFFIX=$3 echo "[TRACE] Verifying and saving FindBugs output in ${BRANCH_LABEL}" - echo "[TRACE] mvn clean verify -DskipTests ${MVNPASSTHRU} | tee ${REPORTDIR}/${TASKNAME}-${REPORT_SUFFIX}.txt >> ${STDOUT}" + echo "[TRACE] mvn clean compile test-compile findbugs:check -Dfindbugs.failOnError=false -Dcheckstyle.failOnViolation=false -DskipTests ${MVNPASSTHRU} | tee ${REPORTDIR}/${TASKNAME}-${REPORT_SUFFIX}.txt >> ${STDOUT}" - mvn clean verify -DskipTests ${MVNPASSTHRU} | tee ${REPORTDIR}/${TASKNAME}-${REPORT_SUFFIX}.txt >> ${STDOUT} + mvn clean compile test-compile findbugs:check -Dfindbugs.failOnError=false -Dcheckstyle.failOnViolation=false -DskipTests ${MVNPASSTHRU} | tee ${REPORTDIR}/${TASKNAME}-${REPORT_SUFFIX}.txt >> ${STDOUT} if [ ! -d "$FINDBUGS_OUTPUT_DIR" ]; then mkdir -p "${FINDBUGS_OUTPUT_DIR}" @@ -182,7 +187,7 @@ download_and_check_findbugs_diff_jar() { echo "${md5Content}" > "${DIFF_DIR}/${FINDBUGS_JAR}.md5sum" else echo "[ERROR] Neither md5 nor md5sum are present, cannot check FindBugs diff JAR" - echo "{color:red}-1{color} Neither md5 nor md5sum are present, cannot check FindBugs diff JAR." >> "${SUMMARYFILE}" + summary_both "{color:red}-1{color} Neither md5 nor md5sum are present, cannot check FindBugs diff JAR." cleanup_and_exit 1 fi @@ -200,7 +205,7 @@ download_and_check_findbugs_diff_jar() { fi echo "[ERROR] FindBugs diff JAR has a weird MD5 sum, rejecting" - echo "{color:red}-1{color} FindBugs diff JAR has a weird MD5 sum, rejecting." >> "${SUMMARYFILE}" + summary_both "{color:red}-1{color} FindBugs diff JAR has a weird MD5 sum, rejecting." cleanup_and_exit 1 fi @@ -257,6 +262,7 @@ check_minimum_file_size() { check_findbugs_diffs_and_create_reports() { DIFF_DIR=$1 REPORT=() + REPORT_FULL=() echo "[TRACE] Checking FindBugs diffs and creating reports" @@ -284,47 +290,88 @@ check_findbugs_diffs_and_create_reports() { if [ "${newBugBelowThresholdCount}" -gt "0" ]; then echo "[ERROR] There are [${newBugBelowThresholdCount}] new bugs found below threshold in [${componentDir}]." - REPORT+=("{color:red}-1{color} There are [${newBugBelowThresholdCount}] new bugs found below threshold in [${componentDir}] that must be fixed.") + REPORT_FULL+=("{color:red}-1{color} There are [${newBugBelowThresholdCount}] new bugs found below threshold in [${componentDir}] that must be fixed.") + if [ "${newBugBelowThresholdCount}" -gt "${BUG_LIMIT_PER_PROJECT}" ]; then + REPORT+=("{color:red}-1{color} There are [${newBugBelowThresholdCount}] new bugs found below threshold in [${componentDir}] that must be fixed, listing only the first [${BUG_LIMIT_PER_PROJECT}] ones.") + else + REPORT+=("{color:red}-1{color} There are [${newBugBelowThresholdCount}] new bugs found below threshold in [${componentDir}] that must be fixed.") + fi echo "[DEBUG] You can find the FindBugs diff here (look for the red and orange ones): ${htmlFileName}" REPORT+=("You can find the FindBugs diff here (look for the red and orange ones): ${htmlFileName}") - REPORT+=("The most important FindBugs errors are:") + REPORT_FULL+=("You can find the FindBugs diff here (look for the red and orange ones): ${htmlFileName}") + REPORT_FULL+=("The most important FindBugs errors are:") + if [ "${newBugBelowThresholdCount}" -gt "${BUG_LIMIT_PER_PROJECT}" ]; then + REPORT+=("The top [${BUG_LIMIT_PER_PROJECT}] most important FindBugs errors are:") + else + REPORT+=("The most important FindBugs errors are:") + fi + + lineCount=0 while IFS= read -r line; do - REPORT+=( "${line}" ); + REPORT_FULL+=( "${line}" ); + if [ "${lineCount}" -lt "${BUG_LIMIT_PER_PROJECT}" ]; then + REPORT+=( "${line}" ); + fi + lineCount=$((lineCount + 1)) done < <(echo cat "/BugCollection/BugInstance[@priority <= ${FINDBUGS_PRIORITY_THRESHOLD} or @rank <= ${FINDBUGS_RANK_THRESHOLD}]/SourceLine/Message/text() | /BugCollection/BugInstance[@priority <= 2 or @rank <= 9]/LongMessage/text()" \ | xmllint --shell "${fn}" | grep -v '\-\-\-\-\-\-\-' | grep -v '/ >' | sed -e 'N;s/\(.*\)\n\(.*\)/\2: \1/') elif [ "${newBugTotalCount}" -gt "0" ]; then echo "[WARN] There are [${newBugTotalCount}] new bugs found in [${componentDir}]." REPORT+=("{color:orange}0{color} There are [${newBugTotalCount}] new bugs found in [${componentDir}] that would be nice to have fixed.") + REPORT_FULL+=("{color:orange}0{color} There are [${newBugTotalCount}] new bugs found in [${componentDir}] that would be nice to have fixed.") echo "[DEBUG] You can find the FindBugs diff here: ${htmlFileName}" REPORT+=("You can find the FindBugs diff here: ${htmlFileName}") + REPORT_FULL+=("You can find the FindBugs diff here: ${htmlFileName}") else echo "[DEBUG] There are no new bugs found in [${componentDir}]." REPORT+=("{color:green}+1{color} There are no new bugs found in [${componentDir}].") + REPORT_FULL+=("{color:green}+1{color} There are no new bugs found in [${componentDir}].") fi done < <(find "${DIFF_DIR}" -name findbugs-new.xml -print0) if [ "${belowThresholdCount}" -gt "0" ]; then echo "[ERROR] There are [${belowThresholdCount}] new bugs found below threshold in total that must be fixed." - echo "{color:red}-1{color} There are [${belowThresholdCount}] new bugs found below threshold in total that must be fixed." \ - >> "${SUMMARYFILE}" + summary_both "{color:red}-1{color} There are [${belowThresholdCount}] new bugs found below threshold in total that must be fixed." elif [ "${totalCount}" -gt "0" ]; then echo "[WARN] There are [${totalCount}] new bugs found in total that would be nice to have fixed." - echo "{color:orange}0{color} There are [${totalCount}] new bugs found in total that would be nice to have fixed." \ - >> "${SUMMARYFILE}" + summary_both "{color:orange}0{color} There are [${totalCount}] new bugs found in total that would be nice to have fixed." else echo "[INFO] There are no new bugs found totally]." - echo "{color:green}+1{color} There are no new bugs found in total." >> "${SUMMARYFILE}" + summary_both "{color:green}+1{color} There are no new bugs found in total." fi for line in "${REPORT[@]}" ; do - echo ". ${line}" >> "${SUMMARYFILE}" + summary ". ${line}" + done + + for line in "${REPORT_FULL[@]}" ; do + summary_full ". ${line}" done echo "[TRACE] FindBugs diffs checked and reports created" } +summary() { + LINE=$1 + echo ${LINE} >> ${SUMMARYFILE} +} + + +summary_full() { + LINE=$1 + echo ${LINE} >> ${SUMMARYFILE_FULL} +} + + +summary_both() { + LINE=$1 + echo ${LINE} >> ${SUMMARYFILE} + echo ${LINE} >> ${SUMMARYFILE_FULL} +} + + parse_args "$@" case ${OP} in @@ -339,6 +386,8 @@ case ${OP} in download_and_check_findbugs_diff_jar "${TEMPDIR}/${TASKNAME}/diff" perform_findbugs_diffs "${TEMPDIR}/${TASKNAME}/pre" "${TEMPDIR}/${TASKNAME}/post" "${TEMPDIR}/${TASKNAME}/diff" check_findbugs_diffs_and_create_reports "${TEMPDIR}/${TASKNAME}/diff" + echo "[TRACE] Summary file size is $(wc -c ${SUMMARYFILE} | awk '{print $1}') bytes" + echo "[TRACE] Full summary file size is $(wc -c ${SUMMARYFILE_FULL} | awk '{print $1}') bytes" ;; esac http://git-wip-us.apache.org/repos/asf/oozie/blob/890f69ea/release-log.txt ---------------------------------------------------------------------- diff --git a/release-log.txt b/release-log.txt index f9b926b..17c9895 100644 --- a/release-log.txt +++ b/release-log.txt @@ -1,5 +1,6 @@ -- Oozie 4.4.0 release (trunk - unreleased) +OOZIE-2841 Limit FindBugs diff errors in JIRA comments OOZIE-2739 Remove property expansion pattern from ShellMain's log4j properties content (harsh) OOZIE-2817 amend Increase test case stability in pre-commit job (abhishekbafna) OOZIE-2838 TestClassUtils,TestJsonUtils,TestWritableUtils,TestXmlUtils shall not be an Oozie XTestCase (asasvari via pbacsko)