Skip to content

test(quic): cover receive-credit recovery and queue lifecycle - #39

Merged
hatoo merged 1 commit into
masterfrom
codex/test-quic-receive-credit-20261021
Oct 21, 2026
Merged

hatoo merged 1 commit into
masterfrom
codex/test-quic-receive-credit-20261021

Conversation

@hatoo

@hatoo hatoo commented Oct 21, 2026

Copy link
Copy Markdown
Owner

Receive-credit queue changes need coverage for response streams that outgrow their initial window, lose MAX_STREAM_DATA grants, and retire while grants remain queued. Add six regressions covering the queue lifecycle and an independent Quinn peer that sends five patterned streams through many small receive windows.

The live recovery fixture withholds every fresh grant for one stream until loss recovery resends its current limit, then exercises reordered and duplicated encrypted grants. It checks decrypted limits, every response byte, FIN events, and peer-side acknowledgement of completion. Disabling lost MAX_STREAM_DATA requeuing makes this fixture fail with the target stream stuck at its initial 1,024-byte limit.

Additional tests compare LIFO grant order against a model across 10,000 operations and varied packet budgets; cover failed consumes, duplicate reads/losses, updated limits, FIN/reset before emission, sparse request ACKs, retirement and buffer reuse. The change adds only test modules; production behavior and dependencies are unchanged.

Validation:

  • cargo test --locked: 519 unit and 63 integration tests pass; 2 pre-existing ignored tests.
  • cargo test --release --locked: the same test counts pass.
  • cargo clippy --locked --all-targets -- -D warnings and cargo fmt --check pass.
  • A separately built broken retransmission variant fails the new live recovery test as expected.

The small receive windows are transport test parameters, not a production configuration or a performance claim.

@hatoo
hatoo enabled auto-merge (squash) October 21, 2026 11:30
@hatoo
hatoo merged commit 81afdc1 into master Oct 21, 2026
4 checks passed
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