#!/bin/bash

# DanceLessonsCoach OpenTelemetry Test Script
# This script tests OpenTelemetry integration with Jaeger

set -e

echo -e "\033[1;34m=== DanceLessonsCoach OpenTelemetry Test ===\033[0m"
echo ""

# Configuration
PROJECT_DIR="/Users/gabrielradureau/Work/Vibe/DanceLessonsCoach"
SERVER_CMD="./scripts/start-server.sh"
LOG_FILE="server.log"
PID_FILE="server.pid"

cd "$PROJECT_DIR"

# Clean up any existing server
echo "Cleaning up any existing server..."
if [ -f "$PID_FILE" ]; then
    echo "Found existing PID file, stopping previous server..."
    $SERVER_CMD stop > /dev/null 2>&1 || true
    rm -f "$PID_FILE" "$LOG_FILE"
fi

# Kill any processes on port 8080
pkill -9 -f "go run" > /dev/null 2>&1 || true
lsof -ti :8080 | xargs -I {} kill -9 {} > /dev/null 2>&1 || true
lsof -ti :4317 | xargs -I {} kill -9 {} > /dev/null 2>&1 || true
sleep 1

echo "Starting Jaeger in Docker..."
# Start Jaeger container if not running
if ! docker ps | grep -q "jaegertracing/all-in-one"; then
    docker run -d --name jaeger \
        -e COLLECTOR_OTLP_ENABLED=true \
        -p 16686:16686 \
        -p 4317:4317 \
        -p 4318:4318 \
        jaegertracing/all-in-one:latest
    echo "Jaeger container started"
    sleep 5
else
    echo "Jaeger container already running"
fi

echo "Starting server with OpenTelemetry enabled..."
DLC_TELEMETRY_ENABLED=true DLC_TELEMETRY_OTLP_ENDPOINT="localhost:4317" DLC_TELEMETRY_INSECURE=true \
    DLC_TELEMETRY_SERVICE_NAME="DanceLessonsCoach" $SERVER_CMD start
sleep 3

echo "Testing API endpoints..."

# Test health endpoint
echo "Testing /api/health:"
HEALTH_RESPONSE=$(curl -s http://localhost:8080/api/health)
echo "Response: $HEALTH_RESPONSE"

# Test greet endpoint
echo "Testing /api/v1/greet/:"
GREET_RESPONSE=$(curl -s http://localhost:8080/api/v1/greet/)
echo "Response: $GREET_RESPONSE"

# Test greet with name
echo "Testing /api/v1/greet/TestUser:"
GREET_NAME_RESPONSE=$(curl -s http://localhost:8080/api/v1/greet/TestUser)
echo "Response: $GREET_NAME_RESPONSE"

echo ""
echo "Stopping server..."
$SERVER_CMD stop
sleep 2

echo ""
echo -e "\033[0;32m✅ OpenTelemetry Test Complete!\033[0m"
echo ""
echo "To view traces in Jaeger:"
echo "1. Open http://localhost:16686 in your browser"
echo "2. Select 'DanceLessonsCoach' service"
echo "3. Click 'Find Traces' button"
echo ""
echo "You should see traces for:"
echo "- /api/health requests"
echo "- /api/v1/greet/ requests"
echo "- /api/v1/greet/TestUser requests"
echo ""

# Clean up
rm -f "$PID_FILE" "$LOG_FILE"

exit 0