158 lines
5.2 KiB
Bash
158 lines
5.2 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")")")"
|
||
# 测试结果目录
|
||
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 |