Files
Alicho/tests/scripts/prepare_test_env.sh
2025-10-28 10:27:49 +08:00

158 lines
5.2 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/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")")")"
# 测试结果目录
TEST_RESULTS_DIR="$ROOT_DIR/test-results"
# 测试资源目录
TEST_RESOURCES_DIR="$ROOT_DIR/tests/integration/resources"
# 测试临时目录
TEST_TEMP_DIR="$ROOT_DIR/tests/integration/temp"
# 打印脚本信息
echo -e "${BLUE}=========================================================${NC}"
echo -e "${BLUE} 音频后端测试环境准备脚本 ${NC}"
echo -e "${BLUE}=========================================================${NC}"
echo -e "${YELLOW}项目根目: ${ROOT_DIR}${NC}"
echo ""
# 创建测试结果目录
echo -e "创建测试结果目录..."
mkdir -p "$TEST_RESULTS_DIR"
mkdir -p "$TEST_RESULTS_DIR/unit"
mkdir -p "$TEST_RESULTS_DIR/integration"
mkdir -p "$TEST_RESULTS_DIR/performance"
mkdir -p "$TEST_RESULTS_DIR/coverage"
# 创建测试资源目录
echo -e "创建测试资源目录..."
mkdir -p "$TEST_RESOURCES_DIR"
mkdir -p "$TEST_RESOURCES_DIR/plugins"
mkdir -p "$TEST_RESOURCES_DIR/config"
mkdir -p "$TEST_RESOURCES_DIR/audio"
# 创建测试临时目录
echo -e "创建测试临时目录..."
mkdir -p "$TEST_TEMP_DIR"
# 清理旧的测试临时文件
echo -e "清理旧的测试临文件..."
find "$TEST_TEMP_DIR" -type f -mtime +7 -delete
# 准备测试配置文件
echo -e "准备测试配置文件..."
CONFIG_FILE="$TEST_RESOURCES_DIR/config/system_config.json"
if [ ! -f "$CONFIG_FILE" ]; then
echo -e "创建默认系统配文件..."
cat > "$CONFIG_FILE" <<EOL
{
"sample_rate": 48000,
"channels": 2,
"buffer_size": 512,
"enable_simd": true,
"plugin_paths": ["${TEST_RESOURCES_DIR}/plugins"],
"log_level": "debug",
"engine_endpoint": "tcp://127.0.0.1:5557",
"enable_auto_reconnect": true
}
EOL
fi
# 准备测试音频文件
echo -e "准备测试音频文..."
TEST_AUDIO_FILE="$TEST_RESOURCES_DIR/audio/test_tone.wav"
if [ ! -f "$TEST_AUDIO_FILE" ]; then
echo -e "无测试音频文件尝试生成..."
# 检查是否有sox用于生成测试音频
if command -v sox &> /dev/null; then
echo -e "使用sox生成测试频文件..."
sox -n -r 48000 -c 2 "$TEST_AUDIO_FILE" synth 5.0 sine 440 vol 0.5
echo -e "生成测试音频文: $TEST_AUDIO_FILE"
else
echo -e "${YELLOW}警告: 未安装sox无法生成测试音频文件。${NC}"
echo -e "${YELLOW}请手动准测试音频文件或安装sox: sudo apt-get install sox (Ubuntu/Debian)${NC}"
# 创建空文件作为占位符
touch "$TEST_AUDIO_FILE"
fi
fi
# 准备测试插件
echo -e "准备测试插件目..."
# 注意:实际的测试插件需要单独构建或预先准备
# 检查系统依赖
echo -e "检查系统依赖..."
# 检查是否安装了必要的测试库
if ! ldconfig -p 2>/dev/null | grep -q libgtest; then
echo -e "${YELLOW}警告: 未找到Google Test库。测试可能失败。${NC}"
echo -e "${YELLOW}可以使用下命令安装: sudo apt-get install libgtest-dev (Ubuntu/Debian)${NC}"
fi
if ! ldconfig -p 2>/dev/null | grep -q libgmock; then
echo -e "${YELLOW}警告: 未找到Google Mock库。测试可能失败。${NC}"
echo -e "${YELLOW}可以使用下命令安装: sudo apt-get install libgmock-dev (Ubuntu/Debian)${NC}"
fi
# 检查必要的工具
REQUIRED_TOOLS=("cmake" "make" "gcc" "g++" "lcov" "gcov")
MISSING_TOOLS=()
for tool in "${REQUIRED_TOOLS[@]}"; do
if ! command -v "$tool" &> /dev/null; then
MISSING_TOOLS+=("$tool")
fi
done
if [ ${#MISSING_TOOLS[@]} -gt 0 ]; then
echo -e "${YELLOW}警告: 以下必要工具未找到: ${MISSING_TOOLS[*]}${NC}"
echo -e "${YELLOW}请安装这工具以确保测试能正常进行。${NC}"
fi
# 设置环境变量
echo -e "设置测试环境变..."
# 将测试目录添加到LD_LIBRARY_PATH如果需要的话
export LD_LIBRARY_PATH="$ROOT_DIR/build/lib:$LD_LIBRARY_PATH"
# 设置测试临时目录环境变量
export TEMP_TEST_DIR="$TEST_TEMP_DIR"
export TEST_RESOURCES="$TEST_RESOURCES_DIR"
# 保存环境变量到临时文件,以便其他脚本使用
ENV_FILE="$TEST_TEMP_DIR/test_env.sh"
cat > "$ENV_FILE" <<EOL
#!/bin/bash
# 测试环境变量
export LD_LIBRARY_PATH="$ROOT_DIR/build/lib:$LD_LIBRARY_PATH"
export TEMP_TEST_DIR="$TEST_TEMP_DIR"
export TEST_RESOURCES="$TEST_RESOURCES_DIR"
EOL
chmod +x "$ENV_FILE"
echo -e "${GREEN}测试环境备完成!${NC}"
echo -e "环境变量已保存: $ENV_FILE"
echo -e "测试资源目录: $TEST_RESOURCES_DIR"
echo -e "测试临时目录: $TEST_TEMP_DIR"
echo -e "测试结果目录: $TEST_RESULTS_DIR"
echo ""
exit 0