Skip to content

ci(mutants): exclude test-fixture/src/assertions.rs from cargo-mutants#3583

Merged
larseggert merged 3 commits intomozilla:mainfrom
mvanhorn:osc/3367-mutants-skip-test-fixture-assertions
May 4, 2026
Merged

ci(mutants): exclude test-fixture/src/assertions.rs from cargo-mutants#3583
larseggert merged 3 commits intomozilla:mainfrom
mvanhorn:osc/3367-mutants-skip-test-fixture-assertions

Conversation

@mvanhorn
Copy link
Copy Markdown
Contributor

@mvanhorn mvanhorn commented May 4, 2026

Closes #3367.

cargo-mutants reports many "missed" mutations against test-fixture/src/assertions.rs. Those are expected: the file only contains test assertion helpers (assert_long_packet_type, assert_version, etc.) whose panic paths are by definition never exercised by a passing test suite. Every mutation looks like a coverage gap without indicating one.

Per cargo-mutants's documented per-file mechanism, this PR adds .cargo/mutants.toml with an exclude_globs entry covering that file. The Find mutants and Find PR mutants workflows pick the config file up automatically; no workflow change is needed.

If a similar pattern emerges in another assertion-only helper module later, the same exclude_globs list can grow without revisiting the workflows.

Closes mozilla#3367.

cargo-mutants reports many missed mutations on test-fixture/src/assertions.rs,
but those are expected: the file only contains test assertion helpers
(assert_long_packet_type, assert_version, etc.) whose panic paths are by
definition never exercised by a passing test suite. Mutating them yields
'missed' verdicts that do not indicate a real coverage gap.

