75 lines
2.2 KiB
Bash
Executable file
75 lines
2.2 KiB
Bash
Executable file
#!/bin/bash
|
|
# scripts/check_backend.sh
|
|
# Vérifie la disponibilité des services backend nécessaires pour le frontend Veza.
|
|
# Usage: ./scripts/check_backend.sh
|
|
|
|
set -euo pipefail
|
|
|
|
# Couleurs
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
RED='\033[0;31m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Ports par défaut (peuvent être surchargés par les vars d'env si besoin,
|
|
# mais ici on hardcode ou on utilise des vars explicites si définies)
|
|
API_URL="${VITE_API_URL:-http://localhost:8080/api/v1}"
|
|
WS_URL="${VITE_WS_URL:-ws://localhost:8081}"
|
|
STREAM_URL="${VITE_STREAM_URL:-http://localhost:8082}"
|
|
|
|
# Fonction de check HTTP avec retry
|
|
wait_for_url() {
|
|
local url="$1"
|
|
local name="$2"
|
|
local required="$3" # 1 = critical, 0 = optional
|
|
local max_attempts=30
|
|
local attempt=1
|
|
|
|
echo -n "⏳ Waiting for $name ($url)... "
|
|
while [ $attempt -le $max_attempts ]; do
|
|
if curl -s -f -m 1 "$url" > /dev/null 2>&1; then
|
|
echo -e "${GREEN}OK${NC}"
|
|
return 0
|
|
fi
|
|
echo -n "."
|
|
sleep 1
|
|
attempt=$((attempt + 1))
|
|
done
|
|
|
|
echo -e " ${RED}Timeout${NC}"
|
|
if [ "$required" -eq 1 ]; then
|
|
echo -e "${RED}❌ $name failed to start after ${max_attempts}s [CRITIQUE]${NC}"
|
|
return 1
|
|
else
|
|
echo -e "${YELLOW}⚠️ $name failed to start ($url) [MODE DÉGRADÉ]${NC}"
|
|
return 0
|
|
fi
|
|
}
|
|
|
|
echo -e "${YELLOW}🔍 Vérification des services backend (Timeout: 30s)...${NC}"
|
|
|
|
EXIT_CODE=0
|
|
|
|
# 1. Backend API (Critique)
|
|
API_HOST_PORT=$(echo "$API_URL" | sed -E 's|/api/v1/?$||')
|
|
# Check both /health (root) or /api/v1/health depending on implementation
|
|
# We try the one derived from config first
|
|
if ! wait_for_url "$API_HOST_PORT/health" "Backend API" 1; then
|
|
EXIT_CODE=1
|
|
fi
|
|
|
|
# 2. Chat Server (Optionnel)
|
|
CHAT_HTTP_URL=$(echo "$WS_URL" | sed 's/^ws/http/')
|
|
wait_for_url "$CHAT_HTTP_URL/health" "Chat Server" 0 || true
|
|
|
|
# 3. Stream Server (Optionnel)
|
|
wait_for_url "$STREAM_URL/health" "Stream Server" 0 || true
|
|
|
|
echo ""
|
|
if [ $EXIT_CODE -eq 0 ]; then
|
|
echo -e "${GREEN}🚀 Tous les services critiques sont opérationnels.${NC}"
|
|
else
|
|
echo -e "${RED}🛑 Impossible de démarrer : services critiques manquants.${NC}"
|
|
fi
|
|
|
|
exit $EXIT_CODE
|