Keep live-server categories ignored by default rather than deleting them.
Validation
Offline tests compile without opening real network connections during setup.
Failures occur at unimplemented public calls.
Live tests document required environment and remain opt-in.
Prerequisite
Milestone 02 must provide the complete callable public API shim. Keep all production behavior standardized as unimplemented.
Project constraints
Translate the original test semantics exactly; do not weaken assertions, tolerances, inputs, errors, ordering, or interaction expectations.
Tests must exercise the mapped Rust API and must never call LibreMetaverse/.NET as their implementation.
Expected C# exceptions map to specific Rust error variants; an unimplemented panic must remain a failure.
Do not implement production behavior during this milestone. Update parity metadata and handover status with the change.
## Objective
Translate tests for caps HTTP clients, rate limiting, event queues, downloads, network/simulator behavior, GridClient, login, and lifecycle operations.
## Deliverables
- Port fake handlers/servers and request recordings into deterministic Rust fixtures.
- Preserve method, URL, headers, content type, body, retry, redirect, timeout, cancellation, progress, deduplication, and event ordering assertions.
- Keep live-server categories ignored by default rather than deleting them.
## Validation
- Offline tests compile without opening real network connections during setup.
- Failures occur at unimplemented public calls.
- Live tests document required environment and remain opt-in.
## Prerequisite
Milestone 02 must provide the complete callable public API shim. Keep all production behavior standardized as unimplemented.
## Project constraints
- Translate the original test semantics exactly; do not weaken assertions, tolerances, inputs, errors, ordering, or interaction expectations.
- Tests must exercise the mapped Rust API and must never call LibreMetaverse/.NET as their implementation.
- Expected C# exceptions map to specific Rust error variants; an unimplemented panic must remain a failure.
- Do not implement production behavior during this milestone. Update parity metadata and handover status with the change.
hugo
added this to the 03 - Full semantic test translation milestone 2026-08-08 08:13:46 +00:00
Implemented in 069e636 (Translate network lifecycle parity tests).
Implementation:
reviewed and translated all seven issue-owned cases from the pinned upstream: four deterministic HTTP/download cases and three live GridClient/network cases
added a cross-platform stdlib request/response recording handler so method, URL, content type, body, headers, status, response bytes, delay, and send counts remain observable without binding a socket
kept all three RequiresLiveServer cases ignored by default and documented LMVTestAgentUsername/LMVTestAgentPassword; they remain explicitly runnable with --ignored
added a typed Cancelled error and observable cancellation token/source contract while every mapped production HTTP/download/network body remains Error::NotImplemented
The pinned upstream contains no standalone rate-limiter NUnit case; rate-limiter exposure is only part of GridClient lifecycle, so no synthetic case was invented.
Verification (all green):
cargo fmt --all -- --check
mapping, shim, API coverage, surface, and parity generator checks
Isolation runs: the default network_semantics run executed four offline cases and ignored three live cases; every offline failure was at its first exact public failure-only shim and no socket was opened. The explicit --ignored run executed all three live cases and stopped at GridClient construction before credentials or network access in the current failure-only build.
Implemented in 069e636 (Translate network lifecycle parity tests).
Implementation:
- reviewed and translated all seven issue-owned cases from the pinned upstream: four deterministic HTTP/download cases and three live GridClient/network cases
- added a cross-platform stdlib request/response recording handler so method, URL, content type, body, headers, status, response bytes, delay, and send counts remain observable without binding a socket
- preserved retry=1, five-second timeout, canceled-token typed-error assertion, same-URI in-flight deduplication, non-HTTP Location/Content-Location regression data, login lifecycle, ObjectUpdate ordering, and event-queue timeout behavior
- kept all three RequiresLiveServer cases ignored by default and documented LMVTestAgentUsername/LMVTestAgentPassword; they remain explicitly runnable with --ignored
- added a typed Cancelled error and observable cancellation token/source contract while every mapped production HTTP/download/network body remains Error::NotImplemented
- updated parity/handover metadata to 149 translated, 3 ignored-live, 4 benchmark-reviewed, 1,133 pending, 0 drift
The pinned upstream contains no standalone rate-limiter NUnit case; rate-limiter exposure is only part of GridClient lifecycle, so no synthetic case was invented.
Verification (all green):
- cargo fmt --all -- --check
- mapping, shim, API coverage, surface, and parity generator checks
- Python generator unit tests
- cargo test -p libremetaverse-types
- cargo check --workspace --all-targets
- locked API compile check
- cargo test --workspace --no-run
- cargo clippy --workspace --all-targets --all-features -- -D warnings
- cargo doc --workspace --no-deps
Isolation runs: the default network_semantics run executed four offline cases and ignored three live cases; every offline failure was at its first exact public failure-only shim and no socket was opened. The explicit --ignored run executed all three live cases and stopped at GridClient construction before credentials or network access in the current failure-only build.
Replaced all 7 owned NUnit invocations with explicit Rust tests that call mapped public APIs: 3 DownloadManager cases, the non-HTTP Location HttpCapsClient regression, GetGridRegion, DetectObjects, and CapsQueue.
Added async deterministic HTTP handlers with exact request/response recording, content headers/body/status, 200 ms in-flight dedup timing, 5 second download bounds, typed cancellation, and subscription/event ordering. Offline setup opens no sockets.
Preserved the live fixture setup, login variants, 30/45 second timeouts, movement setting, ObjectUpdate callback, event queue wait, region checks, logout, and disposal. GRID_USER, GRID_PASSWORD, and GRID_LOGIN_URL are loaded from the environment or ignored workspace .env without exposing values. Live tests are conditionally ignored only when any credential is absent; with credentials present they run automatically. .env.example documents the shape.
Corrected mutable nested API mappings for GridClient.Self, GridClient.Settings, and Settings.Timing; production APIs remain standardized unimplemented failures.
Audited earlier translated tests: no previous reviewed RequiresLiveServer/ignored live-grid cases existed; the only earlier login reference is compile-only and cannot perform network work.
Parity is now pending=1133, translated=149, ignored-live=3, benchmark=4, drifted=0.
Local verification (no Actions): formatting; mapping/shim/surface regeneration checks; API coverage; parity audit; generator unit tests; workspace/all-target check; locked downstream API compile; workspace test no-run; clippy with warnings denied; rustdoc with warnings denied. The issue test target selected all 7 cases with the present .env and produced 0 passes / 7 expected failures at GridClient or HttpCapsClient NotImplemented members. A copied checkout without credentials reported the live case ignored with the documented reason.
Implemented and pushed in commit 6d4d9ad.
- Replaced all 7 owned NUnit invocations with explicit Rust tests that call mapped public APIs: 3 DownloadManager cases, the non-HTTP Location HttpCapsClient regression, GetGridRegion, DetectObjects, and CapsQueue.
- Added async deterministic HTTP handlers with exact request/response recording, content headers/body/status, 200 ms in-flight dedup timing, 5 second download bounds, typed cancellation, and subscription/event ordering. Offline setup opens no sockets.
- Preserved the live fixture setup, login variants, 30/45 second timeouts, movement setting, ObjectUpdate callback, event queue wait, region checks, logout, and disposal. GRID_USER, GRID_PASSWORD, and GRID_LOGIN_URL are loaded from the environment or ignored workspace .env without exposing values. Live tests are conditionally ignored only when any credential is absent; with credentials present they run automatically. .env.example documents the shape.
- Corrected mutable nested API mappings for GridClient.Self, GridClient.Settings, and Settings.Timing; production APIs remain standardized unimplemented failures.
- Audited earlier translated tests: no previous reviewed RequiresLiveServer/ignored live-grid cases existed; the only earlier login reference is compile-only and cannot perform network work.
- Parity is now pending=1133, translated=149, ignored-live=3, benchmark=4, drifted=0.
Local verification (no Actions): formatting; mapping/shim/surface regeneration checks; API coverage; parity audit; generator unit tests; workspace/all-target check; locked downstream API compile; workspace test no-run; clippy with warnings denied; rustdoc with warnings denied. The issue test target selected all 7 cases with the present .env and produced 0 passes / 7 expected failures at GridClient or HttpCapsClient NotImplemented members. A copied checkout without credentials reported the live case ignored with the documented reason.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Objective
Translate tests for caps HTTP clients, rate limiting, event queues, downloads, network/simulator behavior, GridClient, login, and lifecycle operations.
Deliverables
Validation
Prerequisite
Milestone 02 must provide the complete callable public API shim. Keep all production behavior standardized as unimplemented.
Project constraints
Implemented in
069e636(Translate network lifecycle parity tests).Implementation:
The pinned upstream contains no standalone rate-limiter NUnit case; rate-limiter exposure is only part of GridClient lifecycle, so no synthetic case was invented.
Verification (all green):
Isolation runs: the default network_semantics run executed four offline cases and ignored three live cases; every offline failure was at its first exact public failure-only shim and no socket was opened. The explicit --ignored run executed all three live cases and stopped at GridClient construction before credentials or network access in the current failure-only build.
Implemented and pushed in commit
6d4d9ad.Local verification (no Actions): formatting; mapping/shim/surface regeneration checks; API coverage; parity audit; generator unit tests; workspace/all-target check; locked downstream API compile; workspace test no-run; clippy with warnings denied; rustdoc with warnings denied. The issue test target selected all 7 cases with the present .env and produced 0 passes / 7 expected failures at GridClient or HttpCapsClient NotImplemented members. A copied checkout without credentials reported the live case ignored with the documented reason.