60 lines
3.2 KiB
Markdown
60 lines
3.2 KiB
Markdown
# FinalFactory.Rendezvous.TestClient
|
|
|
|
This is a diagnostic executable for exercising Rendezvous through the same public
|
|
Client and Contracts API available to a game. It is not a production game client,
|
|
server browser, dedicated server, relay, account system, or gameplay host.
|
|
|
|
The executable has three explicit modes:
|
|
|
|
- `host` publishes a session, maintains presence and its lease, accepts an
|
|
authenticated direct peer, and answers a bounded ping/echo/ack/completion exchange;
|
|
- `browse` prints compatible public listings; and
|
|
- `join` selects or accepts a listing, drives traversal on its caller-owned
|
|
LiteNetLib socket, proves direct traffic, reports the typed outcome, and exits.
|
|
|
|
Run `dotnet run --project src/FinalFactory.Rendezvous.TestClient -- --help` for
|
|
the complete option reference. The repository's
|
|
[start-to-finish guide](../../docs/integration/test-client.md) provides an
|
|
executable local Compose setup, safe failure drill, JSON automation, and a
|
|
phase-by-phase diagnostic table. A typical deployment invocation is:
|
|
|
|
```bash
|
|
export RENDEZVOUS_PUBLISHER_CREDENTIAL='<credential from the deployment boundary>'
|
|
dotnet run --project src/FinalFactory.Rendezvous.TestClient -- \
|
|
host --service https://rendezvous.example/ --mediator rendezvous.example:9050 \
|
|
--game space-game --environment production --region eu-central --protocol 1 \
|
|
--script --json --exit-after-echo
|
|
```
|
|
|
|
Publisher credentials are accepted only through a named environment variable.
|
|
There is deliberately no command-line credential option because process command
|
|
lines are routinely exposed to other local tools and diagnostics. Output uses an
|
|
allowlisted event model and never includes lease tokens, punch capabilities,
|
|
connection tickets, raw metadata, signing material, or reusable credentials.
|
|
|
|
Script mode never prompts. Join mode selects the first compatible listing unless
|
|
`--listing UUID` fixes the choice. `--json` emits one JSON object per line with
|
|
`version: 1`; event names and the process exit codes below are stable automation
|
|
contracts. A script-mode host without `--run-seconds` uses `--timeout-seconds` as
|
|
its total runtime bound. New optional event properties may be added without changing
|
|
the version. JSON help and usage failures are versioned events as well; informational
|
|
events use stdout and failures use stderr.
|
|
|
|
| Exit | Meaning |
|
|
|---:|---|
|
|
| `0` | Requested diagnostic flow completed successfully |
|
|
| `2` | Invalid command or options |
|
|
| `3` | Missing or invalid local configuration |
|
|
| `10` | HTTP, registration, browser, lease, or socket failure |
|
|
| `11` | No compatible session was available or selected |
|
|
| `12` | Authorization or traversal reached a typed terminal failure |
|
|
| `13` | A requested direct ping/echo proof did not complete |
|
|
| `130` | Caller cancellation or Ctrl+C |
|
|
|
|
The client prints the selected direct endpoint category (`loopback`, `private`, or
|
|
`public`) but never the raw endpoint. A traversal failure reports whether an
|
|
authoritative dedicated fallback is available; the diagnostic does not connect to
|
|
that fallback automatically. A host may publish a policy-authorized endpoint with
|
|
`--fallback IP:PORT`. See the repository integration guide for process
|
|
orchestration and topology limitations.
|