Skip to content

mobile: update SCONE integration tests to synthesize SCONE packets on HTTP/3 - #46922

Open
bsoumith wants to merge 8 commits into
envoyproxy:mainfrom
bsoumith:mobile-scone-filter-state
Open

mobile: update SCONE integration tests to synthesize SCONE packets on HTTP/3#46922
bsoumith wants to merge 8 commits into
envoyproxy:mainfrom
bsoumith:mobile-scone-filter-state

Conversation

@bsoumith

Copy link
Copy Markdown
Contributor

Commit Message: mobile: update SCONE integration tests to synthesize SCONE packets on HTTP/3

Additional Description:

Updates Envoy Mobile SCONE integration tests (client_integration_test.cc) to execute against HTTP/3 and end-to-end validate scone signal propagation:
1. Replaced the upstreamProtocol() != HTTP3 condition with getCodecType() != Http::CodecType::HTTP3 so the tests execute when the HTTP/3 codec is configured.
2. Updated MockRecvMsgOsSysCalls to synthesize valid 7-byte coalesced SCONE long-header packets on incoming UDP datagrams received from the fake upstream.
3. Set autonomous_upstream_ = false in SconeValuePropagationDelayed and SconeValuePropagationMultipleUpdates to support manual upstream request-response step validation.
4. Validated bandwidth value accuracy against QUIC SCONE rate tables, timestamp monotonicity, and connection ID preservation across multiplexed streams.

Risk Level: low
Testing: integration test

bsoumith and others added 6 commits August 21, 2026 22:32
When SCONE bitrate updates are processed in EnvoyQuicClientSession::OnSconePacket,
the SconeState is recorded in the upstream connection's filter state. In DirectStream::saveLatestStreamIntel,
fall back to checking info.upstreamInfo()->upstreamFilterState() if SconeState is not present on the downstream stream filter state.

Also add unit tests verifying upstream filter state retrieval and precedence, and an integration test verifying behavior when SCONE is disabled.

Signed-off-by: bsoumith <b.soumith@gmail.com>
Signed-off-by: bsoumith <b.soumith@gmail.com>
Signed-off-by: bsoumith <b.soumith@gmail.com>
…-state

Signed-off-by: bsoumith <b.soumith@gmail.com>
…NE frames

Signed-off-by: bsoumith <b.soumith@gmail.com>
@bsoumith
bsoumith marked this pull request as draft August 24, 2026 19:56
… rate table lookups

Signed-off-by: bsoumith <b.soumith@gmail.com>
@bsoumith
bsoumith marked this pull request as ready for review August 24, 2026 21:40
@bsoumith

Copy link
Copy Markdown
Contributor Author

/retest

- Call explicit TearDown() before local OsSysCalls singleton injectors are destroyed, ensuring background worker threads are joined.
- Reuse terminal_callback_.waitReady() across multi-stream sequences instead of modifying cc_.terminal_callback_ concurrently.
- Use std::atomic for captured stream intel metrics in callback lambdas.

Signed-off-by: bsoumith <b.soumith@gmail.com>
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