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