169 lines
6.1 KiB
Batchfile
169 lines
6.1 KiB
Batchfile
@echo off
|
|
REM ================================================================================================
|
|
REM Audio Backend - 回归测试运行脚本 (Windows)
|
|
REM ================================================================================================
|
|
REM 描述: 运行关键测试案例以验证基本功能,适用于快速验证和持续集成环境
|
|
REM ================================================================================================
|
|
|
|
setlocal EnableDelayedExpansion
|
|
|
|
REM 设置颜色输出
|
|
set "GREEN=[92m"
|
|
set "RED=[91m"
|
|
set "YELLOW=[93m"
|
|
set "BLUE=[94m"
|
|
set "NC=[0m"
|
|
|
|
REM 脚本所在的目录路径
|
|
set "SCRIPT_DIR=%~dp0"
|
|
REM 项目根目录
|
|
for %%i in ("%SCRIPT_DIR%\..\..\..\") do set "ROOT_DIR=%%~fi"
|
|
REM 构建目录
|
|
set "BUILD_DIR=%ROOT_DIR%\build"
|
|
REM 测试结果目录
|
|
set "TEST_RESULTS_DIR=%ROOT_DIR%\test-results"
|
|
REM 回归测试结果目录
|
|
set "REGRESSION_TEST_RESULTS_DIR=%TEST_RESULTS_DIR%\regression"
|
|
REM 测试可执行文件目录
|
|
set "TEST_BIN_DIR=%BUILD_DIR%\bin\tests"
|
|
|
|
REM 打印脚本信息
|
|
echo %BLUE%=========================================================%NC%
|
|
echo %BLUE% 音频后端回归测试运行脚本 %NC%
|
|
echo %BLUE%=========================================================%NC%
|
|
echo %YELLOW%项目根目录: %ROOT_DIR%%NC%
|
|
echo %YELLOW%测试结果目录: %REGRESSION_TEST_RESULTS_DIR%%NC%
|
|
echo.
|
|
|
|
REM 确保测试结果目录存在
|
|
if not exist "%REGRESSION_TEST_RESULTS_DIR%" mkdir "%REGRESSION_TEST_RESULTS_DIR%"
|
|
|
|
REM 检查测试目录是否存在
|
|
if not exist "%TEST_BIN_DIR%" (
|
|
echo %RED%错误: 测试可执行文件目录不存在。请先构建项目。%NC%
|
|
exit /b 1
|
|
)
|
|
|
|
REM 回归测试配置 - 指定关键测试案例
|
|
REM 设置测试列表(格式: 类型:可执行文件:过滤器)
|
|
set REGRESSION_TESTS[0]=unit:engine/audio_buffer_test:*
|
|
set REGRESSION_TESTS[1]=unit:engine/audio_format_test:*
|
|
set REGRESSION_TESTS[2]=unit:communication/message_test:*
|
|
set REGRESSION_TESTS[3]=unit:communication/zmq_transport_test:BasicCommunication
|
|
set REGRESSION_TESTS[4]=unit:frontend/transport_layer_test:BasicConnection
|
|
set REGRESSION_TESTS[5]=unit:frontend/frontend_manager_test:BasicConnection
|
|
set REGRESSION_TESTS[6]=integration:engine_communication_test:BasicCommunication
|
|
set REGRESSION_TESTS[7]=integration:frontend_engine_test:BasicConnection
|
|
|
|
REM 计算测试数量
|
|
set "TEST_COUNT=8"
|
|
|
|
echo %BLUE%回归测试将运行 %TEST_COUNT% 个关键测试案例%NC%
|
|
echo.
|
|
|
|
REM 准备测试环境
|
|
echo %BLUE%准备回归测试环境...%NC%
|
|
call "%SCRIPT_DIR%\prepare_test_env.bat"
|
|
if %ERRORLEVEL% neq 0 (
|
|
echo %RED%准备测试环境失败%NC%
|
|
exit /b 1
|
|
)
|
|
echo %GREEN%回归测试环境准备完成%NC%
|
|
echo.
|
|
|
|
REM 运行回归测试
|
|
set "PASSED_TESTS=0"
|
|
set "FAILED_TESTS=0"
|
|
set "TOTAL_TESTS=0"
|
|
|
|
REM 创建回归测试报告
|
|
set "REPORT_FILE=%REGRESSION_TEST_RESULTS_DIR%\regression_results.txt"
|
|
echo 音频后端回归测试结果 (%DATE% %TIME%) > "%REPORT_FILE%"
|
|
echo ================================= >> "%REPORT_FILE%"
|
|
echo. >> "%REPORT_FILE%"
|
|
|
|
REM 循环执行测试
|
|
for /l %%i in (0,1,%TEST_COUNT%-1) do (
|
|
REM 解析测试规格
|
|
for /f "tokens=1-3 delims=:" %%a in ("!REGRESSION_TESTS[%%i]!") do (
|
|
set "test_type=%%a"
|
|
set "test_executable=%%b"
|
|
set "test_filter=%%c"
|
|
|
|
REM 确定测试路径
|
|
set "TEST_PATH="
|
|
|
|
if "!test_type!"=="unit" (
|
|
set "TEST_PATH=%TEST_BIN_DIR%\unit\!test_executable!.exe"
|
|
) else if "!test_type!"=="integration" (
|
|
set "TEST_PATH=%TEST_BIN_DIR%\integration\!test_executable!.exe"
|
|
) else (
|
|
echo %YELLOW%警告: 未知的测试类型 '!test_type!',跳过...%NC%
|
|
echo 跳过 - 测试不存在: !test_type!/!test_executable!:!test_filter! >> "%REPORT_FILE%"
|
|
goto :continue
|
|
)
|
|
|
|
if not exist "!TEST_PATH!" (
|
|
echo %YELLOW%警告: 测试可执行文件不存在: !TEST_PATH!,跳过...%NC%
|
|
echo 跳过 - 测试不存在: !test_type!/!test_executable!:!test_filter! >> "%REPORT_FILE%"
|
|
goto :continue
|
|
)
|
|
|
|
echo %BLUE%运行回归测试: !test_type!/!test_executable!:!test_filter!%NC%
|
|
|
|
REM 准备过滤器参数
|
|
set "FILTER_PARAM="
|
|
if not "!test_filter!"=="*" (
|
|
set "FILTER_PARAM=--gtest_filter=!test_filter!"
|
|
)
|
|
|
|
REM 运行测试
|
|
set "TEST_OUTPUT_NAME=!test_type!_!test_executable:.=_!_!test_filter:*=all!"
|
|
set "TEST_OUTPUT=%REGRESSION_TEST_RESULTS_DIR%\!TEST_OUTPUT_NAME!.txt"
|
|
"!TEST_PATH!" !FILTER_PARAM! > "!TEST_OUTPUT!" 2>&1
|
|
|
|
REM 检查测试结果
|
|
if !ERRORLEVEL! equ 0 (
|
|
echo %GREEN%通过: !test_type!/!test_executable!:!test_filter!%NC%
|
|
echo 通过 - !test_type!/!test_executable!:!test_filter! >> "%REPORT_FILE%"
|
|
set /a PASSED_TESTS+=1
|
|
) else (
|
|
echo %RED%失败: !test_type!/!test_executable!:!test_filter!%NC%
|
|
echo 失败 - !test_type!/!test_executable!:!test_filter! >> "%REPORT_FILE%"
|
|
set /a FAILED_TESTS+=1
|
|
)
|
|
|
|
set /a TOTAL_TESTS+=1
|
|
echo. >> "%REPORT_FILE%"
|
|
)
|
|
|
|
:continue
|
|
)
|
|
|
|
REM 生成结果统计
|
|
echo. >> "%REPORT_FILE%"
|
|
echo ================================= >> "%REPORT_FILE%"
|
|
echo 总计: %TOTAL_TESTS% 个测试 >> "%REPORT_FILE%"
|
|
echo 通过: %PASSED_TESTS% >> "%REPORT_FILE%"
|
|
echo 失败: %FAILED_TESTS% >> "%REPORT_FILE%"
|
|
echo 完成时间: %DATE% %TIME% >> "%REPORT_FILE%"
|
|
|
|
REM 打印结果汇总
|
|
echo %BLUE%=========================================================%NC%
|
|
echo %BLUE% 回归测试结果汇总 %NC%
|
|
echo %BLUE%=========================================================%NC%
|
|
echo 总测试数: %TOTAL_TESTS%
|
|
echo 通过: %GREEN%%PASSED_TESTS%%NC%
|
|
echo 失败: %RED%%FAILED_TESTS%%NC%
|
|
echo.
|
|
echo 详细报告已生成到: %YELLOW%%REPORT_FILE%%NC%
|
|
echo.
|
|
|
|
REM 返回测试结果
|
|
if %FAILED_TESTS% equ 0 (
|
|
echo %GREEN%所有回归测试通过!%NC%
|
|
exit /b 0
|
|
) else (
|
|
echo %RED%有回归测试失败!%NC%
|
|
exit /b 1
|
|
) |