- 동시접속자 기반 월간 대역폭 자동 추정 - DAU(일일활성사용자) 추정치 표시 (동접 × 10-14) - 대역폭 기반 Linode/Vultr 자동 선택 로직 - 비용 분석에 대역폭 비용 포함 - 지역 미선택시 서울/도쿄/오사카/싱가포르 기본 표시 - 지역별 서버 분리 표시 (GROUP BY instance + region) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
101 lines
3.0 KiB
Bash
Executable File
101 lines
3.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Test script for Server Recommendation System
|
|
# Usage: ./test.sh [worker-url]
|
|
|
|
WORKER_URL="${1:-http://localhost:8787}"
|
|
|
|
echo "Testing Server Recommendation System"
|
|
echo "Worker URL: $WORKER_URL"
|
|
echo ""
|
|
|
|
# Test 1: Health Check
|
|
echo "1. Testing Health Check..."
|
|
curl -s "$WORKER_URL/api/health" | jq '.'
|
|
echo ""
|
|
|
|
# Test 2: Get All Servers
|
|
echo "2. Testing Get All Servers..."
|
|
curl -s "$WORKER_URL/api/servers" | jq '{count: .count, servers: .servers[0:2]}'
|
|
echo ""
|
|
|
|
# Test 3: Get Servers with Filters
|
|
echo "3. Testing Get Servers with Filters (minCpu=4, minMemory=8)..."
|
|
curl -s "$WORKER_URL/api/servers?minCpu=4&minMemory=8" | jq '{count: .count, filters: .filters}'
|
|
echo ""
|
|
|
|
# Test 4: Get Servers by Provider
|
|
echo "4. Testing Get Servers by Provider (aws)..."
|
|
curl -s "$WORKER_URL/api/servers?provider=aws" | jq '{count: .count, filters: .filters}'
|
|
echo ""
|
|
|
|
# Test 5: Recommendation Request (Small)
|
|
echo "5. Testing Recommendation Request (Small server)..."
|
|
curl -s -X POST "$WORKER_URL/api/recommend" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"cpu_cores": 2,
|
|
"memory_gb": 4,
|
|
"storage_gb": 80
|
|
}' | jq '{total_candidates: .total_candidates, cached: .cached, recommendation_count: (.recommendations | length), top_recommendation: .recommendations[0].server_name}'
|
|
echo ""
|
|
|
|
# Test 6: Recommendation Request (Medium)
|
|
echo "6. Testing Recommendation Request (Medium server with budget)..."
|
|
curl -s -X POST "$WORKER_URL/api/recommend" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"cpu_cores": 4,
|
|
"memory_gb": 16,
|
|
"storage_gb": 200,
|
|
"budget_monthly": 150,
|
|
"sla_requirement": 99.9
|
|
}' | jq '{total_candidates: .total_candidates, cached: .cached, recommendations: [.recommendations[] | {server: .server_name, score: .score, price: .price_monthly}]}'
|
|
echo ""
|
|
|
|
# Test 7: Recommendation Request with Region Filter
|
|
echo "7. Testing Recommendation Request with Region Filter..."
|
|
curl -s -X POST "$WORKER_URL/api/recommend" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"cpu_cores": 4,
|
|
"memory_gb": 8,
|
|
"storage_gb": 100,
|
|
"regions": ["us-east-1"]
|
|
}' | jq '{total_candidates: .total_candidates, cached: .cached}'
|
|
echo ""
|
|
|
|
# Test 8: Cache Hit Test (same request as #5)
|
|
echo "8. Testing Cache Hit (same request as #5)..."
|
|
curl -s -X POST "$WORKER_URL/api/recommend" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"cpu_cores": 2,
|
|
"memory_gb": 4,
|
|
"storage_gb": 80
|
|
}' | jq '{cached: .cached, top_recommendation: .recommendations[0].server_name}'
|
|
echo ""
|
|
|
|
# Test 9: Invalid Request (missing required field)
|
|
echo "9. Testing Invalid Request (missing cpu_cores)..."
|
|
curl -s -X POST "$WORKER_URL/api/recommend" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"memory_gb": 4,
|
|
"storage_gb": 80
|
|
}' | jq '.'
|
|
echo ""
|
|
|
|
# Test 10: Invalid Request (negative value)
|
|
echo "10. Testing Invalid Request (negative cpu_cores)..."
|
|
curl -s -X POST "$WORKER_URL/api/recommend" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"cpu_cores": -1,
|
|
"memory_gb": 4,
|
|
"storage_gb": 80
|
|
}' | jq '.'
|
|
echo ""
|
|
|
|
echo "Test suite completed!"
|