Translate inventory, AIS, cache, and task-inventory tests exactly #22

Closed
opened 2026-08-08 08:13:48 +00:00 by hugo · 1 comment
Owner

Objective

Translate InventoryManager, InventoryAISClient, inventory store/cache, fetch, library inventory, current item/link, task inventory, and batch-link tests not owned by appearance.

Deliverables

  • Preserve LLSD payloads, folder/item trees, link resolution, sort/order, batching, request URIs, callbacks, caching, cancellation, and error cases.
  • Port concurrent/async scenarios deterministically.
  • Keep filesystem fixtures isolated in temporary directories.

Validation

  • All owned cases compile against public inventory APIs.
  • Expected errors match variants and context.
  • No lock timing or sleep-based flakiness is introduced.

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 InventoryManager, InventoryAISClient, inventory store/cache, fetch, library inventory, current item/link, task inventory, and batch-link tests not owned by appearance. ## Deliverables - Preserve LLSD payloads, folder/item trees, link resolution, sort/order, batching, request URIs, callbacks, caching, cancellation, and error cases. - Port concurrent/async scenarios deterministically. - Keep filesystem fixtures isolated in temporary directories. ## Validation - All owned cases compile against public inventory APIs. - Expected errors match variants and context. - No lock timing or sleep-based flakiness is introduced. ## 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:48 +00:00
hugo added the enhancement label 2026-08-08 08:13:48 +00:00
Author
Owner

Implemented and pushed in d7d1295. Translated all 40 issue-owned NUnit invocations into explicit Rust tests: 2 inventory constructor-null cases, 9 AIS parsing/task-completion cases, 3 inventory-manager cases, 15 inventory store/cache/persistence/concurrency cases, 4 inventory-fetch live cases, 3 library live cases, and 4 RequestTaskInventory capability cases. The tests preserve LLSD and JSON payloads, UUID and link relationships, runtime subclass checks, HTTP request capture, task query parameters, shadow-ID decryption assertions, callbacks/results, cancellation inputs, isolated temporary directories, and the original 500-item and 200-link concurrent stress scenarios. The existing misclassified-link tests were adapted to the shared reference-based inventory mapping without changing their assertions. Live inventory tests use the shared GRID_USER, GRID_PASSWORD, and GRID_LOGIN_URL environment or .env configuration and are ignored only when credentials are absent; with the current credentials all 7 ran and 0 were ignored. Parity is now 488 translated, 18 ignored-live, 4 benchmarks, 779 pending, and 0 drifted. Isolated execution produced 40 expected failures at standardized unimplemented APIs with no compile, fixture, missing-symbol, placeholder, source-string, dispatch, or accidental-pass defects. Passed: formatting, generator checks, surface check, API coverage, parity check, Python tool tests, workspace all-target check, locked downstream API compile, workspace test no-run, Clippy with warnings denied, documentation, and diff checks. Review confirmed the six full inventory source files plus the two inventory-owned constructor cases are represented exactly once; appearance-owned BatchLink cases remain with closed issue 21 and were not duplicated. .env remains ignored.

Implemented and pushed in d7d1295. Translated all 40 issue-owned NUnit invocations into explicit Rust tests: 2 inventory constructor-null cases, 9 AIS parsing/task-completion cases, 3 inventory-manager cases, 15 inventory store/cache/persistence/concurrency cases, 4 inventory-fetch live cases, 3 library live cases, and 4 RequestTaskInventory capability cases. The tests preserve LLSD and JSON payloads, UUID and link relationships, runtime subclass checks, HTTP request capture, task query parameters, shadow-ID decryption assertions, callbacks/results, cancellation inputs, isolated temporary directories, and the original 500-item and 200-link concurrent stress scenarios. The existing misclassified-link tests were adapted to the shared reference-based inventory mapping without changing their assertions. Live inventory tests use the shared GRID_USER, GRID_PASSWORD, and GRID_LOGIN_URL environment or .env configuration and are ignored only when credentials are absent; with the current credentials all 7 ran and 0 were ignored. Parity is now 488 translated, 18 ignored-live, 4 benchmarks, 779 pending, and 0 drifted. Isolated execution produced 40 expected failures at standardized unimplemented APIs with no compile, fixture, missing-symbol, placeholder, source-string, dispatch, or accidental-pass defects. Passed: formatting, generator checks, surface check, API coverage, parity check, Python tool tests, workspace all-target check, locked downstream API compile, workspace test no-run, Clippy with warnings denied, documentation, and diff checks. Review confirmed the six full inventory source files plus the two inventory-owned constructor cases are represented exactly once; appearance-owned BatchLink cases remain with closed issue 21 and were not duplicated. .env remains ignored.
hugo closed this issue 2026-08-08 18:54:30 +00:00
Sign in to join this conversation.