diff --git a/quest/m0/test-flakes-2/README.md b/quest/m0/test-flakes-2/README.md index 4c5f2386556..b96fb5a043c 100644 --- a/quest/m0/test-flakes-2/README.md +++ b/quest/m0/test-flakes-2/README.md @@ -190,4 +190,3 @@ Public API: none. Wire: none. - [The embedded relay's sockets are closed when run returns](/quest/m0/test-flakes-2/embed-sockets-outlived.md) - `embed::worker_tokio_custom_route_and_quic` stops failing with "the owner's sockets outlived `run`" - [The http:// fingerprint tests survive a slow fetch](/quest/m0/test-flakes-2/fingerprint-host-clock.md) - a fingerprint fetch slower than the 500 ms hedge no longer trips the host-clock guard - [A lite-07 reply FINs instead of resetting when the subscriber FINs mid-write](/quest/m0/test-flakes-2/lite07-reply-fin.md) - `js/net`'s empty-window reply test passes under `--rerun-each 200`, fixed in the publisher -- [moq-tokio's stream-stopped tests survive a loaded host](/quest/m0/test-flakes-2/quic-stream-stopped.md) - `stream_stopped` awaits its stop event instead of a 100 ms wall-clock deadline, and its `#[ignore]` is removed diff --git a/quest/m0/test-flakes-2/quic-stream-stopped.md b/quest/m0/test-flakes-2/quic-stream-stopped.md deleted file mode 100644 index 8a5ac8a3d22..00000000000 --- a/quest/m0/test-flakes-2/quic-stream-stopped.md +++ /dev/null @@ -1,25 +0,0 @@ -# [XS] moq-tokio's stream-stopped tests survive a loaded host - -## Goal - -moq-tokio's `quic::driver::tests::stream_stopped` runs again and passes on a -loaded host. A stopped stream is proven by the stop event it awaits, not by -a wall-clock deadline. - -## Plan - -Planned 2026-11-07 (maintainer, /quest-complete), a follow-up of -[moq-dev/moq#8088](https://github.com/moq-dev/moq/pull/8088), which -quarantined the test with `#[ignore]` and a `sh/gh/test-inventory.allow` -entry naming this epic. - -The test (`rs/moq-tokio/src/quic/driver/tests.rs`) wraps its client in -`timeout(Duration::from_millis(100), ...)`. Under load the dial, write, and -stop round trip takes longer, so it fails even though nothing is wrong. -nextest's 60 s `terminate-after` already bounds a real hang. Drop that -deadline, so the test awaits the stop codes it asserts. -`stream_stopped_2` in the same file bounds `closed()` with the same 100 ms -`timeout`; fix it the same way, unless the deadline is what it asserts. Then -remove the `#[ignore]` and the allowlist entry, and delete this quest. - -Public API: none. Wire: none. diff --git a/rs/moq-tokio/src/quic/driver/tests.rs b/rs/moq-tokio/src/quic/driver/tests.rs index 3c86beb7f0f..cdcf86d9e6b 100755 --- a/rs/moq-tokio/src/quic/driver/tests.rs +++ b/rs/moq-tokio/src/quic/driver/tests.rs @@ -1645,7 +1645,6 @@ async fn multiple_conns_with_zero_length_cids() { } #[tokio::test] -#[ignore = "flaky: its 100ms wall-clock budget runs out under a loaded CI host"] async fn stream_stopped() { let _guard = subscribe(); let factory = EndpointFactory::new(); @@ -1680,7 +1679,7 @@ async fn stream_stopped() { let stopped3 = stopped3.await; assert_eq!(stopped3, Ok(Some(42u32.into()))); }; - let client = timeout(Duration::from_millis(100), client).instrument(error_span!("client")); + let client = client.instrument(error_span!("client")); let server = async move { let conn = server.accept().await.unwrap().accept().unwrap().await.unwrap(); let mut stream = conn.accept_uni().await.unwrap(); @@ -1690,8 +1689,7 @@ async fn stream_stopped() { conn } .instrument(error_span!("server")); - let (client, conn) = tokio::join!(client, server); - client.expect("timeout"); + let ((), conn) = tokio::join!(client, server); drop(conn); } @@ -1705,7 +1703,7 @@ async fn stream_stopped_2() { }) .unwrap(); let send_stream = conn.open_uni(Default::default()).await.unwrap(); - let stopped = timeout(Duration::from_millis(100), send_stream.closed()).instrument(error_span!("stopped")); + let stopped = send_stream.closed().instrument(error_span!("stopped")); tokio::pin!(stopped); // poll the future once so that the waker is registered. tokio::select! { @@ -1718,7 +1716,7 @@ async fn stream_stopped_2() { drop(send_stream); // make sure the stopped future still resolves let res = stopped.await; - assert_eq!(res, Ok(Ok(None))); + assert_eq!(res, Ok(None)); } /// A send stream dropped before `finish` is reset, so the peer can't mistake the truncated data diff --git a/sh/gh/test-inventory.allow b/sh/gh/test-inventory.allow index c6bb300d89e..76fdbb002c6 100644 --- a/sh/gh/test-inventory.allow +++ b/sh/gh/test-inventory.allow @@ -42,4 +42,3 @@ ignore moq-relay::embed::worker_tokio_custom_route_and_quic /quest/m0/test-flake ignore moq-net::test_interop::lite_tracks_interop /quest/m2/cluster-routing/routes/js.md # Quarantined flakes, until the quest that owns the flake fixes it at its cause. -ignore moq-tokio::quic::driver::tests::stream_stopped /quest/m0/test-flakes-2/README.md