blob: 6aaea16a4ea4a968f898839b1c774c35367c9e56 [file] [log] [blame]
#!/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.
export ROOT_PATH=$(pwd)
export SYS_PATH=${ROOT_PATH}/sys
export QE_PATH=${ROOT_PATH}/qe/palo2/src
export QE_BUG_PATH=${ROOT_PATH}/qe/query_regression
export REPORT_PATH=${ROOT_PATH}/result
export ENV_PATH=${ROOT_PATH}/lib
export PYTHONPATH=${PYTHONPATH}:${ROOT_PATH}:${ROOT_PATH}/sys:${ROOT_PATH}/qe/palo2/lib:${ROOT_PATH}/deploy
rm -f ${ROOT_PATH}/*.xml | tee
rm -f ${ROOT_PATH}/*.html | tee
rm -rf ${REPORT_PATH}
mkdir -p ${REPORT_PATH}
cd ${SYS_PATH}
if [[ -z ${testsuite} ]]; then
testsuite=normal
fi
if [[ -z ${PROCESS_NUM} ]]; then
PROCESS_NUM=30
fi
if [[ -z ${RESTART_BE_AUTO} ]]; then
RESTART_BE_AUTO=false
fi
[[ -e /tmp/fd1 ]] || mkfifo /tmp/fd1
exec 3<>/tmp/fd1
rm -rf /tmp/fd1
for ((i=1;i<=PROCESS_NUM;i++))
do
echo >&3
done
function check_cluster ()
{
# check if fe or be dead and start it
cd ${ENV_PATH}
python node_op.py -c '''
import Node
Node.check_cluster(fe_check=False)
'''
}
function pytest_execute ()
{
case_file=$1
ls ${case_file}
pytest -sv --junit-xml="${REPORT_PATH}"/"${case_file%.py}".xml --html="${REPORT_PATH}"/"${case_file%.py}".html "${case_file}" --tb=native 2>&1 | tee "${case_file%.py}".log
sleep 1
}
function case_execute ()
{
for case_file in "$@"
do
read -r -u3
{
echo "run ${case_file}"
pytest_execute "${case_file}"
if [[ "${RESTART_BE_AUTO}" == true ]]; then
check_cluster
fi
echo >&3
}&
done
}
# 执行时间较长,最先执行
function long_time_case ()
{
case_files='test_sys_partition_complex_without_restart_be.py
test_sys_storage_medium.py test_sys_delete_load.py'
cd ${SYS_PATH}
case_execute "${case_files}"
}
function query_case ()
{
# query case
case_files='test_query_predicates.py
test_query_others.py
test_query_order_group.py
test_query_windows_quick.py
test_query_window_basic.py
test_query_complicate.py
test_query_union_join.py
test_query_join.py
test_query_agg.py
test_query_largeint.py
test_query_datatype.py
test_query_string_function.py
test_query_subselect_1.py
test_query_subselect_2.py
test_query_numeric_function.py
test_query_function_more_quick.py
test_query_datetime_function.py
test_query_with.py
test_query_constant_assigned.py
test_query_percentile.py
test_query_spatial_function.py
test_query_grouping_sets.py
test_query_except.py
test_query_intersect.py
test_query_boolean.py
test_query_predicate_pushdown.py
test_query_join_explain.py
test_query_explain.py
test_query_lateral_view.py
test_query_bitmap_filter.py'
cd "${QE_PATH}"
case_execute "${case_files}"
# query bug case
case_files='test_execute.py'
cd "${QE_BUG_PATH}"
case_execute "${case_files}"
}
function sys_case ()
{
# sys case
case_files='test_sys_verify.py
test_sys_bloom_filter_a.py
test_sys_bloom_filter_b.py
test_sys_bloom_filter_c.py
test_sys_precision.py
test_sys_special_data.py
test_sys_partition_delete.py
test_sys_rollup_scenario.py
test_sys_partition_basic_a.py
test_sys_partition_basic_b.py
test_sys_partition_load.py
test_sys_user_property.py
test_sys_privilege.py
test_sys_hll_basic.py
test_sys_null.py
test_sys_rollup_scenario_a.py
test_sys_duplicate_partition_a.py
test_sys_hll_sc.py
test_sys_hll_load.py
test_sys_load.py
test_sys_load_datatype_strict.py
test_sys_load_func_strict.py
test_sys_load_parse_from_path.py
test_sys_time_zone.py
test_sys_partition_multi_col.py
test_sys_pull_load_external.py
test_sys_alter_schema_change.py
test_sys_load_column_func.py
test_sys_pull_load_hdfs.py
test_sys_alter_schema_change_modify.py
test_sys_view.py
test_sys_materialized_view.py
test_sys_temp_partition_function.py
test_sys_delete.py
test_sys_delete_on_duplicate_value.py
test_sys_boolean.py
test_sys_modify_partition_property.py
test_sys_base64.py
test_sys_materialized_view_2.py
test_sys_insert_value.py
test_sys_insert_txn.py
test_sys_bitmap_index.py
test_sys_partition_list_basic.py
test_sys_partition_list_alter.py
test_sys_update_basic.py
test_sys_dynamic_partition_alter.py
test_sys_dynamic_partition_load.py
test_sys_dynamic_partition_parameter.py
test_sys_show_data_information.py
test_sys_binlog.py'
cd "${SYS_PATH}"
case_execute "${case_files}"
# sys/test_sys_routine_load routine load case
case_files='test_routine_load_job_control.py
test_routine_load_property.py
test_routine_load_with_alter.py'
cd "${SYS_PATH}"/test_sys_routine_load/
case_execute "${case_files}"
# sys/test_sys_broker_load broker load case
case_files='test_broker_load_property.py
test_broker_load_where.py
test_broker_load_remote.py'
cd "${SYS_PATH}"/test_sys_broker_load/
case_execute "${case_files}"
# sys/test_sys_backup_restore back & restore case
case_files='test_sys_snapshot_repo.py
test_sys_snapshot_backup.py
test_sys_snapshot_restore.py'
cd "${SYS_PATH}"/test_sys_backup_restore
case_execute "${case_files}"
# sys/test_sys_stream_load stream load case
case_files='test_stream_insert.py
test_stream_partition.py
test_stream_simple.py
test_stream_simple1.py
test_stream_load_sc_job.py
test_stream_load_json.py'
cd "${SYS_PATH}"/test_sys_stream_load/
case_execute "${case_files}"
# sys/test_sys_alter_for_uniq uniq table alter case
case_files='test_sys_partition_schema_change_add_a_uniq.py
test_sys_partition_schema_change_add_b_uniq.py
test_sys_partition_schema_change_complex_uniq.py
test_sys_partition_schema_change_delete_uniq.py
test_sys_partition_schema_change_drop_uniq.py
test_sys_partition_schema_change_invalid_uniq.py
test_sys_partition_schema_change_order_uniq.py
test_sys_partition_schema_change_rollup_uniq.py
test_sys_schema_change_add_a_uniq.py
test_sys_schema_change_add_b_uniq.py
test_sys_schema_change_complex_uniq.py
test_sys_schema_change_drop_uniq.py
test_sys_schema_change_order_uniq.py'
cd "${SYS_PATH}"/test_sys_alter_for_uniq/
case_execute "${case_files}"
# sys/test_sys_alter_for_duplicate duplicate table alter case
case_files='test_sys_partition_schema_change_add_a_duplicate.py
test_sys_partition_schema_change_add_b_duplicate.py
test_sys_partition_schema_change_complex_duplicate.py
test_sys_partition_schema_change_delete_duplicate.py
test_sys_partition_schema_change_drop_duplicate.py
test_sys_partition_schema_change_invalid_duplicate.py
test_sys_partition_schema_change_order_duplicate.py
test_sys_partition_schema_change_rollup_duplicate.py
test_sys_schema_change_add_a_duplicate.py
test_sys_schema_change_add_b_duplicate.py
test_sys_schema_change_complex_duplicate.py
test_sys_schema_change_drop_duplicate.py
test_sys_schema_change_order_duplicate.py'
cd "${SYS_PATH}"/test_sys_alter_for_duplicate/
case_execute "${case_files}"
# sys/test_sys_alter_for_aggregate agg table alter case
case_files='test_sys_partition_schema_change_add_a_aggregate.py
test_sys_partition_schema_change_add_b_aggregate.py
test_sys_partition_schema_change_complex_aggregate.py
test_sys_partition_schema_change_delete_aggregate.py
test_sys_partition_schema_change_drop_aggregate.py
test_sys_partition_schema_change_invalid_aggregate.py
test_sys_partition_schema_change_order_aggregate.py
test_sys_partition_schema_change_rollup_aggregate.py
test_sys_schema_change_add_a_aggregate.py
test_sys_schema_change_add_b_aggregate.py
test_sys_schema_change_complex_aggregate.py
test_sys_schema_change_drop_aggregate.py
test_sys_schema_change_order_aggregate.py'
cd "${SYS_PATH}"/test_sys_alter_for_aggregate/
case_execute "${case_files}"
# sys/test_sys_bitmap
case_files='test_sys_bitmap_basic.py
test_sys_bitmap_function.py
test_sys_bitmap_load.py
test_sys_bitmap_sc.py'
cd "${SYS_PATH}"/test_sys_bitmap/
case_execute "${case_files}"
# sys/test_sys_export
case_files='test_export.py
test_select_into_datatype.py
test_select_into_property.py
test_select_into_query.py'
cd "${SYS_PATH}"/test_sys_export/
case_execute "${case_files}"
# sys/test_sys_string
case_files='test_sys_string_basic.py'
cd "${SYS_PATH}"/test_sys_string
case_execute "${case_files}"
# sys/test_sys_array
case_files='test_array_ddl.py
test_array_alter.py
test_array_load.py
test_array_select.py'
cd "${SYS_PATH}"/test_sys_array
case_execute "${case_files}"
}
if [[ -z "${QUERY_ONLY}" ]]; then
echo "default all case"
long_time_case
sys_case
sleep 120
check_cluster
sleep 60
query_case
else
echo "only query case"
query_case
fi
wait
sleep 1
echo 'FINISHED'
exec 3<&-
exec 3>&-
echo 'byebye'