Skip to content
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

tests(udp): use blocking socket to receive empty datagram #2339

Merged
merged 1 commit into from
Jan 10, 2025

Conversation

mxinden
Copy link
Collaborator

@mxinden mxinden commented Jan 10, 2025

The handle_empty_datagram unit tests sends and receives an empty datagram. To prevent a race condition where the receiver tries to receive the datagram before it is available (error WouldBlock), use a blocking socket via socket() instead.


See e.g. CI failure in https://github.com/mozilla/neqo/actions/runs/12704862858/job/35414911552?pr=2133#step:5:3588.

The `handle_empty_datagram` unit tests sends and receives an empty datagram. To
prevent a race condition where the receiver tries to receive the datagram before
it is available (error `WouldBlock`), use a blocking socket via `socket()`
instead.
@mxinden mxinden enabled auto-merge January 10, 2025 08:55
Copy link

codecov bot commented Jan 10, 2025

Codecov Report

Attention: Patch coverage is 0% with 1 line in your changes missing coverage. Please review.

Project coverage is 93.32%. Comparing base (e5770ce) to head (5d57b39).
Report is 2 commits behind head on main.

Files with missing lines Patch % Lines
neqo-udp/src/lib.rs 0.00% 0 Missing and 1 partial ⚠️
Additional details and impacted files
@@           Coverage Diff           @@
##             main    #2339   +/-   ##
=======================================
  Coverage   93.32%   93.32%           
=======================================
  Files         114      114           
  Lines       36889    36889           
  Branches    36889    36889           
=======================================
+ Hits        34427    34428    +1     
  Misses       1681     1681           
+ Partials      781      780    -1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

Copy link

Failed Interop Tests

QUIC Interop Runner, client vs. server, differences relative to e5770ce.

neqo-latest as client

neqo-latest as server

All results

Succeeded Interop Tests

QUIC Interop Runner, client vs. server

neqo-latest as client

neqo-latest as server

Unsupported Interop Tests

QUIC Interop Runner, client vs. server

neqo-latest as client

neqo-latest as server

@larseggert larseggert disabled auto-merge January 10, 2025 09:13
@larseggert larseggert merged commit ac2985e into mozilla:main Jan 10, 2025
60 of 63 checks passed
Copy link

Benchmark results

Performance differences relative to 6013bde.

decode 4096 bytes, mask ff: No change in performance detected.
       time:   [11.168 µs 11.206 µs 11.251 µs]
       change: [-0.0074% +0.4175% +0.9120%] (p = 0.10 > 0.05)

Found 17 outliers among 100 measurements (17.00%)
5 (5.00%) low mild
2 (2.00%) high mild
10 (10.00%) high severe

decode 1048576 bytes, mask ff: No change in performance detected.
       time:   [3.0160 ms 3.0251 ms 3.0357 ms]
       change: [-0.6180% -0.1130% +0.3638%] (p = 0.66 > 0.05)

Found 10 outliers among 100 measurements (10.00%)
1 (1.00%) high mild
9 (9.00%) high severe

decode 4096 bytes, mask 7f: No change in performance detected.
       time:   [19.527 µs 19.646 µs 19.837 µs]
       change: [-0.8729% -0.1264% +0.5462%] (p = 0.75 > 0.05)

Found 19 outliers among 100 measurements (19.00%)
3 (3.00%) low severe
2 (2.00%) low mild
14 (14.00%) high severe

decode 1048576 bytes, mask 7f: No change in performance detected.
       time:   [5.1609 ms 5.1723 ms 5.1852 ms]
       change: [-0.4299% -0.0744% +0.2780%] (p = 0.67 > 0.05)

Found 14 outliers among 100 measurements (14.00%)
14 (14.00%) high severe

decode 4096 bytes, mask 3f: No change in performance detected.
       time:   [5.5271 µs 5.5379 µs 5.5593 µs]
       change: [-0.9999% +0.1437% +1.6167%] (p = 0.89 > 0.05)