Per cargo-mutants's documented per-file mechanism
(https://mutants.rs/configuration.html), add .cargo/mutants.toml with
exclude_globs covering this file. The Find mutants and Find PR mutants
workflows pick the config file up automatically; no workflow change is
needed.
@larseggert
Copy link
Copy Markdown
Collaborator

Thank you!

@codecov
Copy link
Copy Markdown

codecov Bot commented May 4, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 94.85%. Comparing base (c032e66) to head (9ef07b6).
⚠️ Report is 3 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #3583      +/-   ##
==========================================
- Coverage   95.00%   94.85%   -0.15%     
==========================================
  Files         109      114       +5     
  Lines       37586    37931     +345     
  Branches    37586    37931     +345     
==========================================
+ Hits        35709    35981     +272     
- Misses       1187     1250      +63     
- Partials      690      700      +10     
Flag Coverage Δ
freebsd 93.96% <ø> (-0.14%) ⬇️
linux 95.00% <ø> (ø)
macos 94.95% <ø> (ø)
windows 95.00% <ø> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

Components Coverage Δ
neqo-common 98.61% <ø> (ø)
neqo-http3 93.92% <ø> (ø)
neqo-qpack 95.14% <ø> (ø)
neqo-transport 95.61% <100.00%> (ø)
neqo-udp 84.90% <ø> (ø)
mtu 86.61% <ø> (ø)

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 4, 2026

Client/server transfer results

Performance differences relative to ffa0aa2.

Transfer of 33554432 bytes over loopback, min. 100 runs. All unit-less numbers are in milliseconds.

Client vs. server (params) Mean ± σ Min Max MiB/s ± σ Δ baseline Δ baseline
neqo-msquic-cubic 150.8 ± 5.3 145.0 177.0 212.3 ± 6.0 💚 -2.1 -1.4%
neqo-quiche-cubic 189.8 ± 2.7 183.9 197.4 168.6 ± 11.9 💚 -0.9 -0.5%

Table above only shows statistically significant changes. See all results below.

All results

Transfer of 33554432 bytes over loopback, min. 100 runs. All unit-less numbers are in milliseconds.

Client vs. server (params) Mean ± σ Min Max MiB/s ± σ Δ baseline Δ baseline
google-google-nopacing 456.0 ± 2.2 450.4 469.7 70.2 ± 14.5
google-neqo-cubic 268.2 ± 3.0 262.9 283.5 119.3 ± 10.7 -0.7 -0.3%
msquic-msquic-nopacing 121.2 ± 14.1 109.8 198.4 264.1 ± 2.3
msquic-neqo-cubic 150.7 ± 21.8 119.1 220.7 212.3 ± 1.5 5.1 3.5%
neqo-google-cubic 767.2 ± 3.1 762.6 779.0 41.7 ± 10.3 0.2 0.0%
neqo-msquic-cubic 150.8 ± 5.3 145.0 177.0 212.3 ± 6.0 💚 -2.1 -1.4%
neqo-neqo-cubic 91.4 ± 2.0 88.0 98.3 350.2 ± 16.0 -0.2 -0.2%
neqo-neqo-cubic-nopacing 90.6 ± 2.7 86.5 98.1 353.2 ± 11.9 0.4 0.5%
neqo-neqo-newreno 91.9 ± 2.4 86.6 97.1 348.3 ± 13.3 -0.2 -0.2%
neqo-neqo-newreno-nopacing 90.6 ± 2.8 85.5 98.4 353.2 ± 11.4 -0.4 -0.4%
neqo-quiche-cubic 189.8 ± 2.7 183.9 197.4 168.6 ± 11.9 💚 -0.9 -0.5%
neqo-s2n-cubic 215.6 ± 1.7 209.7 220.3 148.5 ± 18.8 0.0 0.0%
quiche-neqo-cubic 169.9 ± 2.8 161.8 181.1 188.3 ± 11.4 -0.4 -0.3%
quiche-quiche-nopacing 140.3 ± 3.7 134.0 165.5 228.0 ± 8.6
s2n-neqo-cubic 214.2 ± 2.8 208.7 223.3 149.4 ± 11.4 -0.7 -0.3%
s2n-s2n-nopacing 290.9 ± 23.3 279.3 385.8 110.0 ± 1.4

Download data for profiler.firefox.com or download performance comparison data.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 4, 2026

Benchmark results

No significant performance differences relative to fca0621.

All results
transfer/1-conn/1-100mb-resp (aka. Download): Change within noise threshold.
       time:   [200.09 ms 200.62 ms 201.27 ms]
       thrpt:  [496.84 MiB/s 498.47 MiB/s 499.79 MiB/s]
change:
       time:   [-0.9154% -0.5595% -0.1830] (p = 0.00 < 0.05)
       thrpt:  [+0.1833% +0.5627% +0.9239]
       Change within noise threshold.
Found 4 outliers among 100 measurements (4.00%)
3 (3.00%) high mild
1 (1.00%) high severe
transfer/1-conn/10_000-parallel-1b-resp (aka. RPS): No change in performance detected.
       time:   [284.16 ms 286.23 ms 288.35 ms]
       thrpt:  [34.680 Kelem/s 34.937 Kelem/s 35.191 Kelem/s]
change:
       time:   [-1.2182% -0.1932% +0.8081] (p = 0.71 > 0.05)
       thrpt:  [-0.8016% +0.1935% +1.2332]
       No change in performance detected.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mild
transfer/1-conn/1-1b-resp (aka. HPS): No change in performance detected.
       time:   [38.728 ms 38.873 ms 39.038 ms]
       thrpt:  [25.616   B/s 25.725   B/s 25.821   B/s]
change:
       time:   [-0.6052% -0.0575% +0.4994] (p = 0.84 > 0.05)
       thrpt:  [-0.4969% +0.0575% +0.6088]
       No change in performance detected.
Found 6 outliers among 100 measurements (6.00%)
6 (6.00%) high severe
transfer/1-conn/1-100mb-req (aka. Upload): Change within noise threshold.
       time:   [204.06 ms 204.40 ms 204.76 ms]
       thrpt:  [488.37 MiB/s 489.23 MiB/s 490.06 MiB/s]
change:
       time:   [+0.2134% +0.4468% +0.6890] (p = 0.00 < 0.05)
       thrpt:  [-0.6843% -0.4449% -0.2129]
       Change within noise threshold.
Found 5 outliers among 100 measurements (5.00%)
2 (2.00%) low mild
3 (3.00%) high mild
streams/walltime/1-streams/each-1000-bytes: No change in performance detected.
       time:   [585.43 µs 587.47 µs 589.81 µs]
       change: [-0.2631% +0.2522% +0.7653] (p = 0.35 > 0.05)
       No change in performance detected.
Found 8 outliers among 100 measurements (8.00%)
8 (8.00%) high severe
streams/walltime/1000-streams/each-1-bytes: Change within noise threshold.
       time:   [12.292 ms 12.311 ms 12.330 ms]
       change: [+0.2806% +0.5008% +0.7243] (p = 0.00 < 0.05)
       Change within noise threshold.
streams/walltime/1000-streams/each-1000-bytes: Change within noise threshold.
       time:   [44.437 ms 44.532 ms 44.671 ms]
       change: [+0.3972% +0.6474% +0.9855] (p = 0.00 < 0.05)
       Change within noise threshold.
Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) high mild
1 (1.00%) high severe
transfer/walltime/pacing-false/varying-seeds: No change in performance detected.
       time:   [23.224 ms 23.246 ms 23.268 ms]
       change: [-0.1570% +0.0733% +0.2487] (p = 0.52 > 0.05)
       No change in performance detected.
