#!/bin/bash # Service Verification Script echo -e "\n========================================" echo -e " SERVICE VERIFICATION" echo -e "========================================\n" ALL_PASSED=true # Test 1: Orchestrator Health echo -e "1. Orchestrator Health Check" if health=$(curl -s http://localhost:8080/health --max-time 5 2>&1); then if command -v jq &> /dev/null; then status=$(echo "$health" | jq -r '.status' 2>/dev/null) db=$(echo "$health" | jq -r '.checks.database' 2>/dev/null) echo -e " \033[0;32m✅ Status: $status\033[0m" if [ "$db" = "up" ]; then echo -e " Database: \033[0;32m$db\033[0m" else echo -e " Database: \033[0;33m$db\033[0m" fi else echo -e " \033[0;32m✅ Health endpoint responding\033[0m" fi else echo -e " \033[0;31m❌ $health\033[0m" ALL_PASSED=false fi # Test 2: Orchestrator Metrics echo -e "\n2. Orchestrator Metrics" if metrics=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:8080/metrics --max-time 5 2>&1); then if [ "$metrics" = "200" ]; then echo -e " \033[0;32m✅ Metrics endpoint working\033[0m" else echo -e " \033[0;33m⚠️ Status: $metrics\033[0m" fi else echo -e " \033[0;31m❌ Connection failed\033[0m" ALL_PASSED=false fi # Test 3: Orchestrator Liveness echo -e "\n3. Orchestrator Liveness" if live=$(curl -s http://localhost:8080/live --max-time 5 2>&1); then if command -v jq &> /dev/null; then alive=$(echo "$live" | jq -r '.alive' 2>/dev/null) if [ "$alive" = "true" ]; then echo -e " \033[0;32m✅ Service is alive\033[0m" else echo -e " \033[0;33m⚠️ Service may not be ready\033[0m" fi else echo -e " \033[0;32m✅ Liveness endpoint responding\033[0m" fi else echo -e " \033[0;31m❌ Connection failed\033[0m" ALL_PASSED=false fi # Test 4: Webapp Status echo -e "\n4. Webapp Status" if webapp=$(curl -s http://localhost:3000 --max-time 10 2>&1); then content_length=${#webapp} if [ "$content_length" -gt 1000 ]; then echo -e " \033[0;32m✅ Webapp is serving content ($content_length bytes)\033[0m" else echo -e " \033[0;33m⚠️ Webapp responded but content may be incomplete\033[0m" fi else echo -e " \033[0;33m⚠️ Webapp timeout (may still be compiling): $webapp\033[0m" fi # Test 5: API Endpoints echo -e "\n5. API Endpoints" endpoints=("http://localhost:8080:Root:404" "http://localhost:8080/health:Health:200" "http://localhost:8080/metrics:Metrics:200" "http://localhost:8080/live:Live:200") for endpoint_pair in "${endpoints[@]}"; do IFS=':' read -r url name expected <<< "$endpoint_pair" if response=$(curl -s -o /dev/null -w "%{http_code}" "$url" --max-time 3 2>&1); then if [ "$response" = "$expected" ] || ([ "$expected" = "404" ] && [ "$response" = "404" ]); then echo -e " \033[0;32m✅ $name: $response\033[0m" else echo -e " \033[0;33m⚠️ $name: $response (expected $expected)\033[0m" fi else if [ "$expected" = "404" ] && echo "$response" | grep -q "404"; then echo -e " \033[0;32m✅ $name: $expected\033[0m" else echo -e " \033[0;31m❌ $name: Connection failed\033[0m" ALL_PASSED=false fi fi done # Summary echo -e "\n========================================" if [ "$ALL_PASSED" = true ]; then echo -e " \033[0;32m✅ All critical services verified\033[0m" else echo -e " \033[0;33m⚠️ Some services need attention\033[0m" fi echo -e "========================================\n"