Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion quest/m0/nightly/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
20 changes: 12 additions & 8 deletions quest/m0/nightly/competing-cubic.md
Original file line number Diff line number Diff line change
@@ -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.
2 changes: 1 addition & 1 deletion rs/moq-quic/src/tests/probe.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down
Loading