-
Notifications
You must be signed in to change notification settings - Fork 123
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix(udp): test blocking Socket #2002
Conversation
`quinn_udp::UdpSocketState` sets the the OS socket to non-blocking in order to be used by poll based runtimes like `tokio`. For basic unit tests, this might result in race conditions, e.g. where one socket tries to receive before the other is done sending, thus returning `WouldBlock`. This commit sets the OS sockets back to blocking on `neqo-udp` unit tests.
Failed Interop TestsQUIC Interop Runner, client vs. server neqo-latest as client
neqo-latest as server
All resultsSucceeded Interop TestsQUIC Interop Runner, client vs. server neqo-latest as client
neqo-latest as server
Unsupported Interop TestsQUIC Interop Runner, client vs. server neqo-latest as client
neqo-latest as server
|
Windows CI failure would be fixed by #2003. |
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #2002 +/- ##
==========================================
- Coverage 94.99% 94.99% -0.01%
==========================================
Files 112 112
Lines 36363 36371 +8
==========================================
+ Hits 34544 34550 +6
- Misses 1819 1821 +2 ☔ View full report in Codecov by Sentry. |
Benchmark resultsPerformance differences relative to 2e419cc. coalesce_acked_from_zero 1+1 entries: Change within noise threshold.time: [192.35 ns 192.75 ns 193.21 ns] change: [+0.1798% +0.5919% +0.9537%] (p = 0.00 < 0.05) coalesce_acked_from_zero 3+1 entries: No change in performance detected.time: [233.21 ns 233.74 ns 234.35 ns] change: [-0.4819% -0.1446% +0.1835%] (p = 0.41 > 0.05) coalesce_acked_from_zero 10+1 entries: No change in performance detected.time: [232.92 ns 233.67 ns 234.60 ns] change: [-0.8072% -0.3737% +0.0785%] (p = 0.11 > 0.05) coalesce_acked_from_zero 1000+1 entries: No change in performance detected.time: [216.86 ns 217.01 ns 217.21 ns] change: [-0.4146% +0.3555% +1.2498%] (p = 0.39 > 0.05) RxStreamOrderer::inbound_frame(): Change within noise threshold.time: [118.91 ms 119.09 ms 119.33 ms] change: [-0.8204% -0.5552% -0.2929%] (p = 0.00 < 0.05) transfer/Run multiple transfers with varying seeds: No change in performance detected.time: [53.370 ms 56.503 ms 59.631 ms] thrpt: [67.079 MiB/s 70.793 MiB/s 74.948 MiB/s] change: time: [-3.4035% +4.5762% +12.685%] (p = 0.27 > 0.05) thrpt: [-11.257% -4.3759% +3.5234%] transfer/Run multiple transfers with the same seed: Change within noise threshold.time: [61.245 ms 67.990 ms 74.764 ms] thrpt: [53.502 MiB/s 58.832 MiB/s 65.312 MiB/s] change: time: [-22.432% -12.016% -0.0808%] (p = 0.05 < 0.05) thrpt: [+0.0808% +13.657% +28.919%] 1-conn/1-100mb-resp (aka. Download)/client: No change in performance detected.time: [292.20 ms 295.59 ms 299.12 ms] thrpt: [334.31 MiB/s 338.31 MiB/s 342.24 MiB/s] change: time: [-0.2633% +1.4923% +3.2789%] (p = 0.13 > 0.05) thrpt: [-3.1748% -1.4704% +0.2640%] 1-conn/10_000-parallel-1b-resp (aka. RPS)/client: No change in performance detected.time: [415.77 ms 419.22 ms 422.63 ms] thrpt: [23.661 Kelem/s 23.854 Kelem/s 24.052 Kelem/s] change: time: [-0.1296% +1.1014% +2.2117%] (p = 0.07 > 0.05) thrpt: [-2.1638% -1.0894% +0.1298%] 1-conn/1-1b-resp (aka. HPS)/client: No change in performance detected.time: [68.103 ms 68.461 ms 68.867 ms] thrpt: [14.521 elem/s 14.607 elem/s 14.684 elem/s] change: time: [-0.4964% +0.2673% +1.0211%] (p = 0.51 > 0.05) thrpt: [-1.0108% -0.2666% +0.4988%] Client/server transfer resultsTransfer of 33554432 bytes over loopback.
|
quinn_udp::UdpSocketState
sets the the OS socket to non-blocking in order to be used by poll based runtimes liketokio
.For basic unit tests, this might result in race conditions, e.g. where one socket tries to receive before the other is done sending, thus returning
WouldBlock
.This commit sets the OS sockets back to blocking on
neqo-udp
unit tests.Fixes #2001.
Taken from
quinn-udp
.