hadoop-common-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ni...@apache.org
Subject svn commit: r638230 - in /hadoop/core/trunk: CHANGES.txt build.xml src/test/bin/ src/test/bin/test-patch.sh
Date Tue, 18 Mar 2008 06:16:43 GMT
Author: nigel
Date: Mon Mar 17 23:16:41 2008
New Revision: 638230

URL: http://svn.apache.org/viewvc?rev=638230&view=rev
Log:
HADOOP-2939. Make the automated patch testing process an executable Ant target, test-patch.
Contributed by Ramya and Nigel.

Added:
    hadoop/core/trunk/src/test/bin/
    hadoop/core/trunk/src/test/bin/test-patch.sh   (with props)
Modified:
    hadoop/core/trunk/CHANGES.txt
    hadoop/core/trunk/build.xml

Modified: hadoop/core/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/CHANGES.txt?rev=638230&r1=638229&r2=638230&view=diff
==============================================================================
--- hadoop/core/trunk/CHANGES.txt (original)
+++ hadoop/core/trunk/CHANGES.txt Mon Mar 17 23:16:41 2008
@@ -105,6 +105,9 @@
     locally, the second off-rack, and the third intra-rack from the
     second. (lohit vijayarenu via cdouglas)
 
+    HADOOP-2939. Make the automated patch testing process an executable 
+    Ant target, test-patch. (nigel)
+
   OPTIMIZATIONS
 
     HADOOP-2790.  Fixed inefficient method hasSpeculativeTask by removing

Modified: hadoop/core/trunk/build.xml
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/build.xml?rev=638230&r1=638229&r2=638230&view=diff
==============================================================================
--- hadoop/core/trunk/build.xml (original)
+++ hadoop/core/trunk/build.xml Mon Mar 17 23:16:41 2008
@@ -114,6 +114,12 @@
 
   <property name="rat.reporting.classname" value="rat.Report"/>
 
+  <property name="scratch.dir" value="${user.home}/tmp"/>
+  <property name="svn.cmd" value="svn"/>
+  <property name="grep.cmd" value="grep"/>
+  <property name="patch.cmd" value="patch"/>
+
+
   <available property="clover.present" classname="com.cenqua.clover.tasks.CloverReportTask"
/>
 
   <!-- check if clover reports should be generated -->
@@ -1092,6 +1098,49 @@
      <format type="xml"/>
      </current>
   </clover-report>
+</target>
+
+<target name="findbugs.check" depends="check-for-findbugs" unless="findbugs.present">
+  <fail message="'findbugs.home' is not defined. Please pass -Dfindbugs.home=&lt;base
of Findbugs installation&gt; to Ant on the command-line." />
+</target>
+
+<target name="patch.check" unless="patch.file">
+  <fail message="'patch.file' is not defined. Please pass -Dpatch.file=&lt;location
of patch file&gt; to Ant on the command-line." />
+</target>
+
+<target name="test-patch" depends="patch.check,findbugs.check,forrest.check">
+  <exec executable="sh" failonerror="true">
+    <arg value="${basedir}/src/test/bin/test-patch.sh"/>
+    <arg value="DEVELOPER"/>
+    <arg value="${patch.file}"/>
+    <arg value="${scratch.dir}"/>
+    <arg value="${svn.cmd}"/>
+    <arg value="${grep.cmd}"/>
+    <arg value="${patch.cmd}"/>
+    <arg value="${findbugs.home}"/>
+    <arg value="${forrest.home}"/>
+    <arg value="${basedir}"/>
+  </exec>
+</target>
+
+<target name="hudson-test-patch" depends="patch.check,findbugs.check,forrest.check">
+  <exec executable="sh" failonerror="true">
+    <arg value="${basedir}/src/test/bin/test-patch.sh"/>
+    <arg value="HUDSON"/>
+    <arg value="${scratch.dir}"/>
+    <arg value="${support.dir}"/>
+    <arg value="${ps.cmd}"/>
+    <arg value="${wget.cmd}"/>
+    <arg value="${jiracli.cmd}"/>
+    <arg value="${svn.cmd}"/>
+    <arg value="${grep.cmd}"/>
+    <arg value="${patch.cmd}"/>
+    <arg value="${findbugs.home}"/>
+    <arg value="${forrest.home}"/>
+    <arg value="${basedir}"/>
+    <arg value="${trigger.url}"/>
+    <arg value="${jira.passwd}"/>
+  </exec>
 </target>
 
 </project>

