verstak-desktop/scripts/smoke-real-sync.sh

63 lines
1.7 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
DESKTOP_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
SYNC_SERVER_DIR="$(cd "$DESKTOP_DIR/../verstak-sync-server" && pwd)"
PORT="${VERSTAK_SYNC_SMOKE_PORT:-47733}"
DATA_DIR="$(mktemp -d)"
LOG_FILE="$DATA_DIR/server.log"
SERVER_PID=""
cleanup() {
if [[ -n "$SERVER_PID" ]] && kill -0 "$SERVER_PID" 2>/dev/null; then
kill "$SERVER_PID" 2>/dev/null || true
wait "$SERVER_PID" 2>/dev/null || true
fi
rm -rf "$DATA_DIR"
}
trap cleanup EXIT
if ss -ltn | grep -q ":$PORT "; then
echo "port $PORT is already in use" >&2
exit 1
fi
(
cd "$SYNC_SERVER_DIR"
go run ./cmd/server --port "$PORT" --data "$DATA_DIR"
) >"$LOG_FILE" 2>&1 &
SERVER_PID="$!"
for _ in $(seq 1 80); do
if curl -fsS "http://127.0.0.1:$PORT/api/v1/health" >/dev/null 2>&1; then
break
fi
if ! kill -0 "$SERVER_PID" 2>/dev/null; then
cat "$LOG_FILE" >&2
exit 1
fi
sleep 0.25
done
curl -fsS "http://127.0.0.1:$PORT/api/v1/health" >/dev/null
NOW="$(date -u +%Y-%m-%dT%H:%M:%SZ)"
sqlite3 "$DATA_DIR/server.db" "
INSERT INTO server_devices (id, name, api_key, last_seen, created_at)
VALUES ('smoke-device-a', 'Smoke Device A', 'smoke-key-a', '$NOW', '$NOW');
INSERT INTO server_devices (id, name, api_key, last_seen, created_at)
VALUES ('smoke-device-b', 'Smoke Device B', 'smoke-key-b', '$NOW', '$NOW');
"
(
cd "$DESKTOP_DIR"
VERSTAK_SYNC_SMOKE_SERVER_URL="http://127.0.0.1:$PORT" \
VERSTAK_SYNC_SMOKE_DEVICE_A="smoke-device-a" \
VERSTAK_SYNC_SMOKE_DEVICE_B="smoke-device-b" \
VERSTAK_SYNC_SMOKE_KEY_A="smoke-key-a" \
VERSTAK_SYNC_SMOKE_KEY_B="smoke-key-b" \
go test ./internal/api -run TestSyncNowAgainstRealServerTwoVaults -count=1 -v
)