Found 10 outliers among 100 measurements (10.00%)
5 (5.00%) low mild
2 (2.00%) high mild
3 (3.00%) high severe

decode 1048576 bytes, mask 3f: Change within noise threshold.
       time:   [1.7582 ms 1.7583 ms 1.7585 ms]
       change: [-0.7750% -0.3922% -0.0807%] (p = 0.01 < 0.05)

Found 4 outliers among 100 measurements (4.00%)
3 (3.00%) high mild
1 (1.00%) high severe

coalesce_acked_from_zero 1+1 entries: No change in performance detected.
       time:   [98.815 ns 99.137 ns 99.472 ns]
       change: [-0.3197% +0.1163% +0.5545%] (p = 0.60 > 0.05)

Found 12 outliers among 100 measurements (12.00%)
10 (10.00%) high mild
2 (2.00%) high severe

coalesce_acked_from_zero 3+1 entries: No change in performance detected.
       time:   [116.60 ns 117.02 ns 117.52 ns]
       change: [-0.9328% -0.0533% +0.6303%] (p = 0.91 > 0.05)

Found 19 outliers among 100 measurements (19.00%)
1 (1.00%) low severe
1 (1.00%) low mild
3 (3.00%) high mild
14 (14.00%) high severe

coalesce_acked_from_zero 10+1 entries: No change in performance detected.
       time:   [116.22 ns 116.67 ns 117.21 ns]
       change: [-0.6875% -0.0468% +0.4939%] (p = 0.88 > 0.05)

Found 17 outliers among 100 measurements (17.00%)
6 (6.00%) low severe
2 (2.00%) low mild
2 (2.00%) high mild
7 (7.00%) high severe

coalesce_acked_from_zero 1000+1 entries: No change in performance detected.
       time:   [97.502 ns 97.637 ns 97.792 ns]
       change: [-1.1294% +0.2169% +1.5984%] (p = 0.77 > 0.05)

Found 11 outliers among 100 measurements (11.00%)
4 (4.00%) high mild
7 (7.00%) high severe

RxStreamOrderer::inbound_frame(): No change in performance detected.
       time:   [111.05 ms 111.08 ms 111.10 ms]
       change: [-0.2144% -0.0206% +0.0960%] (p = 0.85 > 0.05)

Found 5 outliers among 100 measurements (5.00%)
5 (5.00%) high mild

SentPackets::take_ranges: No change in performance detected.
       time:   [5.5168 µs 5.6995 µs 5.8928 µs]
       change: [-0.8025% +1.7159% +4.2919%] (p = 0.20 > 0.05)

Found 10 outliers among 100 measurements (10.00%)
7 (7.00%) high mild
3 (3.00%) high severe

transfer/pacing-false/varying-seeds: 💔 Performance has regressed.
       time:   [45.166 ms 45.249 ms 45.338 ms]
       change: [+8.1457% +8.4559% +8.7621%] (p = 0.00 < 0.05)

Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) high mild
1 (1.00%) high severe

transfer/pacing-true/varying-seeds: 💔 Performance has regressed.
       time:   [45.395 ms 45.471 ms 45.549 ms]
       change: [+7.9535% +8.2161% +8.4549%] (p = 0.00 < 0.05)

Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mild

transfer/pacing-false/same-seed: 💔 Performance has regressed.
       time:   [44.777 ms 44.854 ms 44.940 ms]
       change: [+6.9865% +7.2606% +7.5470%] (p = 0.00 < 0.05)

Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high severe

transfer/pacing-true/same-seed: 💔 Performance has regressed.
       time:   [45.316 ms 45.387 ms 45.459 ms]
       change: [+7.5369% +7.8035% +8.0491%] (p = 0.00 < 0.05)

Found 3 outliers among 100 measurements (3.00%)
1 (1.00%) low mild
2 (2.00%) high mild