Found 2 outliers among 100 measurements (2.00%)
2 (2.00%) high mild
transfer/walltime/pacing-true/varying-seeds: Change within noise threshold.
       time:   [23.784 ms 23.809 ms 23.837 ms]
       change: [+1.0842% +1.2535% +1.4220] (p = 0.00 < 0.05)
       Change within noise threshold.
Found 4 outliers among 100 measurements (4.00%)
3 (3.00%) high mild
1 (1.00%) high severe
transfer/walltime/pacing-false/same-seed: Change within noise threshold.
       time:   [23.472 ms 23.500 ms 23.536 ms]
       change: [+0.1589% +0.3325% +0.5360] (p = 0.00 < 0.05)
       Change within noise threshold.
Found 6 outliers among 100 measurements (6.00%)
2 (2.00%) low mild
1 (1.00%) high mild
3 (3.00%) high severe
transfer/walltime/pacing-true/same-seed: Change within noise threshold.
       time:   [24.041 ms 24.064 ms 24.092 ms]
       change: [+1.8803% +2.0901% +2.2613] (p = 0.00 < 0.05)
       Change within noise threshold.
Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) low mild
1 (1.00%) high severe

Download data for profiler.firefox.com or download performance comparison data.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 4, 2026

Failed Interop Tests

QUIC Interop Runner, client vs. server, differences relative to main at fca0621.

neqo-pr as clientneqo-pr as server
neqo-pr vs. go-x-net: run cancelled after 20 min
neqo-pr vs. haproxy: run cancelled after 20 min
neqo-pr vs. kwik: run cancelled after 20 min
neqo-pr vs. linuxquic: run cancelled after 20 min
neqo-pr vs. lsquic: L1 C1
neqo-pr vs. msquic: A L1 C1
neqo-pr vs. mvfst: run cancelled after 20 min
neqo-pr vs. neqo: A
neqo-pr vs. nginx: BP BA
neqo-pr vs. ngtcp2: baseline result missing
neqo-pr vs. picoquic: run cancelled after 20 min
neqo-pr vs. quic-go: A
neqo-pr vs. quiche: BP BA
neqo-pr vs. quinn: run cancelled after 20 min
neqo-pr vs. s2n-quic: CM
neqo-pr vs. tquic: S BP BA
neqo-pr vs. xquic: run cancelled after 20 min
aioquic vs. neqo-pr: baseline result missing
chrome vs. neqo-pr: baseline result missing
go-x-net vs. neqo-pr: baseline result missing
kwik vs. neqo-pr: BP BA CM
linuxquic vs. neqo-pr: baseline result missing
lsquic vs. neqo-pr: baseline result missing
msquic vs. neqo-pr: run cancelled after 20 min
mvfst vs. neqo-pr: baseline result missing
neqo vs. neqo-pr: run cancelled after 20 min
ngtcp2 vs. neqo-pr: run cancelled after 20 min
openssl vs. neqo-pr: LR M A CM
quic-go vs. neqo-pr: CM
quic-zig vs. neqo-pr: 🚀C2 ⚠️DC
quiche vs. neqo-pr: baseline result missing
quinn vs. neqo-pr: L1 V2 CM
s2n-quic vs. neqo-pr: CM
tquic vs. neqo-pr: run cancelled after 20 min
xquic vs. neqo-pr: run cancelled after 20 min
All results

Succeeded Interop Tests

QUIC Interop Runner, client vs. server

neqo-pr as client

neqo-pr as server

Unsupported Interop Tests

QUIC Interop Runner, client vs. server

neqo-pr as client

neqo-pr as server

@larseggert larseggert enabled auto-merge May 4, 2026 08:13
@larseggert larseggert disabled auto-merge May 4, 2026 08:14
@larseggert larseggert merged commit 602dd4e into mozilla:main May 4, 2026
186 of 187 checks passed
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.

Disable cargo mutants on a per-file basis?

2 participants