Added: hadoop/core/trunk/src/test/bin/test-patch.sh
URL: http://svn.apache.org/viewvc/hadoop/core/trunk/src/test/bin/test-patch.sh?rev=638230&view=auto
==============================================================================
--- hadoop/core/trunk/src/test/bin/test-patch.sh (added)
+++ hadoop/core/trunk/src/test/bin/test-patch.sh Mon Mar 17 23:16:41 2008
@@ -0,0 +1,603 @@
+#!/bin/bash
+
+#set -x
+
+### Setup some variables.  
+### JOB_NAME, SVN_REVISION, and BUILD_NUMBER are set by Hudson if it is run by patch process
+
+###############################################################################
+parseArgs() {
+  case "$1" in
+    HUDSON)
+      ### Set HUDSON to true to indicate that this script is being run by Hudson
+      HUDSON=true
+      if [[ $# != 14 ]] ; then
+        echo "ERROR: usage $0 HUDSON <PATCH_DIR> <SUPPORT_DIR> <PS_CMD>
<WGET_CMD> <JIRACLI> <SVN_CMD> <GREP_CMD> <PATCH_CMD> <FINDBUGS_HOME>
<FORREST_HOME> <WORKSPACE_BASEDIR> <TRIGGER_BUILD> <JIRA_PASSWD>"
+        cleanupAndExit 0
+      fi
+      PATCH_DIR=$2
+      SUPPORT_DIR=$3
+      PS=$4
+      WGET=$5
+      JIRACLI=$6
+      SVN=$7
+      GREP=$8
+      PATCH=$9
+      FINDBUGS_HOME=${10}
+      FORREST_HOME=${11}
+      BASEDIR=${12}
+      TRIGGER_BUILD_URL=${13}
+      JIRA_PASSWD=${14}
+      ### Retrieve the defect number
+      if [ ! -e $PATCH_DIR/defectNum ] ; then
+        echo "Could not determine the patch to test.  Exiting."
+        cleanupAndExit 0
+      fi
+      defect=`cat $PATCH_DIR/defectNum`
+      if [ -z "$defect" ] ; then
+        echo "Could not determine the patch to test.  Exiting."
+        cleanupAndExit 0
+      fi
+      ;;
+    DEVELOPER)
+      ### Set HUDSON to false to indicate that this script is being run by a developer
+      HUDSON=false
+      if [[ $# != 9 ]] ; then
+        echo "ERROR: usage $0 DEVELOPER <PATCH_FILE> <SCRATCH_DIR> <SVN_CMD>
<GREP_CMD> <PATCH_CMD> <FINDBUGS_HOME> <FORREST_HOME> <WORKSPACE_BASEDIR>"
+        cleanupAndExit 0
+      fi
+      ### PATCH_FILE contains the location of the patchfile
+      PATCH_FILE=$2 
+      if [[ ! -e "$PATCH_FILE" ]] ; then
+        echo "Unable to locate the patch file $PATCH_FILE"
+        cleanupAndExit 0
+      fi
+      PATCH_DIR=$3
+      ### Check if $PATCH_DIR exists. If it does not exist, create a new directory
+      if [[ ! -e "$PATCH_DIR" ]] ; then
+	mkdir "$PATCH_DIR"
+	if [[ $? == 0 ]] ; then 
+	  echo "$PATCH_DIR has been created"
+	else
+	  echo "Unable to create $PATCH_DIR"
+	  cleanupAndExit 0
+	fi
+      fi
+      SVN=$4
+      GREP=$5
+      PATCH=$6
+      FINDBUGS_HOME=$7
+      FORREST_HOME=$8
+      BASEDIR=$9
+      ### Obtain the patch filename to append it to the version number
+      defect=`basename $PATCH_FILE` 
+      ;;
+    *)
+      echo "ERROR: usage $0 HUDSON [args] | DEVELOPER [args]"
+      cleanupAndExit 0
+      ;;
+  esac
+}
+
+###############################################################################
+checkout () {
+  echo ""
+  echo ""
+  echo "======================================================================"
+  echo "======================================================================"
+  echo "    Testing patch for ${defect}."
+  echo "======================================================================"
+  echo "======================================================================"
+  echo ""
+  echo ""
+  ### When run by a developer, if the workspace contains modifications, do not continue
+  if [[ $HUDSON == "false" ]] ; then
+    if [[ `$SVN stat` != "" ]] ; then
+      echo "ERROR: can't run in a workspace that contains modifications"
+      # PENDING: Uncomment the following line
+      # cleanupAndExit 0
+    fi
+  else   
+    cd $BASEDIR
+    $SVN revert -R .
+    rm -rf `$SVN status`
+    $SVN update
+  fi
+  return $?
+}
+
+###############################################################################
+setup () {
+  ### Download latest patch file (ignoring .htm and .html) when run from patch process
+  if [[ $HUDSON == "true" ]] ; then
+    $WGET -q -O $PATCH_DIR/jira http://issues.apache.org/jira/browse/$defect
+    if [[ `$GREP -c 'Patch Available' $PATCH_DIR/jira` == 0 ]] ; then
+      echo "$defect is not \"Patch Available\".  Exiting."
+      cleanupAndExit 0
+    fi
+    relativePatchURL=`$GREP -o '"/jira/secure/attachment/[0-9]*/[^"]*' $PATCH_DIR/jira |
$GREP -v -e 'htm[l]*$' | sort | tail -1 | $GREP -o '/jira/secure/attachment/[0-9]*/[^"]*'`
+    patchURL="http://issues.apache.org${relativePatchURL}"
+    patchNum=`echo $patchURL | $GREP -o '[0-9]*/' | $GREP -o '[0-9]*'`
+    echo "$defect patch is being downloaded at `date` from"
+    echo "$patchURL"
+    $WGET -q -O $PATCH_DIR/patch $patchURL
+    VERSION=${SVN_REVISION}_${defect}_PATCH-${patchNum}
+    JIRA_COMMENT="Here are the results of testing the latest attachment 
+  $patchURL
+  against trunk revision ${SVN_REVISION}."
+
+    ### Copy in any supporting files needed by this process
+    cp -r $SUPPORT_DIR/lib/* ./lib
+    #PENDING: cp -f $SUPPORT_DIR/etc/checkstyle* ./src/test
+  ### Copy the patch file to $PATCH_DIR
+  else
+    VERSION=PATCH-${defect}
+    cp $PATCH_FILE $PATCH_DIR/patch
+    if [[ $? == 0 ]] ; then
+      echo "Patch file $PATCH_FILE copied to $PATCH_DIR"
+    else
+      echo "Could not copy $PATCH_FILE to $PATCH_DIR"
+      cleanupAndExit 0
+    fi
+  fi
+  echo ""
+  echo ""
+  echo "======================================================================"
+  echo "======================================================================"
+  echo "    Pre-building trunk to determine trunk number"
+  echo "    of release audit, javac, and Findbugs warnings."
+  echo "======================================================================"
+  echo "======================================================================"
+  echo ""
+  echo ""
+  ### Do not call releaseaudit when run by a developer
+  if [[ $HUDSON == "true" ]] ; then
+    $ANT_HOME/bin/ant -Dversion="${VERSION}" -DHadoopPatchProcess= releaseaudit &>
$PATCH_DIR/trunkReleaseAuditWarnings.txt
+  fi
+  $ANT_HOME/bin/ant -Dversion="${VERSION}" -Djavac.args="-Xlint -Xmaxwarns 1000" -DHadoopPatchProcess=
clean tar &> $PATCH_DIR/trunkJavacWarnings.txt
+  $ANT_HOME/bin/ant -Dversion="${VERSION}" -Dfindbugs.home=$FINDBUGS_HOME -DHadoopPatchProcess=
findbugs &> /dev/null
+  cp $BASEDIR/build/test/findbugs/*.xml $PATCH_DIR/trunkFindbugsWarnings.xml
+}
+
+###############################################################################
+### Check for @author tags in the patch
+checkAuthor () {
+  echo ""
+  echo ""
+  echo "======================================================================"
+  echo "======================================================================"
+  echo "    Checking there are no @author tags in the patch."
+  echo "======================================================================"
+  echo "======================================================================"
+  echo ""
+  echo ""
+  authorTags=`$GREP -c -i '@author' $PATCH_DIR/patch`
+  echo "There appear to be $authorTags @author tags in the patch."
+  if [[ $authorTags != 0 ]] ; then
+    JIRA_COMMENT="$JIRA_COMMENT
+
+    @author -1.  The patch appears to contain $authorTags @author tags which the Hadoop community
has agreed to not allow in code contributions."
+    return 1
+  fi
+  JIRA_COMMENT="$JIRA_COMMENT
+
+    @author +1.  The patch does not contain any @author tags."
+  return 0
+}
+
+###############################################################################
+### Check for tests in the patch
+checkTests () {
+  echo ""
+  echo ""
+  echo "======================================================================"
+  echo "======================================================================"
+  echo "    Checking there are new or changed tests in the patch."
+  echo "======================================================================"
+  echo "======================================================================"
+  echo ""
+  echo ""
+  testReferences=`$GREP -c -i '/test' $PATCH_DIR/patch`
+  echo "There appear to be $testReferences test files referenced in the patch."
+  if [[ $testReferences == 0 ]] ; then
+    JIRA_COMMENT="$JIRA_COMMENT
+
+    tests included -1.  The patch doesn't appear to include any new or modified tests.
+                        Please justify why no tests are needed for this patch."
+    return 1
+  fi
+  JIRA_COMMENT="$JIRA_COMMENT
+
+    tests included +1.  The patch appears to include $testReferences new or modified tests."
+  return 0
+}
+
+###############################################################################
+### Attempt to apply the patch
+applyPatch () {
+  echo ""
+  echo ""
+  echo "======================================================================"
+  echo "======================================================================"
+  echo "    Applying patch."
+  echo "======================================================================"
+  echo "======================================================================"
+  echo ""
+  echo ""
+  $PATCH -E -p0 < $PATCH_DIR/patch
+  if [[ $? != 0 ]] ; then
+    echo "PATCH APPLICATION FAILED"
+    JIRA_COMMENT="$JIRA_COMMENT
+
+    patch -1.  The patch command could not apply the patch."
+    return 1
+  fi
+  return 0
+}
+
+###############################################################################
+### Check there are no javadoc warnings
+checkJavadocWarnings () {
+  echo ""
+  echo ""
+  echo "======================================================================"
+  echo "======================================================================"
+  echo "    Determining number of patched javadoc warnings."
+  echo "======================================================================"
+  echo "======================================================================"
+  echo ""
+  echo ""
+  $ANT_HOME/bin/ant -Dversion="${VERSION}" -DHadoopPatchProcess= clean javadoc | tee $PATCH_DIR/patchJavadocWarnings.txt
+  javadocWarnings=`$GREP -c '\[javadoc\] [0-9]* warning' $PATCH_DIR/patchJavadocWarnings.txt`
+  echo ""
+  echo ""
+  echo "There appear to be $javadocWarnings javadoc warnings generated by the patched build."
+  if [[ $javadocWarnings != 0 ]] ; then
+    JIRA_COMMENT="$JIRA_COMMENT
+
+    javadoc -1.  The javadoc tool appears to have generated $javadocWarnings warning messages."
+    return 1
+  fi
+  JIRA_COMMENT="$JIRA_COMMENT
+
+    javadoc +1.  The javadoc tool did not generate any warning messages."
+return 0
+}
+
+###############################################################################
+### Check there are no changes in the number of Javac warnings
+checkJavacWarnings () {
+  echo ""
+  echo ""
+  echo "======================================================================"
+  echo "======================================================================"
+  echo "    Determining number of patched javac warnings."
+  echo "======================================================================"
+  echo "======================================================================"
+  echo ""
+  echo ""
+  $ANT_HOME/bin/ant -Dversion="${VERSION}" -Djavac.args="-Xlint -Xmaxwarns 1000" -DHadoopPatchProcess=
tar &> $PATCH_DIR/patchJavacWarnings.txt
+
+  ### Compare trunk and patch javac warning numbers
+  if [[ -f $PATCH_DIR/patchJavacWarnings.txt ]] ; then
+    trunkJavacWarnings=`$GREP -o '\[javac\] [0-9]* warning' $PATCH_DIR/trunkJavacWarnings.txt
| awk '{total += $2} END {print total}'`
+    patchJavacWarnings=`$GREP -o '\[javac\] [0-9]* warning' $PATCH_DIR/patchJavacWarnings.txt
| awk '{total += $2} END {print total}'`
+    echo "There appear to be $trunkJavacWarnings javac compiler warnings before the patch
and $patchJavacWarnings javac compiler warnings after applying the patch."
+    if [[ $patchJavacWarnings != "" && $trunkJavacWarnings != "" ]] ; then
+      if [[ $patchJavacWarnings > $trunkJavacWarnings ]] ; then
+        JIRA_COMMENT="$JIRA_COMMENT
+
+    javac -1.  The applied patch generated $patchJavacWarnings javac compiler warnings (more
than the trunk's current $trunkJavacWarnings warnings)."
+        return 1
+      fi
+    fi
+  fi
+  JIRA_COMMENT="$JIRA_COMMENT
+
+    javac +1.  The applied patch does not generate any new javac compiler warnings."
+  return 0
+}
+
+###############################################################################
+### Check there are no changes in the number of release audit (RAT) warnings
+checkReleaseAuditWarnings () {
+  echo ""
+  echo ""
+  echo "======================================================================"
+  echo "======================================================================"
+  echo "    Determining number of patched release audit warnings."
+  echo "======================================================================"
+  echo "======================================================================"
+  echo ""
+  echo ""
+  $ANT_HOME/bin/ant -Dversion="${VERSION}" -DHadoopPatchProcess= releaseaudit &> $PATCH_DIR/patchReleaseAuditWarnings.txt
+
+  ### Compare trunk and patch release audit warning numbers
+  if [[ -f $PATCH_DIR/patchReleaseAuditWarnings.txt ]] ; then
+    trunkReleaseAuditWarnings=`$GREP -c '\!?????' $PATCH_DIR/trunkReleaseAuditWarnings.txt`
+    patchReleaseAuditWarnings=`$GREP -c '\!?????' $PATCH_DIR/patchReleaseAuditWarnings.txt`
+    echo ""
+    echo ""
+    echo "There appear to be $trunkReleaseAuditWarnings release audit warnings before the
patch and $patchReleaseAuditWarnings release audit warnings after applying the patch."
+    if [[ $patchReleaseAuditWarnings != "" && $trunkReleaseAuditWarnings != "" ]]
; then
+      if [[ $patchReleaseAuditWarnings > $trunkReleaseAuditWarnings ]] ; then
+        JIRA_COMMENT="$JIRA_COMMENT
+
+    release audit -1.  The applied patch generated $patchReleaseAuditWarnings release audit
warnings (more than the trunk's current $trunkReleaseAuditWarnings warnings)."
+        $GREP '\!?????' $PATCH_DIR/patchReleaseAuditWarnings.txt > $PATCH_DIR/patchReleaseAuditProblems.txt
+        $GREP '\!?????' $PATCH_DIR/trunkReleaseAuditWarnings.txt > $PATCH_DIR/trunkReleaseAuditProblems.txt
+        echo "A diff of patched release audit warnings with trunk release audit warnings."
> $PATCH_DIR/releaseAuditDiffWarnings.txt
+        echo "Lines that start with ????? in the release audit report indicate files that
do not have an Apache license header." > $PATCH_DIR/releaseAuditDiffWarnings.txt
+        echo "" > $PATCH_DIR/releaseAuditDiffWarnings.txt
+        diff $PATCH_DIR/patchReleaseAuditProblems.txt $PATCH_DIR/trunkReleaseAuditProblems.txt
>> $PATCH_DIR/releaseAuditDiffWarnings.txt
+        JIRA_COMMENT_FOOTER="Release audit warnings: http://hudson.zones.apache.org/hudson/job/$JOB_NAME/$BUILD_NUMBER/artifact/trunk/current/releaseAuditDiffWarnings.txt
+$JIRA_COMMENT_FOOTER"
+        return 1
+      fi
+    fi
+  fi
+  JIRA_COMMENT="$JIRA_COMMENT
+
+    release audit +1.  The applied patch does not generate any new release audit warnings."
+  return 0
+}
+
+###############################################################################
+### Check there are no changes in the number of Checkstyle warnings
+checkStyle () {
+  echo ""
+  echo ""
+  echo "======================================================================"
+  echo "======================================================================"
+  echo "    Determining number of patched checkstyle warnings."
+  echo "======================================================================"
+  echo "======================================================================"
+  echo ""
+  echo ""
+  echo "THIS IS NOT IMPLEMENTED YET"
+  echo ""
+  echo ""
+  $ANT_HOME/bin/ant -Dversion="${VERSION}" -DHadoopPatchProcess= checkstyle
+  JIRA_COMMENT_FOOTER="Checkstyle results: http://hudson.zones.apache.org/hudson/job/$JOB_NAME/$BUILD_NUMBER/artifact/trunk/build/test/checkstyle-errors.html
+$JIRA_COMMENT_FOOTER"
+  ### TODO: calculate actual patchStyleErrors
+#  patchStyleErrors=0
+#  if [[ $patchStyleErrors != 0 ]] ; then
+#    JIRA_COMMENT="$JIRA_COMMENT
+#
+#    checkstyle -1.  The patch generated $patchStyleErrors code style errors."
+#    return 1
+#  fi
+#  JIRA_COMMENT="$JIRA_COMMENT
+#
+#    checkstyle +1.  The patch generated 0 code style errors."
+  return 0
+}
+
+###############################################################################
+### Check there are no changes in the number of Findbugs warnings
+checkFindbugsWarnings () {
+  echo ""
+  echo ""
+  echo "======================================================================"
+  echo "======================================================================"
+  echo "    Determining number of patched Findbugs warnings."
+  echo "======================================================================"
+  echo "======================================================================"
+  echo ""
+  echo ""
+  $ANT_HOME/bin/ant -Dversion="${VERSION}" -Dfindbugs.home=$FINDBUGS_HOME -DHadoopPatchProcess=
findbugs 
+  if [ $? != 0 ] ; then
+    JIRA_COMMENT="$JIRA_COMMENT
+
+    findbugs -1.  The patch appears to cause Findbugs to fail."
+    return 1
+  fi
+JIRA_COMMENT_FOOTER="Findbugs warnings: http://hudson.zones.apache.org/hudson/job/$JOB_NAME/$BUILD_NUMBER/artifact/trunk/build/test/findbugs/newPatchFindbugsWarnings.html
+$JIRA_COMMENT_FOOTER"
+  cp $BASEDIR/build/test/findbugs/*.xml $PATCH_DIR/patchFindbugsWarnings.xml
+$FINDBUGS_HOME/bin/setBugDatabaseInfo -timestamp "01/01/1999" \
+    $PATCH_DIR/trunkFindbugsWarnings.xml \
+    $PATCH_DIR/trunkFindbugsWarnings.xml
+  $FINDBUGS_HOME/bin/setBugDatabaseInfo -timestamp "01/01/2000" \
+    $PATCH_DIR/patchFindbugsWarnings.xml \
+    $PATCH_DIR/patchFindbugsWarnings.xml
+  $FINDBUGS_HOME/bin/computeBugHistory -output $PATCH_DIR/findbugsMerge.xml \
+    $PATCH_DIR/trunkFindbugsWarnings.xml \
+    $PATCH_DIR/patchFindbugsWarnings.xml
+  findbugsWarnings=`$FINDBUGS_HOME/bin/filterBugs -first "01/01/2000" $PATCH_DIR/findbugsMerge.xml
\
+    $BASEDIR/build/test/findbugs/newPatchFindbugsWarnings.xml | /usr/bin/awk '{print $1}'`
+  $FINDBUGS_HOME/bin/convertXmlToText -html \
+    $BASEDIR/build/test/findbugs/newPatchFindbugsWarnings.xml \
+    $BASEDIR/build/test/findbugs/newPatchFindbugsWarnings.html
+  if [[ $findbugsWarnings != 0 ]] ; then
+    JIRA_COMMENT="$JIRA_COMMENT
+
+    findbugs -1.  The patch appears to introduce $findbugsWarnings new Findbugs warnings."
+    return 1
+  fi
+  JIRA_COMMENT="$JIRA_COMMENT
+
+    findbugs +1.  The patch does not introduce any new Findbugs warnings."
+  return 0
+}
+
+###############################################################################
+### Run the test-core target
+runCoreTests () {
+  echo ""
+  echo ""
+  echo "======================================================================"
+  echo "======================================================================"
+  echo "    Running core tests."
+  echo "======================================================================"
+  echo "======================================================================"
+  echo ""
+  echo ""
+  
+  ### Kill any rogue build processes from the last attempt
+  $PS -auxwww | $GREP HadoopPatchProcess | /usr/bin/nawk '{print $2}' | /usr/bin/xargs -t
-I {} /usr/bin/kill -9 {} > /dev/null
+
+  $ANT_HOME/bin/ant -Dversion="${VERSION}" -DHadoopPatchProcess= -Dtest.junit.output.format=xml
-Dtest.output=yes -Dcompile.c++=yes -Dforrest.home=$FORREST_HOME create-c++-configure docs
tar test-core
+  if [[ $? != 0 ]] ; then
+    JIRA_COMMENT="$JIRA_COMMENT
+
+    core tests -1.  The patch failed core unit tests."
+    return 1
+  fi
+  JIRA_COMMENT="$JIRA_COMMENT
+
+    core tests +1.  The patch passed core unit tests."
+  return 0
+}
+
+###############################################################################
+### Run the test-contrib target
+runContribTests () {
+  echo ""
+  echo ""
+  echo "======================================================================"
+  echo "======================================================================"
+  echo "    Running contrib tests."
+  echo "======================================================================"
+  echo "======================================================================"
+  echo ""
+  echo ""
+
+  ### Kill any rogue build processes from the last attempt
+  $PS -auxwww | $GREP HadoopPatchProcess | /usr/bin/nawk '{print $2}' | /usr/bin/xargs -t
-I {} /usr/bin/kill -9 {} > /dev/null
+
+  $ANT_HOME/bin/ant -Dversion="${VERSION}" -DHadoopPatchProcess= -Dtest.junit.output.format=xml
-Dtest.output=yes test-contrib
+  if [[ $? != 0 ]] ; then
+    JIRA_COMMENT="$JIRA_COMMENT
+
+    contrib tests -1.  The patch failed contrib unit tests."
+    return 1
+  fi
+  JIRA_COMMENT="$JIRA_COMMENT
+
+    contrib tests +1.  The patch passed contrib unit tests."
+  return 0
+}
+
+###############################################################################
+### Submit a comment to the defect's Jira
+submitJiraComment () {
+  local result=$1
+  ### Do not output the value of JIRA_COMMENT_FOOTER when run by a developer
+  if [[  $HUDSON == "false" ]] ; then
+    JIRA_COMMENT_FOOTER=""
+  fi
+  if [[ $result == 0 ]] ; then
+    comment="+1 overall.  $JIRA_COMMENT
+
+$JIRA_COMMENT_FOOTER"
+  else
+    comment="-1 overall.  $JIRA_COMMENT
+
+$JIRA_COMMENT_FOOTER"
+  fi
+  ### Output the test result to the console
+  echo "
+
+
+
+$comment"  
+
+  if [[ $HUDSON == "true" ]] ; then
+    echo ""
+    echo ""
+    echo "======================================================================"
+    echo "======================================================================"
+    echo "    Adding comment to Jira."
+    echo "======================================================================"
+    echo "======================================================================"
+    echo ""
+    echo ""
+
+    ### Update Jira with a comment
+    export USER=hudson
+    $JIRACLI -s issues.apache.org/jira login hadoopqa $JIRA_PASSWD
+    $JIRACLI -s issues.apache.org/jira comment $defect "$comment"
+    $JIRACLI -s issues.apache.org/jira logout
+  fi
+}
+
+###############################################################################
+### Cleanup files
+cleanupAndExit () {
+  local result=$1
+  if [[ $HUDSON == "true" ]] ; then
+    if [ -e "$PATCH_DIR" ] ; then
+      mv $PATCH_DIR $BASEDIR
+    fi
+  fi
+  echo ""
+  echo ""
+  echo "======================================================================"
+  echo "======================================================================"
+  echo "    Finished build."
+  echo "======================================================================"
+  echo "======================================================================"
+  echo ""
+  echo ""
+  exit $result
+}
+
+###############################################################################
+###############################################################################
+###############################################################################
+
+JIRA_COMMENT=""
+JIRA_COMMENT_FOOTER="Console output: http://hudson.zones.apache.org/hudson/job/$JOB_NAME/$BUILD_NUMBER/console
+
+This message is automatically generated."
+
+### Check if arguments to the script have been specified properly or not
+parseArgs $@
+cd $BASEDIR
+
+checkout
+RESULT=$?
+if [[ $HUDSON == "true" ]] ; then
+  if [[ $RESULT != 0 ]] ; then
+    ### Resubmit build.
+    $WGET -q -O $PATCH_DIR/build $TRIGGER_BUILD_URL
+    exit 100
+  fi
+fi
+setup
+checkAuthor
+RESULT=$?
+
+checkTests
+(( RESULT = RESULT + $? ))
+applyPatch
+if [[ $? != 0 ]] ; then
+  submitJiraComment 1
+  cleanupAndExit $?
+fi
+checkJavadocWarnings
+(( RESULT = RESULT + $? ))
+checkJavacWarnings
+(( RESULT = RESULT + $? ))
+checkStyle
+(( RESULT = RESULT + $? ))
+checkFindbugsWarnings
+(( RESULT = RESULT + $? ))
+### Do not call these when run by a developer 
+if [[ $HUDSON == "true" ]] ; then
+  checkReleaseAuditWarnings
+  (( RESULT = RESULT + $? ))
+  runCoreTests
+  (( RESULT = RESULT + $? ))
+  runContribTests
+  (( RESULT = RESULT + $? ))
+fi
+JIRA_COMMENT_FOOTER="Test results: http://hudson.zones.apache.org/hudson/job/$JOB_NAME/$BUILD_NUMBER/testReport/
+$JIRA_COMMENT_FOOTER"
+
+submitJiraComment $RESULT
+cleanupAndExit $RESULT
+
+

Propchange: hadoop/core/trunk/src/test/bin/test-patch.sh
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: hadoop/core/trunk/src/test/bin/test-patch.sh
------------------------------------------------------------------------------
    svn:executable = *

Propchange: hadoop/core/trunk/src/test/bin/test-patch.sh
------------------------------------------------------------------------------
    svn:keywords = Id Revision HeadURL



Mime
View raw message