Implement native TestClient shell
Some checks failed
Native Rust workspace compile / compile (push) Failing after 12m49s
Some checks failed
Native Rust workspace compile / compile (push) Failing after 12m49s
This commit is contained in:
@@ -13,7 +13,7 @@ here so a source entry is never mistaken for a completed port.
|
||||
| `prim-inspector` | PrimInspector | Implemented with live and deterministic fake-grid discovery |
|
||||
| `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 | Pending milestone 11 issues #91–#94 |
|
||||
| `test-client` | TestClient | Native shell, registry, system, and communication groups implemented; remaining command groups tracked by #92–#94 |
|
||||
| `vivox-test` | VivoxTest | Pending milestone 11 issue #95 |
|
||||
| `webrtc-test` | WebRtcTest | Pending milestone 11 issue #96 |
|
||||
|
||||
@@ -151,6 +151,64 @@ cargo test -p libremetaverse-programs irc_gateway::tests --locked
|
||||
cargo test --manifest-path tests/compat/Cargo.toml --test social_message_semantics --locked
|
||||
```
|
||||
|
||||
## TestClient
|
||||
|
||||
`test-client` is a native asynchronous multi-avatar command shell. It accepts
|
||||
one account with `--first`, `--last`, and `--pass`, or a bounded account file
|
||||
with `--file`. Account-file records use `First Last Password` followed by an
|
||||
optional `Region/x/y/z` start location. `--loginuri`, `--startpos`, `--master`,
|
||||
`--masterkey`, `--groupcommands`, `--scriptfile`, and `--nogui` preserve the
|
||||
upstream shell controls. Each login has a configurable timeout, the registry is
|
||||
limited to 64 clients, and `@ First Last` selects one client while `@` restores
|
||||
broadcast command routing.
|
||||
|
||||
The implemented command groups are `@`, `debug`, `echomaster`, `help`, `im`,
|
||||
`imgroup`, `load`, `login`, `logpacket`, `logout`, `md5`, `quit`, `say`,
|
||||
`setmaster`, `setmasterkey`, `shout`, `showeffects`, `sleep`, `waitforlogin`, and
|
||||
`whisper`. Chat and instant-message bodies are bounded to the grid protocol
|
||||
limit. Group commands require both `--groupcommands` and current group
|
||||
membership. Master chat can be echoed, master teleport lures are accepted, and
|
||||
remote `login` and `md5` command text is redacted from transcripts. Packet logs
|
||||
contain only timestamped packet type, simulator name, and byte count; they are
|
||||
limited to 10,000 records and 16 MiB.
|
||||
|
||||
The native `load` command reads a portable command-alias manifest instead of a
|
||||
CLR assembly. Each non-comment line is tab-separated
|
||||
`name<TAB>description<TAB>template`; `{args}` or `$*` inserts the quoted command
|
||||
arguments. Manifests are limited to 1 MiB and 128 commands, with an alias
|
||||
expansion depth of eight.
|
||||
|
||||
Use `--fake-script FILE` for deterministic, credential-free terminal and grid
|
||||
validation. Normal lines are dispatched exactly like interactive input. Fake
|
||||
grid records begin with `!` and use tab-separated fields:
|
||||
|
||||
```text
|
||||
!client<TAB>client-uuid<TAB>first<TAB>last
|
||||
!client<TAB>client-uuid<TAB>first<TAB>last<TAB>master-name<TAB>master-uuid<TAB>true|false
|
||||
!person<TAB>avatar-name<TAB>avatar-uuid
|
||||
!group-member<TAB>avatar-uuid
|
||||
!chat<TAB>client-uuid<TAB>source-uuid<TAB>name<TAB>message
|
||||
!im<TAB>client-uuid<TAB>source-uuid<TAB>name<TAB>agent|object|teleport<TAB>true|false<TAB>message<TAB>session-uuid
|
||||
!packet<TAB>client-uuid<TAB>packet-type<TAB>simulator<TAB>bytes
|
||||
!effect<TAB>client-uuid<TAB>summary
|
||||
!disconnect<TAB>client-uuid<TAB>reason
|
||||
!cancel
|
||||
!shutdown
|
||||
```
|
||||
|
||||
Inputs are limited to 1 MiB and 4,096 lines. The fake transcript records native
|
||||
backend calls and ends with connected-client, pending-login, active-task,
|
||||
shutdown, dropped-event, and pending-command-inventory state. Run the focused
|
||||
framework and compatibility checks with:
|
||||
|
||||
```sh
|
||||
cargo test -p libremetaverse-programs --test test_client_cli --locked
|
||||
cargo test -p libremetaverse-programs test_client::tests --locked
|
||||
cargo test --manifest-path tests/compat/Cargo.toml --test core_runtime_shims --locked
|
||||
cargo test --manifest-path tests/compat/Cargo.toml --test social_message_semantics --locked
|
||||
cargo test --manifest-path tests/compat/Cargo.toml --test network_semantics --locked
|
||||
```
|
||||
|
||||
## PacketDump
|
||||
|
||||
`packet-dump` preserves the upstream live arguments and its 20-second login
|
||||
|
||||
Reference in New Issue
Block a user