Files
minerops/scripts/test-agent-transport-isolation.sh
T

69 lines
1.2 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
cd "$(dirname "$0")/.."
PROJECT="minerops-agent-transport-isolation-test-$$"
compose=(
docker compose
--project-name "$PROJECT"
--env-file .env.dev
-f compose.dev.yaml
)
cleanup() {
"${compose[@]}" down \
--volumes \
--remove-orphans \
>/dev/null 2>&1 || true
}
trap cleanup EXIT
echo "=== START DISPOSABLE POSTGRES ==="
"${compose[@]}" up --detach postgres
echo
echo "=== WAIT FOR POSTGRES ==="
ready=0
for _ in $(seq 1 30); do
if "${compose[@]}" exec -T postgres \
sh -c 'pg_isready -U "$POSTGRES_USER" -d "$POSTGRES_DB"' \
>/dev/null 2>&1
then
ready=1
break
fi
sleep 1
done
if [ "$ready" -ne 1 ]; then
echo "PostgreSQL did not become ready."
exit 1
fi
echo
echo "=== BUILD BACKEND ==="
"${compose[@]}" build backend
echo
echo "=== MIGRATE DATABASE ==="
"${compose[@]}" run --rm backend \
alembic upgrade head
echo
echo "=== RUNTIME AGENT ZONE ISOLATION ==="
"${compose[@]}" run --rm \
--volume "$PWD/backend/tests:/app/tests:ro" \
--env MINEROPS_TRANSPORT_ISOLATION_DISPOSABLE=1 \
backend \
python -m unittest -v \
tests.test_agent_transport_isolation_postgres
echo
echo "Runtime Agent transport Zone-isolation tests passed."