326 lines
11 KiB
Bash
326 lines
11 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.
|
|
|
|
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'
|