#!/bin/bash # --- 0. Load environment variables from .env file --- if [ -f .env ]; then echo "Loading environment variables from .env" export $(grep -v '^#' .env | xargs) fi export LOG_LEVEL=DEBUG API_URL="http://localhost:8000/documents" DEFAULT_MODEL="gemini" CURRENT_MODEL="" # --- 1. Check for Dependencies --- if ! command -v jq &> /dev/null; then echo "❌ 'jq' is not installed. Please install it to run this script." exit 1 fi # --- 2. Start the FastAPI Server in the Background --- echo "--- Starting AI Hub Server ---" uvicorn app.main:app --host 127.0.0.1 --port 8000 & SERVER_PID=$! cleanup() { echo "" echo "--- Shutting Down Server (PID: $SERVER_PID) ---" kill $SERVER_PID } trap cleanup EXIT echo "Server started with PID: $SERVER_PID. Waiting for it to initialize..." sleep 5 BASE_URL="http://localhost:8000" # --- 3. Get TEST_TEXT from CLI argument --- if [ -z "$1" ]; then echo "❌ No input text provided." echo "Usage: $0 \"Your text to send to /speech\"" exit 1 fi TEST_TEXT="$1" # Create a temporary file to store the JSON payload TEMP_JSON_FILE=$(mktemp) cat > "$TEMP_JSON_FILE" << EOF { "text": "$TEST_TEXT" } EOF # --- Test streaming mode --- echo "" echo "--- Testing streaming mode for /speech endpoint ---" STREAM_OUTPUT_FILE="data/speech_stream.wav" curl -s -X POST "$BASE_URL/speech?stream=true" \ -H "Content-Type: application/json" \ --data "@$TEMP_JSON_FILE" \ --output "$STREAM_OUTPUT_FILE" if [ -f "$STREAM_OUTPUT_FILE" ]; then echo "✅ Success! Streaming audio saved to $STREAM_OUTPUT_FILE" else echo "❌ Failed to get streaming audio" fi rm "$TEMP_JSON_FILE" echo "" echo "--- Tests complete. ---"