165 lines
5.7 KiB
Bash
165 lines
5.7 KiB
Bash
#!/bin/bash
|
|
# ================================================================================================
|
|
# Audio Backend - 回归测试运行脚本
|
|
# ================================================================================================
|
|
# 描述: 运行关键测试案例以验证基本功能,适用于快速验证和持续集成环境
|
|
# ================================================================================================
|
|
|
|
# 设置颜色输出
|
|
GREEN='\033[0;32m'
|
|
RED='\033[0;31m'
|
|
YELLOW='\033[0;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # 无颜色
|
|
|
|
# 脚本所在的目录路径
|
|
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
|
|
# 项目根目录
|
|
ROOT_DIR="$(dirname "$(dirname "$(dirname "$SCRIPT_DIR")")")"
|
|
# 构建目录
|
|
BUILD_DIR="$ROOT_DIR/build"
|
|
# 测试结果目录
|
|
TEST_RESULTS_DIR="$ROOT_DIR/test-results"
|
|
# 回归测试结果目录
|
|
REGRESSION_TEST_RESULTS_DIR="$TEST_RESULTS_DIR/regression"
|
|
# 测试可执行文件目录
|
|
TEST_BIN_DIR="$BUILD_DIR/bin/tests"
|
|
|
|
# 打印脚本信息
|
|
echo -e "${BLUE}=========================================================${NC}"
|
|
echo -e "${BLUE} 音频后端回归测试运行脚本 ${NC}"
|
|
echo -e "${BLUE}=========================================================${NC}"
|
|
echo -e "${YELLOW}项目根目录: ${ROOT_DIR}${NC}"
|
|
echo -e "${YELLOW}测试结果录: ${REGRESSION_TEST_RESULTS_DIR}${NC}"
|
|
echo ""
|
|
|
|
# 确保测试结果目录存在
|
|
mkdir -p "$REGRESSION_TEST_RESULTS_DIR"
|
|
|
|
# 检查测试目录是否存在
|
|
if [ ! -d "$TEST_BIN_DIR" ]; then
|
|
echo -e "${RED}错误: 测试可执行文件目录不存在。请先构建项目。${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# 回归测试配置 - 指定关键测试案例
|
|
# 格式: "测试类型:测试可执行文件:测试过滤器"
|
|
REGRESSION_TESTS=(
|
|
# 引擎核心关键测试
|
|
"unit:engine/audio_buffer_test:*"
|
|
"unit:engine/audio_format_test:*"
|
|
|
|
# 通信关键测试
|
|
"unit:communication/message_test:*"
|
|
"unit:communication/zmq_transport_test:BasicCommunication"
|
|
|
|
# 前端关键测试
|
|
"unit:frontend/transport_layer_test:BasicConnection"
|
|
"unit:frontend/frontend_manager_test:BasicConnection"
|
|
|
|
# 集成关键测试
|
|
"integration:engine_communication_test:BasicCommunication"
|
|
"integration:frontend_engine_test:BasicConnection"
|
|
)
|
|
|
|
echo -e "${BLUE}回归测试将运行 ${#REGRESSION_TESTS[@]} 个关键测试案例${NC}"
|
|
echo ""
|
|
|
|
# 准备测试环境
|
|
echo -e "${BLUE}准备回归测试环境...${NC}"
|
|
"$SCRIPT_DIR/prepare_test_env.sh"
|
|
if [ $? -ne 0 ]; then
|
|
echo -e "${RED}准备测试环境失败${NC}"
|
|
exit 1
|
|
fi
|
|
echo -e "${GREEN}回归测试环境准备完成${NC}"
|
|
echo ""
|
|
|
|
# 运行回归测试
|
|
PASSED_TESTS=0
|
|
FAILED_TESTS=0
|
|
TOTAL_TESTS=0
|
|
|
|
# 创建回归测试报告
|
|
REPORT_FILE="$REGRESSION_TEST_RESULTS_DIR/regression_results.txt"
|
|
echo "音频后端回归测试结果 ($(date))" > "$REPORT_FILE"
|
|
echo "=================================" >> "$REPORT_FILE"
|
|
echo "" >> "$REPORT_FILE"
|
|
|
|
for test_spec in "${REGRESSION_TESTS[@]}"; do
|
|
# 解析测试规格
|
|
IFS=':' read -r test_type test_executable test_filter <<< "$test_spec"
|
|
|
|
# 查找对应的测试可执行文件
|
|
TEST_PATH=""
|
|
|
|
if [ "$test_type" == "unit" ]; then
|
|
TEST_PATH="$TEST_BIN_DIR/unit/$test_executable"
|
|
elif [ "$test_type" == "integration" ]; then
|
|
TEST_PATH="$TEST_BIN_DIR/integration/$test_executable"
|
|
else
|
|
echo -e "${YELLOW}警告: 未知的测试类型 '$test_type',跳过...${NC}"
|
|
continue
|
|
fi
|
|
|
|
if [ ! -x "$TEST_PATH" ]; then
|
|
echo -e "${YELLOW}警告: 测试可执行文件不存在或不可执行: $TEST_PATH,跳过...${NC}"
|
|
echo "跳过 - 测试不存在: $test_type/$test_executable:$test_filter" >> "$REPORT_FILE"
|
|
continue
|
|
fi
|
|
|
|
echo -e "${BLUE}运行回归测试: ${test_type}/${test_executable}:${test_filter}${NC}"
|
|
|
|
# 准备过滤器参数
|
|
FILTER_PARAM=""
|
|
if [ "$test_filter" != "*" ]; then
|
|
FILTER_PARAM="--gtest_filter=$test_filter"
|
|
fi
|
|
|
|
# 运行测试
|
|
TEST_OUTPUT="$REGRESSION_TEST_RESULTS_DIR/${test_type}_${test_executable//\//_}_${test_filter//\*/_all_}.txt"
|
|
"$TEST_PATH" $FILTER_PARAM > "$TEST_OUTPUT" 2>&1
|
|
TEST_RESULT=$?
|
|
|
|
# 检查测试结果
|
|
if [ $TEST_RESULT -eq 0 ]; then
|
|
echo -e "${GREEN}通过: ${test_type}/${test_executable}:${test_filter}${NC}"
|
|
echo "通过 - $test_type/$test_executable:$test_filter" >> "$REPORT_FILE"
|
|
((PASSED_TESTS++))
|
|
else
|
|
echo -e "${RED}失败: ${test_type}/${test_executable}:${test_filter}${NC}"
|
|
echo "失败 - $test_type/$test_executable:$test_filter" >> "$REPORT_FILE"
|
|
((FAILED_TESTS++))
|
|
fi
|
|
|
|
((TOTAL_TESTS++))
|
|
echo "" >> "$REPORT_FILE"
|
|
done
|
|
|
|
# 生成结果统计
|
|
echo "" >> "$REPORT_FILE"
|
|
echo "=================================" >> "$REPORT_FILE"
|
|
echo "总计: $TOTAL_TESTS 个测试" >> "$REPORT_FILE"
|
|
echo "通过: $PASSED_TESTS" >> "$REPORT_FILE"
|
|
echo "失败: $FAILED_TESTS" >> "$REPORT_FILE"
|
|
echo "完成时间: $(date)" >> "$REPORT_FILE"
|
|
|
|
# 打印结果汇总
|
|
echo -e "${BLUE}=========================================================${NC}"
|
|
echo -e "${BLUE} 回归测试结果汇总 ${NC}"
|
|
echo -e "${BLUE}=========================================================${NC}"
|
|
echo -e "总测试数: ${TOTAL_TESTS}"
|
|
echo -e "通过: ${GREEN}${PASSED_TESTS}${NC}"
|
|
echo -e "失败: ${RED}${FAILED_TESTS}${NC}"
|
|
echo ""
|
|
echo -e "详细报告已生成到: ${YELLOW}${REPORT_FILE}${NC}"
|
|
echo ""
|
|
|
|
# 返回测试结果
|
|
if [ $FAILED_TESTS -eq 0 ]; then
|
|
echo -e "${GREEN}所有回归测试通过!${NC}"
|
|
exit 0
|
|
else
|
|
echo -e "${RED}有回归测试失败!${NC}"
|
|
exit 1
|
|
fi |