Repository navigation
test(edge): Run the MASQUE lab fixture on the provider adapter - #1152
Merged
Merged
Conversation
This was referenced Oct 27, 2026
The MASQUE conformance fixture carried its own copy of the provider lifecycle: it set up every attachment and route at start and checked only its instance lease before forwarding. It now runs internal/edge/masque behind a static test Authorizer, so the lab exercises the adapter the CONNECT-IP transports use. The adapter requests an attachment and claims a connector's route when a request first needs them and releases the claim when the connector's last request ends. The lab rows therefore set up through requests, and the checks that routes stay accepted run with requests open. Three rows are new. Two connectors share one attachment while one's request ends and the other keeps forwarding. galactic-router's garbage collection runs while the fixture's attachments are their VPCs' only users on the node. A provider process killed in place adopts its attachments when it restarts. Key changes: - Replace the fixture's provider lifecycle with masque.Adapter and a static Authorizer over its config, which now names each VPC's base62 identifier - Rework setup, admission, partial-setup and recreation rows for on-demand claims, and add the shared-attachment, maintenance and process-restart rows - Add docs/edge/masque-provider.md for setup, readiness, drain and cleanup, and point the MASQUE design and acceptance documents at it
privateip
force-pushed
the
fix/issue-975
branch
from
October 27, 2026 19:17
764dca0 to
51d32c6
Compare
Contributor
|
The isolation row still inherits a gap from #1140: the advertised routes cover only each client's own tenant, so connect-ip-go drops the cross-tenant probes before they reach the provider while the probe counts them as sent. Please allow both test destination ranges through the tunnel and verify the negative probes reach the provider before checking they never reach the other tenant. Otherwise, this test can pass without exercising isolation. |
privateip
marked this pull request as ready for review
October 27, 2026 19:42
ecv
approved these changes
Oct 27, 2026
ecv
left a comment
Contributor
There was a problem hiding this comment.
Approve.
The static authorizer cannot reach a production binary, and the suite keeps every isolation and unprivileged assertion from #1140 while the new rows check real outcomes.
- Authorizer reach:
Config.Authorizelives inpackage mainundertests/edgeconformance/masqueprovider, which nothing can import. Only that directory's Dockerfile and the labTaskfile.yamlbuild it, andpublish.yamlbuilds none of it. It ships in no image or manifest. - Removed lines: the -762 are the hand-rolled
provider.go(524 lines) and its tests, which the real adapter replaces.M16-unprivileged-provider,M07-isolationandnat-egressand their bodies are untouched.checkAdmissionkeeps its credential and VPC cases and only moves the outside-grant route check after them, because the adapter claims routes on request. - The old end-of-row
waitAcceptedForfor both tenants is gone fromrowPartialandrowRecreation. Recreation replaces it with a live session per tenant throughrequireAnswered. After the partial kill only tenant 10 is checked. - New rows assert outcomes: session status 200, assigned /96, at least 90% of probes answered, gap of one second or less, and no stray packets.
shared-attachment-cancelalso checks attachment UID and Ready, and the claim'sReleasedflag.process-restartchecks the pod UID, restart count,adopted attachmentin the new container's log (emitted atadapter.go:190), unchanged attachment UIDs and a higher lease epoch.maintenance-during-usechecks the VRF exists and aGC: kept VRF an edge attachment usesline (internal/gc/gc.go:536) for each VPC.
Follow-ups:
TestMASQUEneeds the containerlabdfwlab and is not in CI. The green checks do not exercise any of these rows, so runtask verify:masque-conformanceonce before relying on them.maintenance-during-usematches the router's log text and the VRF name formatG%09sV. A log rewording makes it fail rather than pass vacuously, but an exported counter would be sturdier.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The MASQUE lab fixture now runs the provider adapter from #1151 behind a static test authorizer, so the lab tests the code both transports will use. The lab rows set up through requests, because the adapter claims routes only while a request is open. Three rows are new: two connectors sharing one attachment, garbage collection while connectors forward, and a provider process restarted in place. The docs now cover the adapter's setup, readiness, drain and cleanup.
This is the top of a GitHub stack, on #1151.
Compatibility and rollback
Test code, the lab fixture image and docs. Core behavior does not change. Revert the commit to roll back.
Test plan
task build,task test:unit,task test:e2e, lint andtask docs:checkpasstask verify:masque-conformance. The shared lab ran core images that could not be traced to a commit. This PR stays a draft until the lab rows passFixes #975