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.
117 lines
4.3 KiB
Bash
117 lines
4.3 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.
|
|
################################################################################
|
|
|
|
#
|
|
# This file contains generic control over the test execution.
|
|
#
|
|
|
|
HERE="`dirname \"$0\"`" # relative
|
|
HERE="`( cd \"$HERE\" && pwd )`" # absolutized and normalized
|
|
if [ -z "$HERE" ] ; then
|
|
exit 1
|
|
fi
|
|
|
|
source "${HERE}/stage.sh"
|
|
source "${HERE}/maven-utils.sh"
|
|
source "${HERE}/controller_utils.sh"
|
|
|
|
STAGE=$1
|
|
|
|
# =============================================================================
|
|
# Step 0: Check & print environment information & configure env
|
|
# =============================================================================
|
|
|
|
# check preconditions
|
|
if [ -z "$DEBUG_FILES_OUTPUT_DIR" ] ; then
|
|
echo "ERROR: Environment variable 'DEBUG_FILES_OUTPUT_DIR' is not set but expected by test_controller.sh. Tests may use this location to store debugging files."
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -d "$DEBUG_FILES_OUTPUT_DIR" ] ; then
|
|
echo "ERROR: Environment variable DEBUG_FILES_OUTPUT_DIR=$DEBUG_FILES_OUTPUT_DIR points to a directory that does not exist"
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z "$STAGE" ] ; then
|
|
echo "ERROR: Environment variable 'STAGE' is not set but expected by test_controller.sh. THe variable refers to the stage being executed."
|
|
exit 1
|
|
fi
|
|
|
|
echo "Printing environment information"
|
|
|
|
echo "PATH=$PATH"
|
|
run_mvn -version
|
|
echo "Commit: $(git rev-parse HEAD)"
|
|
print_system_info
|
|
|
|
# enable coredumps for this process
|
|
ulimit -c unlimited
|
|
|
|
# configure JVMs to produce heap dumps
|
|
export JAVA_TOOL_OPTIONS="-XX:+HeapDumpOnOutOfMemoryError"
|
|
|
|
# some tests provide additional logs if they find this variable
|
|
export IS_CI=true
|
|
|
|
export WATCHDOG_ADDITIONAL_MONITORING_FILES="$DEBUG_FILES_OUTPUT_DIR/mvn-*.log"
|
|
|
|
source "${HERE}/watchdog.sh"
|
|
|
|
# =============================================================================
|
|
# Step 1: Rebuild jars and install Flink to local maven repository
|
|
# =============================================================================
|
|
|
|
LOG4J_PROPERTIES=${HERE}/log4j.properties
|
|
MVN_LOGGING_OPTIONS="-Dlog.dir=${DEBUG_FILES_OUTPUT_DIR} -Dlog4j.configurationFile=file://$LOG4J_PROPERTIES"
|
|
|
|
MVN_COMMON_OPTIONS="-Dfast -Pskip-webui-build $MVN_LOGGING_OPTIONS"
|
|
MVN_COMPILE_OPTIONS="-DskipTests"
|
|
MVN_COMPILE_MODULES=$(get_compile_modules_for_stage ${STAGE})
|
|
|
|
CALLBACK_ON_TIMEOUT="print_stacktraces | tee ${DEBUG_FILES_OUTPUT_DIR}/jps-traces.out"
|
|
run_with_watchdog "run_mvn $MVN_COMMON_OPTIONS $MVN_COMPILE_OPTIONS $PROFILE $MVN_COMPILE_MODULES install" $CALLBACK_ON_TIMEOUT
|
|
EXIT_CODE=$?
|
|
|
|
if [ $EXIT_CODE != 0 ]; then
|
|
echo "=============================================================================="
|
|
echo "Compilation failure detected, skipping test execution."
|
|
echo "=============================================================================="
|
|
exit $EXIT_CODE
|
|
fi
|
|
|
|
|
|
# =============================================================================
|
|
# Step 2: Run tests
|
|
# =============================================================================
|
|
|
|
MVN_TEST_OPTIONS="-Dflink.tests.with-openssl"
|
|
MVN_TEST_MODULES=$(get_test_modules_for_stage ${STAGE})
|
|
|
|
run_with_watchdog "run_mvn $MVN_COMMON_OPTIONS $MVN_TEST_OPTIONS $PROFILE $MVN_TEST_MODULES verify" $CALLBACK_ON_TIMEOUT
|
|
EXIT_CODE=$?
|
|
|
|
# =============================================================================
|
|
# Step 3: Put extra logs into $DEBUG_FILES_OUTPUT_DIR
|
|
# =============================================================================
|
|
|
|
collect_coredumps $(pwd) $DEBUG_FILES_OUTPUT_DIR
|
|
|
|
# Exit code for CI build success/failure
|
|
exit $EXIT_CODE
|