mirror of https://github.com/apache/flink.git
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
182 lines
5.5 KiB
Bash
182 lines
5.5 KiB
Bash
#!/usr/bin/env 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.
|
|
#
|
|
|
|
|
|
#
|
|
# QA check your changes.
|
|
# Possible options:
|
|
# BRANCH set a another branch as the "check" reference
|
|
#
|
|
#
|
|
# Use the tool like this "BRANCH=release-0.8 ./tools/qa-check.sh"
|
|
#
|
|
|
|
|
|
BRANCH=${BRANCH:-origin/master}
|
|
|
|
|
|
|
|
here="`dirname \"$0\"`" # relative
|
|
here="`( cd \"$here\" && pwd )`" # absolutized and normalized
|
|
if [ -z "$here" ] ; then
|
|
# error; for some reason, the path is not accessible
|
|
# to the script (e.g. permissions re-evaled after suid)
|
|
exit 1 # fail
|
|
fi
|
|
flink_home="`dirname \"$here\"`"
|
|
|
|
cd $here
|
|
|
|
if [ ! -d "_qa_workdir" ] ; then
|
|
echo "_qa_workdir doesnt exist. Creating it"
|
|
mkdir _qa_workdir
|
|
fi
|
|
|
|
cd _qa_workdir
|
|
|
|
if [ ! -d "flink" ] ; then
|
|
echo "There is no flink copy in the workdir. Cloning flink"
|
|
git clone https://git-wip-us.apache.org/repos/asf/flink.git flink
|
|
fi
|
|
|
|
cd flink
|
|
# fetch and checkout quietly
|
|
git fetch -q origin
|
|
git checkout -q $BRANCH
|
|
cd $here
|
|
# go to refrence flink directory
|
|
|
|
cd _qa_workdir
|
|
VAR_DIR=`pwd`
|
|
cd flink
|
|
|
|
# Initialize variables
|
|
export TESTS_PASSED=true
|
|
# Store output of results in a file in the qa dir
|
|
QA_OUTPUT="$VAR_DIR/qa_results.txt"
|
|
rm -f "$QA_OUTPUT"
|
|
|
|
append_output() {
|
|
echo "$1"
|
|
echo "$1" >> "$QA_OUTPUT"
|
|
}
|
|
|
|
goToTestDirectory() {
|
|
cd $flink_home
|
|
}
|
|
|
|
############################ Methods ############################
|
|
|
|
############ Javadocs ############
|
|
JAVADOC_MVN_COMMAND="mvn javadoc:aggregate -Pdocs-and-source -Dmaven.javadoc.failOnError=false -Dquiet=false | grep \"WARNING\|warning\|error\" | wc -l"
|
|
|
|
referenceJavadocsErrors() {
|
|
eval $JAVADOC_MVN_COMMAND > "$VAR_DIR/_JAVADOCS_NUM_WARNINGS"
|
|
}
|
|
|
|
|
|
checkJavadocsErrors() {
|
|
OLD_JAVADOC_ERR_CNT=`cat $VAR_DIR/_JAVADOCS_NUM_WARNINGS`
|
|
NEW_JAVADOC_ERR_CNT=`eval $JAVADOC_MVN_COMMAND`
|
|
if [ "$NEW_JAVADOC_ERR_CNT" -gt "$OLD_JAVADOC_ERR_CNT" ]; then
|
|
append_output ":-1: The change increases the number of javadoc errors from $OLD_JAVADOC_ERR_CNT to $NEW_JAVADOC_ERR_CNT"
|
|
TESTS_PASSED=false
|
|
else
|
|
append_output ":+1: The number of javadoc errors was $OLD_JAVADOC_ERR_CNT and is now $NEW_JAVADOC_ERR_CNT"
|
|
fi
|
|
}
|
|
|
|
|
|
############ Compiler warnings ############
|
|
COMPILER_WARN_MVN_COMMAND="mvn clean compile -Dmaven.compiler.showWarning=true -Dmaven.compiler.showDeprecation=true | grep \"WARNING\""
|
|
referenceCompilerWarnings() {
|
|
eval "$COMPILER_WARN_MVN_COMMAND | tee $VAR_DIR/_COMPILER_REFERENCE_WARNINGS | wc -l" > "$VAR_DIR/_COMPILER_NUM_WARNINGS"
|
|
}
|
|
|
|
checkCompilerWarnings() {
|
|
OLD_COMPILER_ERR_CNT=`cat $VAR_DIR/_COMPILER_NUM_WARNINGS`
|
|
NEW_COMPILER_ERR_CNT=`eval $COMPILER_WARN_MVN_COMMAND | tee $VAR_DIR/_COMPILER_NEW_WARNINGS | wc -l`
|
|
if [ "$NEW_COMPILER_ERR_CNT" -gt "$OLD_COMPILER_ERR_CNT" ]; then
|
|
append_output ":-1: The change increases the number of compiler warnings from $OLD_COMPILER_ERR_CNT to $NEW_COMPILER_ERR_CNT"
|
|
append_output '```diff'
|
|
append_output "First 100 warnings:"
|
|
append_output "`diff $VAR_DIR/_COMPILER_REFERENCE_WARNINGS $VAR_DIR/_COMPILER_NEW_WARNINGS | head -n 100`"
|
|
append_output '```'
|
|
TESTS_PASSED=false
|
|
else
|
|
append_output ":+1: The number of compiler warnings was $OLD_COMPILER_ERR_CNT and is now $NEW_COMPILER_ERR_CNT"
|
|
fi
|
|
}
|
|
|
|
############ Files in lib ############
|
|
BUILD_MVN_COMMAND="mvn clean package -DskipTests -Dmaven.javadoc.skip=true"
|
|
COUNT_LIB_FILES="find . | grep \"\/lib\/\" | grep -v \"_qa_workdir\" | wc -l"
|
|
referenceLibFiles() {
|
|
eval $BUILD_MVN_COMMAND > /dev/null
|
|
eval $COUNT_LIB_FILES > "$VAR_DIR/_NUM_LIB_FILES"
|
|
}
|
|
|
|
checkLibFiles() {
|
|
OLD_LIB_FILES_CNT=`cat $VAR_DIR/_NUM_LIB_FILES`
|
|
eval $BUILD_MVN_COMMAND > /dev/null
|
|
NEW_LIB_FILES_CNT=`eval $COUNT_LIB_FILES`
|
|
if [ "$NEW_LIB_FILES_CNT" -gt "$OLD_LIB_FILES_CNT" ]; then
|
|
append_output ":-1: The change increases the number of dependencies in the lib/ folder from $OLD_LIB_FILES_CNT to $NEW_LIB_FILES_CNT"
|
|
TESTS_PASSED=false
|
|
else
|
|
append_output ":+1: The number of files in the lib/ folder was $OLD_LIB_FILES_CNT before the change and is now $NEW_LIB_FILES_CNT"
|
|
fi
|
|
}
|
|
|
|
############ @author tag ############
|
|
|
|
checkAuthorTag() {
|
|
# we are grep-ing for "java" but we've messed up the string a bit so that it doesn't find exactly this line.
|
|
if [ `grep -r "@author" . | grep "ja""va" | wc -l` -gt "0" ]; then
|
|
append_output ":-1: The change contains @author tags"
|
|
TESTS_PASSED=false
|
|
fi
|
|
}
|
|
|
|
|
|
################################### QA checks ###################################
|
|
|
|
append_output "Computing Flink QA-Check results (please be patient)."
|
|
|
|
##### Methods to be executed on the current 'master'
|
|
referenceJavadocsErrors
|
|
referenceCompilerWarnings
|
|
referenceLibFiles
|
|
|
|
|
|
goToTestDirectory
|
|
## Methods to be executed on the changes (flink root dir)
|
|
checkJavadocsErrors
|
|
checkCompilerWarnings
|
|
checkLibFiles
|
|
checkAuthorTag
|
|
|
|
|
|
append_output "QA-Check finished."
|
|
if [ "$TESTS_PASSED" == "true" ]; then
|
|
append_output "Overall result: :+1:. All tests passed"
|
|
else
|
|
append_output "Overall result: :-1:. Some tests failed. Please check messages above"
|
|
fi
|