1-conn/1-100mb-resp/mtu-1504 (aka. Download)/client: No change in performance detected.
       time:   [873.72 ms 882.89 ms 892.36 ms]
       thrpt:  [112.06 MiB/s 113.26 MiB/s 114.45 MiB/s]
change:
       time:   [-1.9834% -0.4514% +1.0109%] (p = 0.56 > 0.05)
       thrpt:  [-1.0008% +0.4535% +2.0235%]

Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mild

1-conn/10_000-parallel-1b-resp/mtu-1504 (aka. RPS)/client: No change in performance detected.
       time:   [299.86 ms 301.82 ms 303.86 ms]
       thrpt:  [32.910 Kelem/s 33.132 Kelem/s 33.349 Kelem/s]
change:
       time:   [-1.0847% -0.1828% +0.7623%] (p = 0.71 > 0.05)
       thrpt:  [-0.7565% +0.1831% +1.0966%]

Found 3 outliers among 100 measurements (3.00%)
3 (3.00%) high mild

1-conn/1-1b-resp/mtu-1504 (aka. HPS)/client: No change in performance detected.
       time:   [34.156 ms 34.350 ms 34.564 ms]
       thrpt:  [28.932  elem/s 29.112  elem/s 29.277  elem/s]
change:
       time:   [-0.6790% +0.1307% +0.9827%] (p = 0.76 > 0.05)
       thrpt:  [-0.9732% -0.1305% +0.6837%]

Found 13 outliers among 100 measurements (13.00%)
6 (6.00%) low mild
7 (7.00%) high severe

1-conn/1-100mb-resp/mtu-1504 (aka. Upload)/client: No change in performance detected.
       time:   [1.6450 s 1.6653 s 1.6860 s]
       thrpt:  [59.313 MiB/s 60.048 MiB/s 60.791 MiB/s]
change:
       time:   [-1.3478% +0.3654% +1.9977%] (p = 0.67 > 0.05)
       thrpt:  [-1.9586% -0.3641% +1.3662%]

Client/server transfer results

Transfer of 33554432 bytes over loopback.

Client Server CC Pacing MTU Mean [ms] Min [ms] Max [ms]
gquiche gquiche 1504 524.5 ± 38.1 499.4 627.1
neqo gquiche reno on 1504 809.0 ± 87.4 735.9 960.4
neqo gquiche reno 1504 785.8 ± 102.2 727.7 1065.2
neqo gquiche cubic on 1504 783.1 ± 43.0 734.1 875.7
neqo gquiche cubic 1504 779.3 ± 72.9 727.1 929.4
msquic msquic 1504 183.7 ± 97.3 95.4 406.3
neqo msquic reno on 1504 237.5 ± 65.4 203.7 446.6
neqo msquic reno 1504 212.8 ± 10.3 200.1 228.7
neqo msquic cubic on 1504 239.7 ± 68.3 203.9 462.2
neqo msquic cubic 1504 286.3 ± 80.7 209.9 399.4
gquiche neqo reno on 1504 681.4 ± 85.6 552.3 807.9
gquiche neqo reno 1504 702.0 ± 136.2 542.7 995.8
gquiche neqo cubic on 1504 678.1 ± 85.9 562.4 803.3
gquiche neqo cubic 1504 720.5 ± 73.8 566.2 808.5
msquic neqo reno on 1504 553.9 ± 100.5 476.4 722.6
msquic neqo reno 1504 493.3 ± 8.3 482.5 506.2
msquic neqo cubic on 1504 511.6 ± 45.1 470.4 614.5
msquic neqo cubic 1504 515.9 ± 52.3 474.5 622.5
neqo neqo reno on 1504 558.9 ± 19.8 518.0 579.2
neqo neqo reno 1504 540.8 ± 53.2 475.5 622.6
neqo neqo cubic on 1504 556.0 ± 76.3 465.7 732.1
neqo neqo cubic 1504 554.7 ± 60.8 476.1 671.7

⬇️ Download logs

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.

2 participants