#!/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