Skip to content

refactor(resolver): relocate httpresolver test double out of product surface - #133

Merged
snkmcb merged 2 commits into
mainfrom
feat/v0.10.0-resolver-test-double-relocation
Aug 22, 2026
Merged

refactor(resolver): relocate httpresolver test double out of product surface#133
snkmcb merged 2 commits into
mainfrom
feat/v0.10.0-resolver-test-double-relocation

Conversation

@snkmcb

@snkmcb snkmcb commented Aug 22, 2026

Copy link
Copy Markdown
Collaborator

Summary

The repository-local HTTP resolver lived under plugins/ despite being an integration-test double. That placement put it in the product surface, the release metadata matrix, and its own standalone CI cells.

This moves it to tests/plugins/httpresolver and removes it from the product build:

  • Dropped the top-level add_subdirectory(plugins/httpresolver).
  • Removed its assertions from tools/check_release_metadata.py.
  • Removed its standalone CI cells from openstrata.ci.yaml and ost-source-ci.yml.
  • Deleted openstrata.plugin.yaml — it is no longer a published plugin.
  • Dropped openstrata_install_plugin_bundle, which fixes a real prior bug: the double was being installed into the shipped COPC product stage.
  • The COPC Tier 1 integration test builds it transitively under USDGEO_BUILD_TESTS in the root build, so the local gate stays independent of external resolver repositories.

Also included:

  • Added TryBuildPointCloudCacheLayout so producer and consumer tests derive resolver-backed cache entries from the same descriptor contract.
  • Reworked resolver cache Tier 1 coverage to assert cache hits, incomplete and corrupted entry invalidation, and validation-token changes through cache artifacts rather than process-local counters. The counters are not shared across the FileFormat DLL boundary on Windows, so they could not observe the behavior under test.
  • Docs updated for the released usd-http-resolver implementation and its resolver-neutral ArAssetInfo identity contract.

Known gap: Tier 1 is not in the CI matrix

Review of the first commit caught that it claimed Tier 1 was the "required CI gate" and that the fixture was built transitively by CI. Neither is true, and the second commit corrects the docs rather than overstating coverage.

Every cell in openstrata.ci.yaml is a per-plugin bundle build rooted at plugins/pointcloud-<x>/CMakeLists.txt, which is a standalone project() that never declares the USDGEO_BUILD_TESTS option. Undefined there means the guarded block never runs, so neither pointcloudCopc_tests nor the resolver fixture is compiled in CI. The option defaults ON only in the root CMakeLists.txt, which is what the local ost configure && ost build && ost test gate configures.

Two consequences worth naming explicitly:

  • The test-run gap predates this PR — pointcloudCopc_tests was always behind the guard, so Tier 1 has never run in CI.
  • This PR does narrow compile coverage: the previous unconditional add_subdirectory meant COPC cells at least compiled HttpResolver.cpp. Now nothing in CI does.

Wiring Tier 1 into CI needs a new root-build cell with ctest, which costs billed runner minutes and is left as follow-up.

Test plan

  • python tools/check_release_metadata.py → consistent at 0.9.0
  • Verified no doc still claims Tier 1 is a CI gate
  • Local ost configure && ost build && ost test to exercise Tier 1
  • CI: confirm no cell still references plugins/httpresolver

Note: I did not run a local C++ build; the CMake path changes are unverified by CI for the reason above.

Follow-ups

  • Wire Tier 1 into the CI matrix (root build + ctest).
  • tests/test_pointcloud_copc.cpp writes cache.manifest as the literal committed\n, while the real producer (WriteManifest, tools/usd-pointcloud-convert/main.cpp:442) writes a structured manifest with payload enumeration. It passes only because InspectMarker checks existence and file type, never content — so Tier 1 does not exercise the producer/consumer manifest contract.

🤖 Generated with Claude Code

snkmcb and others added 2 commits August 22, 2026 20:54
…surface

The repository-local HTTP resolver was shipped under plugins/ despite being an
integration-test double, which put it in the product surface, the release
matrix, and its own CI cells.

Move it to tests/plugins/httpresolver and drop it from the product build:
remove the top-level add_subdirectory, its release metadata assertions, and its
standalone CI cells. The COPC Tier 1 integration test now builds it
transitively under USDGEO_BUILD_TESTS, keeping the required gate independent of
external resolver repositories. Its openstrata.plugin.yaml is removed since it
is no longer a published plugin.

Add TryBuildPointCloudCacheLayout so producer and consumer tests derive
resolver-backed cache entries from the same descriptor contract, and rework the
resolver cache Tier 1 coverage to assert hits, incomplete and corrupted entry
invalidation, and validation-token changes through cache artifacts rather than
process-local counters, which are not shared across the FileFormat DLL boundary
on Windows.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The relocation commit documented Tier 1 resolver contract tests as the
"required CI gate" and described the test double as built transitively by the
COPC integration test in CI. Neither is true.

Every cell in openstrata.ci.yaml is a per-plugin bundle build rooted at
plugins/pointcloud-<x>/CMakeLists.txt, which is a standalone project() that
never declares the USDGEO_BUILD_TESTS option. The option is undefined there, so
the guarded block never runs and neither pointcloudCopc_tests nor the resolver
fixture is compiled in CI. USDGEO_BUILD_TESTS defaults to ON only in the root
CMakeLists.txt, which is what the local `ost build` gate configures.

Restate Tier 1 as the required local gate across WORKSPACE.md,
RESOLVER_SOURCE.md, infrastructure-maturity.md, and CHANGELOG.md, and record
that wiring it into the CI matrix is outstanding follow-up work.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@snkmcb
snkmcb merged commit 4010d58 into main Aug 22, 2026
13 checks passed
@snkmcb
snkmcb deleted the feat/v0.10.0-resolver-test-double-relocation branch August 22, 2026 15:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant