149 lines
4.2 KiB
Bash
Executable File
149 lines
4.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Azure Blob Storage Agent 本地测试脚本
|
|
# 使用方法: ./test_azure_blob_agent.sh
|
|
|
|
set -e
|
|
|
|
AGENT_HOST="localhost"
|
|
AGENT_PORT="8080"
|
|
BASE_URL="http://${AGENT_HOST}:${AGENT_PORT}"
|
|
|
|
echo "=========================================="
|
|
echo "Azure Blob Storage Agent 测试脚本"
|
|
echo "=========================================="
|
|
echo ""
|
|
|
|
# 颜色定义
|
|
GREEN='\033[0;32m'
|
|
RED='\033[0;31m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# 测试函数
|
|
test_endpoint() {
|
|
local name=$1
|
|
local method=$2
|
|
local endpoint=$3
|
|
local data=$4
|
|
|
|
echo -e "${YELLOW}测试: ${name}${NC}"
|
|
echo "请求: ${method} ${endpoint}"
|
|
|
|
if [ -z "$data" ]; then
|
|
response=$(curl -s -w "\n%{http_code}" -X ${method} "${BASE_URL}${endpoint}")
|
|
else
|
|
response=$(curl -s -w "\n%{http_code}" -X ${method} "${BASE_URL}${endpoint}" \
|
|
-H 'Content-Type: application/json' \
|
|
-d "${data}")
|
|
fi
|
|
|
|
http_code=$(echo "$response" | tail -n1)
|
|
body=$(echo "$response" | sed '$d')
|
|
|
|
if [ "$http_code" -eq 200 ] || [ "$http_code" -eq 201 ]; then
|
|
echo -e "${GREEN}✅ 成功 (HTTP $http_code)${NC}"
|
|
echo "响应: $body" | jq '.' 2>/dev/null || echo "$body"
|
|
else
|
|
echo -e "${RED}❌ 失败 (HTTP $http_code)${NC}"
|
|
echo "响应: $body"
|
|
fi
|
|
|
|
echo ""
|
|
}
|
|
|
|
# 1. 检查容器是否运行
|
|
echo "1️⃣ 检查容器状态..."
|
|
if docker ps | grep -q azure-blob-agent; then
|
|
echo -e "${GREEN}✅ 容器正在运行${NC}"
|
|
else
|
|
echo -e "${RED}❌ 容器未运行${NC}"
|
|
echo "请先启动容器:"
|
|
echo "docker run -d --name azure-blob-agent -p 8080:8080 \\"
|
|
echo " -e LITELLM_API_BASE=http://host.docker.internal:4000 \\"
|
|
echo " -e LITELLM_MODEL=gpt-3.5-turbo \\"
|
|
echo " -e LITELLM_API_KEY=sk-1234 \\"
|
|
echo " azure-blob-agent:latest"
|
|
exit 1
|
|
fi
|
|
echo ""
|
|
|
|
# 2. 等待服务就绪
|
|
echo "2️⃣ 等待服务就绪..."
|
|
max_attempts=30
|
|
attempt=0
|
|
while [ $attempt -lt $max_attempts ]; do
|
|
if curl -s "${BASE_URL}/health" > /dev/null 2>&1; then
|
|
echo -e "${GREEN}✅ 服务已就绪${NC}"
|
|
break
|
|
fi
|
|
attempt=$((attempt + 1))
|
|
echo -n "."
|
|
sleep 1
|
|
done
|
|
|
|
if [ $attempt -eq $max_attempts ]; then
|
|
echo -e "${RED}❌ 服务启动超时${NC}"
|
|
exit 1
|
|
fi
|
|
echo ""
|
|
|
|
# 3. 健康检查
|
|
test_endpoint "健康检查" "GET" "/health"
|
|
|
|
# 4. 根端点
|
|
test_endpoint "根端点" "GET" "/"
|
|
|
|
# 5. 连接到 Azure Storage(需要用户提供连接字符串)
|
|
echo -e "${YELLOW}=========================================="
|
|
echo "连接到 Azure Storage"
|
|
echo "==========================================${NC}"
|
|
echo ""
|
|
echo "请输入 Azure Storage 连接字符串:"
|
|
echo "(格式: DefaultEndpointsProtocol=https;AccountName=xxx;AccountKey=xxx;EndpointSuffix=core.windows.net)"
|
|
echo ""
|
|
read -r CONNECTION_STRING
|
|
|
|
if [ -z "$CONNECTION_STRING" ]; then
|
|
echo -e "${YELLOW}⏭️ 跳过连接测试${NC}"
|
|
else
|
|
connect_data="{\"connection_string\": \"${CONNECTION_STRING}\"}"
|
|
test_endpoint "连接 Azure Storage" "POST" "/connect" "$connect_data"
|
|
|
|
# 6. 查询测试(仅在连接成功后)
|
|
echo -e "${YELLOW}=========================================="
|
|
echo "自然语言查询测试"
|
|
echo "==========================================${NC}"
|
|
echo ""
|
|
|
|
# 列出容器
|
|
query_data='{"query": "列出所有容器"}'
|
|
test_endpoint "查询: 列出所有容器" "POST" "/query" "$query_data"
|
|
|
|
# 获取统计信息
|
|
query_data='{"query": "显示存储统计信息"}'
|
|
test_endpoint "查询: 存储统计" "POST" "/query" "$query_data"
|
|
|
|
# 自定义查询
|
|
echo -e "${YELLOW}输入自定义查询(按Enter跳过):${NC}"
|
|
read -r CUSTOM_QUERY
|
|
|
|
if [ ! -z "$CUSTOM_QUERY" ]; then
|
|
query_data="{\"query\": \"${CUSTOM_QUERY}\"}"
|
|
test_endpoint "自定义查询" "POST" "/query" "$query_data"
|
|
fi
|
|
fi
|
|
|
|
echo ""
|
|
echo "=========================================="
|
|
echo -e "${GREEN}测试完成!${NC}"
|
|
echo "=========================================="
|
|
echo ""
|
|
echo "查看日志:"
|
|
echo " docker logs -f azure-blob-agent"
|
|
echo ""
|
|
echo "停止容器:"
|
|
echo " docker stop azure-blob-agent"
|
|
echo " docker rm azure-blob-agent"
|
|
echo ""
|