#!/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 script is used to run regression test of Doris Backend # Usage: $0 # Optional shell_options: # --clean clean output of regression test # --run run regression test. build framework if necessary # # Optional framework_options # -h print all other_options # -s xxx suite name # -g xxx group name # -c xxx jdbc url # -u xxx jdbc user # -genOut generate .out file # -forceGenOut delete and generate .out file # # log to ${DORIS_HOME}/output/regression/log ##################################################################### set -eo pipefail #set -x ROOT=`dirname "$0"` ROOT=`cd "$ROOT"; pwd` DORIS_HOME=${ROOT} # Check args usage() { echo " Usage: $0 Optional shell_options: --clean clean output of regression test framework --run run regression test. build framework if necessary Optional framework_options: -s run a specified suite -g run a specified group -h **print all framework options usage** -genOut generate .out file if not exist -forceGenOut delete and generate .out file if not exist Eg. $0 build regression test framework and run all suite which in default group $0 --run test_select run a suite which named as test_select $0 --run 'test*' run all suite which named start with 'test', note that you must quota with '' $0 --run -s test_select run a suite which named as test_select $0 --run test_select -genOut generate output file for test_select if not exist $0 --run -g default run all suite in the group which named as default $0 --clean clean output of regression test framework $0 --clean --run test_select clean output and build regression test framework and run a suite which named as test_select $0 --run -h print framework options Log path: \${DORIS_HOME}/output/regression-test/log Default config file: \${DORIS_HOME}/regression-test/conf/regression-conf.groovy " exit 1 } CLEAN= WRONG_CMD= RUN= if [ $# == 0 ] ; then #default CLEAN=0 WRONG_CMD=0 RUN=1 else CLEAN=0 RUN=0 WRONG_CMD=0 while true; do case "$1" in --clean) CLEAN=1 ; shift ;; --run) RUN=1 ; shift ;; *) if [ ${RUN} -eq 0 ] && [ ${CLEAN} -eq 0 ]; then WRONG_CMD=1 fi break ;; esac done fi if [ ${WRONG_CMD} -eq 1 ]; then usage exit 1 fi # set maven MVN_CMD=mvn if [[ ! -z ${CUSTOM_MVN} ]]; then MVN_CMD=${CUSTOM_MVN} fi if ! ${MVN_CMD} --version; then echo "Error: mvn is not found" exit 1 fi export MVN_CMD CONF_DIR=${DORIS_HOME}/regression-test/conf CONFIG_FILE=${CONF_DIR}/regression-conf.groovy LOG_CONFIG_FILE=${CONF_DIR}/logback.xml FRAMEWORK_SOURCE_DIR=${DORIS_HOME}/regression-test/framework REGRESSION_TEST_BUILD_DIR=${FRAMEWORK_SOURCE_DIR}/target OUTPUT_DIR=${DORIS_HOME}/output/regression-test LOG_OUTPUT_FILE=${OUTPUT_DIR}/log RUN_JAR=${OUTPUT_DIR}/lib/regression-test-*.jar if [ ${CLEAN} -eq 1 ]; then rm -rf ${REGRESSION_TEST_BUILD_DIR} rm -rf ${OUTPUT_DIR} fi if [ ${RUN} -ne 1 ]; then echo "Finished" exit 0 fi if [ ! -f ${RUN_JAR} ]; then echo "===== Build Regression Test Framework =====" cd ${DORIS_HOME}/regression-test/framework ${MVN_CMD} package cd ${DORIS_HOME} mkdir -p ${OUTPUT_DIR}/{lib,log} cp -r ${REGRESSION_TEST_BUILD_DIR}/regression-test-*.jar ${OUTPUT_DIR}/lib fi # check java home if [[ -z ${JAVA_HOME} ]]; then echo "Error: JAVA_HOME is not set" exit 1 fi # check java version export JAVA=${JAVA_HOME}/bin/java REGRESSION_OPTIONS_PREFIX= # contains framework options and not start with - # it should be suite name if [ $# -ne 0 ] && [[ "$1" =~ ^[^-].* ]]; then # specify suiteName REGRESSION_OPTIONS_PREFIX='-s' fi echo "===== Run Regression Test =====" $JAVA -DDORIS_HOME=$DORIS_HOME \ -DLOG_PATH=$LOG_OUTPUT_FILE \ -Dlogback.configurationFile=${LOG_CONFIG_FILE} \ -jar ${RUN_JAR} \ -cf ${CONFIG_FILE} \ ${REGRESSION_OPTIONS_PREFIX} "$@"