OSVauco/scripts/acceptance-test.sh

78 lines
2.5 KiB
Bash

#!/usr/bin/env bash
# acceptance-test.sh — Full boot cycle acceptance test for OSVauco OPAX
set -euo pipefail
# --- Configuration & Helpers ---
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/.."
# Default to no cleanup
CLEANUP=false
# Parse command-line arguments
for arg in "$@"
do
case $arg in
--cleanup)
CLEANUP=true
shift # Remove --cleanup from processing
;;
esac
done
echo_step() {
echo ""
echo "=================================================================="
echo "=> $1"
echo "=================================================================="
}
# --- Main Test Flow ---
# Step 1: Source environment variables if .env file exists
echo_step "Loading environment..."
if [ -f "$ROOT_DIR/.env" ]; then
source "$ROOT_DIR/.env"
echo ".env file loaded."
else
echo "WARNING: .env file not found. Script may fail if required variables are not set."
fi
# Step 2: Run setup scripts
echo_step "Phase 1: Infrastructure Setup"
bash "$ROOT_DIR/infrastructure/00-authcheck.sh"
bash "$ROOT_DIR/infrastructure/01-setupenv.sh"
bash "$ROOT_DIR/infrastructure/07-rag-setup.sh"
bash "$ROOT_DIR/infrastructure/08-memorybank-setup.sh"
bash "$ROOT_DIR/infrastructure/04-observability-setup.sh"
bash "$ROOT_DIR/infrastructure/11-billing-iam-hardening.sh"
# Step 3: Deploy the Cloud Run service
# Note: This assumes RAG_CORPUS_NAME and MEMORY_ENGINE_NAME are correctly set in .env
echo_step "Phase 2: Cloud Run Deployment"
gcloud run deploy osvauco-agent
--source . --region europe-west1
--project "${GCLOUD_PROJECT_ID?GCLOUD_PROJECT_ID not set}"
--set-secrets "RAG_CORPUS=${RAG_CORPUS_NAME?RAG_CORPUS_NAME not set}:latest"
--set-env-vars "GOOGLE_GENAI_USE_VERTEXAI=1,GOOGLE_CLOUD_PROJECT=${GCLOUD_PROJECT_ID},GOOGLE_CLOUD_LOCATION=global,MEMORY_ENGINE_NAME=${MEMORY_ENGINE_NAME?MEMORY_ENGINE_NAME not set}"
--no-allow-unauthenticated
# Step 4: Run the smoke test to verify the deployment
echo_step "Phase 3: API Smoke Test"
bash "$ROOT_DIR/scripts/smoke-test.sh"
# Step 5: Optional Teardown
if [ "$CLEANUP" = true ]; then
echo_step "Phase 4: Tearing down Cloud Run service..."
bash "$ROOT_DIR/infrastructure/03-teardown.sh"
echo "Teardown complete."
else
echo_step "Skipping teardown. Run 'bash infrastructure/03-teardown.sh' manually to clean up."
fi
echo ""
echo "=================================================================="
echo "✅✅✅ Acceptance Test Completed Successfully ✅✅✅"
echo "=================================================================="