#!/bin/bash # # Licensed 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. if [ "${TESTPATCHDEBUG}" == "true" ] ; then set -x fi BASEDIR=$(pwd) TASKNAME="TESTS" OP="" TEMPDIR="" REPORTDIR="" SUMMARYFILE="" STDOUT="/dev/null" MVNPASSTHRU="" ############################################################################### cleanupAndExit() { exit $1 } ############################################################################### printUsage() { echo "Usage: $0 --taskname | (--op=pre|post|report --tempdir= --reportdir= --summaryfile=) [--verbose] [-D...] [-P...]" echo } ############################################################################### parseArgs() { for i in $* do case $i in --taskname) echo ${TASKNAME} exit 0 ;; --op=*) OP=${i#*=} ;; --tempdir=*) TEMPDIR=${i#*=} ;; --reportdir=*) REPORTDIR=${i#*=} ;; --summaryfile=*) SUMMARYFILE=${i#*=} ;; --verbose) STDOUT="/dev/stdout" ;; -D*) MVNPASSTHRU="${MVNPASSTHRU} $i" ;; -P*) MVNPASSTHRU="${MVNPASSTHRU} $i" ;; esac done if [[ "${TASKNAME}" == "" || "${OP}" == "" || "${TEMPDIR}" == "" || "${REPORTDIR}" == "" || "${SUMMARYFILE}" == "" ]] ; then echo "Missing options" echo printUsage cleanupAndExit 1 fi if [[ "${OP}" != "pre" && "${OP}" != "post" && "${OP}" != "report" ]] ; then echo "Invalid operation" echo printUsage cleanupAndExit 1 fi } ############################################################################### parseArgs "$@" case $OP in pre) ;; post) mvn test ${MVNPASSTHRU} -Dmaven.test.failure.ignore=true \ -Dmaven.test.error.ignore=true -fae -Doozie.test.waitfor.ratio=3 \ -Dtest.timeout=7200 | tee ${TEMPDIR}/${TASKNAME}.out >> $STDOUT exitCode=${PIPESTATUS[0]} if [[ ! "${MVNPASSTHRU}" =~ "-Dtest=" || ("${MVNPASSTHRU}" =~ "TestHiveActionExecutor" || "${MVNPASSTHRU}" =~ "TestHiveMain") ]] ; then # we need to do this 2nd run because Pig 0.9 and Hive 0.9 require different # versions of antlr. Once we move to Pig 0.10 then we don't need this. mvn test -Dtest=TestHiveActionExecutor,TestHiveMain ${MVNPASSTHRU} \ -PtestHive -Dmaven.test.failure.ignore=true -Dmaven.test.error.ignore=true \ -fae -Doozie.test.waitfor.ratio=3 -Dtest.timeout=7200 \ | tee -a ${TEMPDIR}/${TASKNAME}.out >> $STDOUT exitCode=`expr $exitCode + ${PIPESTATUS[0]}` fi echo "$exitCode" > ${TEMPDIR}/${TASKNAME}.exitCode ;; report) failedTests=`find . -name 'TEST*.xml' | xargs grep -l -E "> $SUMMARYFILE echo "" >> ${SUMMARYFILE} echo "${failedTests}" >> $SUMMARYFILE echo "" >> ${SUMMARYFILE} else echo "-1 ${TASKNAME} - patch does not compile, cannot run testcases" >> $SUMMARYFILE fi else echo "+1 ${TASKNAME}" >> $SUMMARYFILE fi echo " $testsRun" >> $SUMMARYFILE echo " $testsFailed" >> $SUMMARYFILE echo " $testsErrors" >> $SUMMARYFILE ;; esac exit 0