62 lines
1.9 KiB
Bash
Executable File
62 lines
1.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
PG_BIN="${PG_BIN:-/opt/homebrew/opt/postgresql@17/bin}"
|
|
SMOKE_PORT="${SMOKE_PORT:-18081}"
|
|
TEST_DB="queue_phone_smoke_$$"
|
|
API_PID=""
|
|
API_LOG="${TMPDIR:-/tmp}/${TEST_DB}.log"
|
|
API_BIN="${TMPDIR:-/tmp}/${TEST_DB}-api"
|
|
|
|
cleanup() {
|
|
if [[ -n "$API_PID" ]] && kill -0 "$API_PID" 2>/dev/null; then
|
|
kill -TERM "$API_PID" 2>/dev/null || true
|
|
wait "$API_PID" 2>/dev/null || true
|
|
fi
|
|
"$PG_BIN/dropdb" --if-exists --force "$TEST_DB" >/dev/null 2>&1 || true
|
|
rm -f "$API_LOG" "$API_BIN"
|
|
}
|
|
trap cleanup EXIT INT TERM
|
|
|
|
"$PG_BIN/createdb" -O queue "$TEST_DB"
|
|
|
|
set -a
|
|
source "$ROOT_DIR/server/.env"
|
|
set +a
|
|
export APP_ENV=development
|
|
export HTTP_ADDR=":$SMOKE_PORT"
|
|
export DATABASE_URL="postgres://queue:queue@localhost:5432/$TEST_DB?sslmode=disable"
|
|
export SESSION_COOKIE_NAME="queue_smoke_session_$$"
|
|
export SESSION_COOKIE_SECURE=false
|
|
export ADMIN_PASSWORD="${ADMIN_PASSWORD:-ChangeMe123!}"
|
|
export ADMIN_USERNAME=smokeadmin
|
|
export SEED_MODE=smoke
|
|
export DEMO_DISPLAY_TOKEN="$(python3 -c 'import secrets; print(secrets.token_urlsafe(32))')"
|
|
|
|
SEED_JSON="$(cd "$ROOT_DIR/server" && go run ./cmd/seed)"
|
|
DISPLAY_TOKEN="$(printf '%s' "$SEED_JSON" | python3 -c 'import json, sys; projects=json.load(sys.stdin).get("projects", []); print(projects[0]["display_url"].rstrip("/").rsplit("/", 1)[-1])')"
|
|
|
|
(cd "$ROOT_DIR/server" && go build -o "$API_BIN" ./cmd/api)
|
|
"$API_BIN" >"$API_LOG" 2>&1 &
|
|
API_PID=$!
|
|
|
|
READY=0
|
|
for _ in {1..50}; do
|
|
if curl -fsS "http://127.0.0.1:$SMOKE_PORT/readyz" >/dev/null 2>&1; then
|
|
READY=1
|
|
break
|
|
fi
|
|
sleep 0.1
|
|
done
|
|
if [[ "$READY" != "1" ]]; then
|
|
echo "Real smoke API did not become ready. Log follows:" >&2
|
|
sed -n '1,160p' "$API_LOG" >&2
|
|
exit 1
|
|
fi
|
|
|
|
python3 "$ROOT_DIR/scripts/smoke.py" \
|
|
--base-url "http://127.0.0.1:$SMOKE_PORT" \
|
|
--admin-username="$ADMIN_USERNAME" \
|
|
--display-token="$DISPLAY_TOKEN"
|