test(multiplayer): add consolidated local gate

This commit is contained in:
Josh Creek
2026-09-01 17:07:44 +01:00
parent f1b8366531
commit d1bcb51225
3 changed files with 31 additions and 1 deletions
+4 -1
View File
@@ -1,4 +1,7 @@
.PHONY: verify-phase6 verify-enet-integration verify-steam-templates verify-supply-chain
.PHONY: verify-phase6 verify-enet-integration verify-steam-templates verify-supply-chain verify-multiplayer-local
verify-multiplayer-local:
bash scripts/verify_multiplayer_local.sh
verify-phase6:
bash scripts/verify_phase6.sh
+2
View File
@@ -1444,3 +1444,5 @@ The Godot control-plane client now retains the exact last idempotent mutation an
The matchmaking UI now exposes that retained replay through its existing action button as `Retry Request` while a heartbeat, cancellation, or proposal action has a retryable failure. Terminal, authentication, and revision-conflict paths remain ineligible, so the button cannot issue a stale blind command.
The control plane now exports bounded Prometheus-compatible API request counters and latency summaries at `GET /metrics`, with fixed operation/status labels and no event-stream wrapping. Production and testkit services wire the collector; adversarial tests verify unknown paths cannot inject label cardinality or leak URL secrets, and full Go/race/vet checks pass. Durable SLO dashboards and alert routing remain operational work.
`make verify-multiplayer-local` now provides one cloud-free regression gate for the current implementation: the complete Go suite, the Godot harness, OpenAPI parsing, and the migration/Fleet/Kubernetes/supply-chain checks. It fails clearly when the configured Godot executable is unavailable and does not weaken or replace the existing Phase 6/ENet gates; PostgreSQL, Redis, Steam, Agones, and multi-process Internet gates remain separate.
+25
View File
@@ -0,0 +1,25 @@
#!/usr/bin/env bash
set -euo pipefail
root_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
godot_bin="${GODOT_BIN:-/Applications/Godot.app/Contents/MacOS/Godot}"
if [[ ! -x "$godot_bin" ]]; then
echo "local multiplayer gate: Godot executable not found: $godot_bin" >&2
exit 2
fi
echo "local multiplayer gate: Go tests"
(cd "$root_dir/server" && go test ./...)
echo "local multiplayer gate: Godot harness"
"$godot_bin" --headless --path "$root_dir/Game" res://tests/test_runner.tscn
echo "local multiplayer gate: contracts and manifests"
python3 -m json.tool "$root_dir/server/contracts/v1/openapi.json" >/dev/null
python3 "$root_dir/server/migrations/test_migration.py"
python3 "$root_dir/server/security/test_fleet_manifests.py"
python3 "$root_dir/server/security/test_kubernetes_policies.py"
python3 "$root_dir/server/security/test_supply_chain.py"
echo "LOCAL MULTIPLAYER GATE PASS"