diff --git a/quest/m0/nightly/README.md b/quest/m0/nightly/README.md index 058fab6dc8c..7e4c178bd80 100644 --- a/quest/m0/nightly/README.md +++ b/quest/m0/nightly/README.md @@ -38,4 +38,4 @@ Public API: none. Wire: none. - [Feature shapes per crate](/quest/m0/nightly/hls-poll-closed-gate.md) - moq-hls `Broadcaster::poll_closed` is gated on `server`, and the gate checks each crate's feature shapes in isolation - [moq-relay tests build without default features](/quest/m0/nightly/relay-tests-features.md) - the integration tests gate their websocket and unix-socket fields on the features that define them - [qmux builds clean for iOS](/quest/m0/nightly/qmux-ios-dead-code.md) - `TcpStats` is gated to the platforms that implement it, so the iOS simulator build has no dead code -- [Probe against Cubic](/quest/m0/nightly/competing-cubic.md) - the `competing_cubic` probe test stops resending a stream after its reset +- [Probing beside Cubic](/quest/m0/nightly/competing-cubic.md) - the `competing_cubic` probe test stays within its deadline budget diff --git a/quest/m0/nightly/competing-cubic.md b/quest/m0/nightly/competing-cubic.md index d1dea8a1a24..ae70c54eceb 100644 --- a/quest/m0/nightly/competing-cubic.md +++ b/quest/m0/nightly/competing-cubic.md @@ -1,17 +1,21 @@ -# [S] Probe against Cubic passes +# [S] Probing beside Cubic meets the deadline budget ## Goal `tests::probe::competing_cubic` in `rs/moq-quic/src/tests/probe.rs`, run by -Nightly through `just rs quic-sim`, passes on `main`, fixed at its cause. +Nightly through `just rs quic-sim`, passes its deadline budget on `main`, +fixed at its cause. ## Plan -[moq-dev/moq#6719](https://github.com/moq-dev/moq/pull/6719) found it failing -the same way on `main` and on its branch: a probe resends a stream after that -stream was reset. A reset stream's data is never retransmitted, so find which -path still queues it (probe padding, a loss-recovery retransmit, or a stale -send queue entry) and stop it there. The other probe tests in the release -suite pass, so the fix must keep them passing. +Over seeds 1 through 8, probing beside a Cubic upload averages 413.6 late +frames versus 385.1 for the baseline, beyond the `LATE` budget. Find why +probing adds delay beside Cubic and fix it in the transport. Keep the +overhead, fairness, and rise budgets and the other probe scenarios passing. +Do not relax the assertions or disable probing to make the scenario pass. + +Run the probe suite with release debug assertions and overflow checks, as +`just rs quic-sim` does. `just rs test --release -p moq-quic --run-ignored all +--no-fail-fast -E 'test(/^tests::probe::/)'` also includes the short gate cases. Public API: none. Wire: none. diff --git a/rs/moq-quic/src/tests/probe.rs b/rs/moq-quic/src/tests/probe.rs index b6c364a7e2e..a0e618c9e0f 100644 --- a/rs/moq-quic/src/tests/probe.rs +++ b/rs/moq-quic/src/tests/probe.rs @@ -472,7 +472,7 @@ fn expire(pair: &mut Pair, ch: ConnectionHandle, groups: &mut [Group], now: Inst let mut stream = pair.client_send(ch, group.id); let offset = stream.offset(); let Ok(false) = stream.acked(offset) else { - group.reset = Some(ended); + // Completion is not a reset: older probe packets may still be in flight. continue; }; stream.reset(VarInt(0)).unwrap();