veza/scripts/archive/smoke_health.sh
2025-12-12 21:34:34 -05:00

82 lines
1.7 KiB
Bash
Executable file

#!/bin/bash
set -euo pipefail
# Configuration
API_PORT=8080
CHAT_PORT=8081
STREAM_PORT=8082
API_URL="http://localhost:$API_PORT"
CHAT_URL="http://localhost:$CHAT_PORT"
STREAM_URL="http://localhost:$STREAM_PORT"
# Colors
GREEN='\033[0;32m'
RED='\033[0;31m'
NC='\033[0m'
log() {
echo -e "${GREEN}[HEALTH] $1${NC}"
}
error() {
echo -e "${RED}[ERROR] $1${NC}"
exit 1
}
# 1. Start Stack
log "Starting production stack..."
if [ -f .env.test ]; then
docker compose --env-file .env.test -f docker-compose.production.yml up -d
else
docker compose -f docker-compose.production.yml up -d
fi
log "Waiting for services to be ready (10s)..."
sleep 10
# 2. Check Health
check_health() {
local service_name=$1
local url=$2
log "Checking $service_name health..."
# Check /healthz
if curl -sf "$url/healthz" > /dev/null; then
echo "$service_name /healthz OK"
else
error "$service_name /healthz FAILED"
fi
# Check /readyz
if curl -sf "$url/readyz" > /dev/null; then
echo "$service_name /readyz OK"
else
error "$service_name /readyz FAILED"
fi
}
check_health "Backend API" "$API_URL"
check_health "Chat Server" "$CHAT_URL"
check_health "Stream Server" "$STREAM_URL"
# 3. Check Metrics
check_metrics() {
local service_name=$1
local url=$2
log "Checking $service_name metrics..."
if curl -sf "$url/metrics" > /dev/null; then
echo "$service_name /metrics OK"
else
echo -e "${RED}[WARN] $service_name /metrics FAILED (Ignored)${NC}"
fi
}
check_metrics "Backend API" "$API_URL"
check_metrics "Chat Server" "$CHAT_URL"
check_metrics "Stream Server" "$STREAM_URL"
log "✅ Global health check passed!"