Implement native VivoxTest validation (#95)
Some checks failed
Native code generation / deterministic (push) Failing after 2m19s
Imaging and meshing gate / native (push) Failing after 4m24s
JPEG 2000 feature / linux (push) Successful in 2m50s
Native Rust workspace compile / compile (push) Failing after 15m31s
Skia feature / linux (push) Successful in 31m51s

This commit is contained in:
2026-08-11 14:09:51 +00:00
parent 21f85a1b58
commit da4afec708
16 changed files with 2462 additions and 21 deletions

View File

@@ -14,9 +14,48 @@ here so a source entry is never mistaken for a completed port.
| `inventory-explorer` | InventoryExplorer | Implemented with live inventory and deterministic AIS fixtures |
| `irc-gateway` | IRCGateway | Implemented with live IRC/grid transports and deterministic offline scripts |
| `test-client` | TestClient | All non-voice command groups implemented with live and deterministic fake-grid backends; voice adapters tracked by #95 and #96 |
| `vivox-test` | VivoxTest | Pending milestone 11 issue #95 |
| `vivox-test` | VivoxTest | Implemented with gated live validation and a scripted fake TCP/control service |
| `webrtc-test` | WebRtcTest | Pending milestone 11 issue #96 |
## VivoxTest
`vivox-test` is a native async client of the Vivox SDK XML control protocol. It
connects to an already-running service; it does not bundle, locate, start, or
invoke the proprietary Vivox daemon, an SDK binary, a CLR, or the upstream C#
program. Connector, provisional-account login, session, participant-volume,
termination, account logout, connector shutdown, device enumeration, request
correlation, and daemon events all use the public
`libremetaverse-voice-vivox::VivoxControlClient` API.
Live validation is credential-safe and explicitly gated:
```text
GRID_FIRST_NAME=... GRID_LAST_NAME=... GRID_PASSWORD=... \
vivox-test --allow-live-login --confirm-live-login LOGIN
```
The service endpoint defaults to `127.0.0.1:44124` and may be changed with
`--daemon-endpoint IP:PORT`. The daemon and its proprietary SDK prerequisites
must be installed and started separately. Capability URLs, provisioned account
credentials, connector/account/session handles, and voice URIs never appear in
diagnostics. Live parcel audio is a separate operation and is skipped unless
`--allow-session-audio` is supplied.
Offline CI uses `--fake-script FILE`. The bounded, tab-separated file provides
`capture-device`, `current-capture`, `render-device`, `current-render`,
`provision`, `parcel`, and `participant` directives. An optional `reject`
directive scripts a daemon failure. Fake mode binds an ephemeral IPv4 loopback
port and performs the complete ten-request control flow over TCP before awaiting
the service task and proving that no pipes, sessions, or tasks remain.
Run the issue-focused validation with:
```sh
cargo test -p libremetaverse-voice-vivox
cargo test -p libremetaverse-programs --test vivox_test_cli
cargo test --manifest-path tests/compat/Cargo.toml --test vivox_protocol_semantics
```
## OSDInspector
`osd-inspector` is a bounded, offline command-line client of the public native