-
Notifications
You must be signed in to change notification settings - Fork 148
chore: improve Datagram&DatagramBatch coverage
#3249
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
base: main
Are you sure you want to change the base?
chore: improve Datagram&DatagramBatch coverage
#3249
Conversation
Add tests to eliminate missed mutants in `neqo-common/src/datagram.rs`: - `datagram_len_and_accessors`: test `len`, `is_empty`, `as_ref`, `as_mut`, `set_tos` - `batch_data_and_try_from`: test `data()` and successful `TryFrom` conversion - `batch_try_from_multiple_fails`: test `TryFrom` failure for multi-datagram batch
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #3249 +/- ##
==========================================
- Coverage 93.50% 93.44% -0.06%
==========================================
Files 125 125
Lines 36637 36661 +24
Branches 36637 36661 +24
==========================================
+ Hits 34256 34258 +2
- Misses 1529 1552 +23
+ Partials 852 851 -1
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR adds comprehensive test coverage for the Datagram and DatagramBatch types in neqo-common/src/datagram.rs to eliminate missed mutants in mutation testing. The tests focus on verifying previously untested methods and edge cases.
Key changes:
- Added
datagram_len_and_accessorstest to coverlen(),is_empty(),as_ref(),as_mut(), andset_tos()methods - Added
batch_data_and_try_fromtest to verifydata()method and successfulTryFrom<DatagramBatch>conversion - Added
batch_try_from_multiple_failstest to verifyTryFromfails appropriately for multi-datagram batches
Failed Interop TestsQUIC Interop Runner, client vs. server, differences relative to
All resultsSucceeded Interop TestsQUIC Interop Runner, client vs. server neqo-pr as client
neqo-pr as server
Unsupported Interop TestsQUIC Interop Runner, client vs. server neqo-pr as client
neqo-pr as server
|
Client/server transfer resultsPerformance differences relative to ab7ae57. Transfer of 33554432 bytes over loopback, min. 100 runs. All unit-less numbers are in milliseconds.
Table above only shows statistically significant changes. See all results below. All resultsTransfer of 33554432 bytes over loopback, min. 100 runs. All unit-less numbers are in milliseconds.
Download data for |
Benchmark resultsSignificant performance differences relative to ab7ae57. 1-conn/1-100mb-req/mtu-1504 (aka. Upload)/client: 💚 Performance has improved by -2.2017%. time: [210.52 ms 210.85 ms 211.21 ms]
thrpt: [473.47 MiB/s 474.27 MiB/s 475.02 MiB/s]
change:
time: [-2.4188% -2.2017% -1.9875] (p = 0.00 < 0.05)
thrpt: [+2.0278% +2.2513% +2.4788]
Performance has improved.
Found 3 outliers among 100 measurements (3.00%)
2 (2.00%) high mild
1 (1.00%) high severeAll results1-conn/1-100mb-resp/mtu-1504 (aka. Download)/client: Change within noise threshold. time: [206.03 ms 206.41 ms 206.78 ms]
thrpt: [483.60 MiB/s 484.48 MiB/s 485.36 MiB/s]
change:
time: [-1.3859% -1.0507% -0.7570] (p = 0.00 < 0.05)
thrpt: [+0.7627% +1.0618% +1.4054]
Change within noise threshold.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mild1-conn/10_000-parallel-1b-resp/mtu-1504 (aka. RPS)/client: No change in performance detected. time: [283.88 ms 285.65 ms 287.45 ms]
thrpt: [34.789 Kelem/s 35.008 Kelem/s 35.226 Kelem/s]
change:
time: [-0.7725% +0.2151% +1.1689] (p = 0.66 > 0.05)
thrpt: [-1.1554% -0.2146% +0.7785]
No change in performance detected.
Found 2 outliers among 100 measurements (2.00%)
2 (2.00%) high mild1-conn/1-1b-resp/mtu-1504 (aka. HPS)/client: No change in performance detected. time: [38.686 ms 38.844 ms 39.022 ms]
thrpt: [25.626 B/s 25.744 B/s 25.849 B/s]
change:
time: [-0.5779% +0.0461% +0.6431] (p = 0.89 > 0.05)
thrpt: [-0.6390% -0.0461% +0.5813]
No change in performance detected.
Found 8 outliers among 100 measurements (8.00%)
2 (2.00%) high mild
6 (6.00%) high severe1-conn/1-100mb-req/mtu-1504 (aka. Upload)/client: 💚 Performance has improved by -2.2017%. time: [210.52 ms 210.85 ms 211.21 ms]
thrpt: [473.47 MiB/s 474.27 MiB/s 475.02 MiB/s]
change:
time: [-2.4188% -2.2017% -1.9875] (p = 0.00 < 0.05)
thrpt: [+2.0278% +2.2513% +2.4788]
Performance has improved.
Found 3 outliers among 100 measurements (3.00%)
2 (2.00%) high mild
1 (1.00%) high severedecode 4096 bytes, mask ff: No change in performance detected. time: [4.5102 µs 4.5185 µs 4.5279 µs]
change: [-0.5126% -0.1432% +0.2388] (p = 0.46 > 0.05)
No change in performance detected.
Found 8 outliers among 100 measurements (8.00%)
4 (4.00%) high mild
4 (4.00%) high severedecode 1048576 bytes, mask ff: No change in performance detected. time: [1.1596 ms 1.1622 ms 1.1657 ms]
change: [-0.9515% -0.1055% +0.7437] (p = 0.82 > 0.05)
No change in performance detected.
Found 11 outliers among 100 measurements (11.00%)
11 (11.00%) high severedecode 4096 bytes, mask 7f: No change in performance detected. time: [5.7891 µs 5.7977 µs 5.8064 µs]
change: [-0.4167% -0.0852% +0.2208] (p = 0.62 > 0.05)
No change in performance detected.
Found 4 outliers among 100 measurements (4.00%)
2 (2.00%) high mild
2 (2.00%) high severedecode 1048576 bytes, mask 7f: Change within noise threshold. time: [1.4770 ms 1.4794 ms 1.4818 ms]
change: [-1.2305% -0.5859% -0.1376] (p = 0.02 < 0.05)
Change within noise threshold.decode 4096 bytes, mask 3f: No change in performance detected. time: [5.5433 µs 5.5513 µs 5.5591 µs]
change: [-0.3119% +0.0462% +0.4080] (p = 0.82 > 0.05)
No change in performance detected.
Found 3 outliers among 100 measurements (3.00%)
1 (1.00%) high mild
2 (2.00%) high severedecode 1048576 bytes, mask 3f: No change in performance detected. time: [1.4156 ms 1.4179 ms 1.4204 ms]
change: [-0.2925% -0.0445% +0.2146] (p = 0.73 > 0.05)
No change in performance detected.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mild1-streams/each-1000-bytes/wallclock-time: Change within noise threshold. time: [585.60 µs 588.08 µs 590.84 µs]
change: [+0.4959% +0.9525% +1.4683] (p = 0.00 < 0.05)
Change within noise threshold.
Found 11 outliers among 100 measurements (11.00%)
11 (11.00%) high severe1-streams/each-1000-bytes/simulated-time: No change in performance detected. time: [118.92 ms 119.12 ms 119.33 ms]
thrpt: [8.1838 KiB/s 8.1979 KiB/s 8.2118 KiB/s]
change:
time: [-0.2259% +0.0605% +0.3442] (p = 0.67 > 0.05)
thrpt: [-0.3430% -0.0604% +0.2264]
No change in performance detected.1000-streams/each-1-bytes/wallclock-time: No change in performance detected. time: [12.334 ms 12.381 ms 12.436 ms]
change: [-0.1763% +0.4475% +1.0302] (p = 0.15 > 0.05)
No change in performance detected.
Found 3 outliers among 100 measurements (3.00%)
2 (2.00%) high mild
1 (1.00%) high severe1000-streams/each-1-bytes/simulated-time: No change in performance detected. time: [2.3273 s 2.3311 s 2.3350 s]
thrpt: [428.27 B/s 428.98 B/s 429.68 B/s]
change:
time: [-0.2464% -0.0177% +0.1943] (p = 0.88 > 0.05)
thrpt: [-0.1939% +0.0177% +0.2470]
No change in performance detected.1000-streams/each-1000-bytes/wallclock-time: No change in performance detected. time: [50.384 ms 50.600 ms 50.923 ms]
change: [-0.8549% -0.2589% +0.5574] (p = 0.47 > 0.05)
No change in performance detected.
Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) high mild
1 (1.00%) high severe1000-streams/each-1000-bytes/simulated-time: No change in performance detected. time: [16.089 s 16.346 s 16.605 s]
thrpt: [58.810 KiB/s 59.742 KiB/s 60.698 KiB/s]
change:
time: [-1.7851% +0.4913% +2.7248] (p = 0.67 > 0.05)
thrpt: [-2.6526% -0.4889% +1.8175]
No change in performance detected.coalesce_acked_from_zero 1+1 entries: No change in performance detected. time: [89.203 ns 89.511 ns 89.823 ns]
change: [-0.5293% -0.0087% +0.5311] (p = 0.98 > 0.05)
No change in performance detected.
Found 10 outliers among 100 measurements (10.00%)
7 (7.00%) high mild
3 (3.00%) high severecoalesce_acked_from_zero 3+1 entries: No change in performance detected. time: [105.92 ns 106.31 ns 106.72 ns]
change: [-0.0610% +0.5193% +1.2503] (p = 0.11 > 0.05)
No change in performance detected.
Found 14 outliers among 100 measurements (14.00%)
3 (3.00%) high mild
11 (11.00%) high severecoalesce_acked_from_zero 10+1 entries: No change in performance detected. time: [105.30 ns 105.72 ns 106.21 ns]
change: [-0.4880% -0.0364% +0.4345] (p = 0.88 > 0.05)
No change in performance detected.
Found 18 outliers among 100 measurements (18.00%)
4 (4.00%) low severe
2 (2.00%) low mild
3 (3.00%) high mild
9 (9.00%) high severecoalesce_acked_from_zero 1000+1 entries: No change in performance detected. time: [90.128 ns 90.233 ns 90.353 ns]
change: [-0.7703% -0.2198% +0.3335] (p = 0.47 > 0.05)
No change in performance detected.
Found 21 outliers among 100 measurements (21.00%)
11 (11.00%) high mild
10 (10.00%) high severeRxStreamOrderer::inbound_frame(): Change within noise threshold. time: [109.00 ms 109.12 ms 109.26 ms]
change: [+0.5682% +0.6914% +0.8339] (p = 0.00 < 0.05)
Change within noise threshold.
Found 38 outliers among 100 measurements (38.00%)
18 (18.00%) low severe
3 (3.00%) low mild
5 (5.00%) high mild
12 (12.00%) high severesent::Packets::take_ranges: No change in performance detected. time: [4.4756 µs 4.6169 µs 4.7681 µs]
change: [-0.7087% +2.4476% +6.1743] (p = 0.18 > 0.05)
No change in performance detected.
Found 6 outliers among 100 measurements (6.00%)
6 (6.00%) high mildtransfer/pacing-false/varying-seeds/wallclock-time/run: Change within noise threshold. time: [23.920 ms 23.953 ms 23.999 ms]
change: [+0.4934% +0.7272% +0.9668] (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 severetransfer/pacing-false/varying-seeds/simulated-time/run: No change in performance detected. time: [23.941 s 23.941 s 23.941 s]
thrpt: [171.09 KiB/s 171.09 KiB/s 171.09 KiB/s]
change:
time: [+0.0000% +0.0000% +0.0000] (p = NaN > 0.05)
thrpt: [+0.0000% +0.0000% +0.0000]
No change in performance detected.transfer/pacing-true/varying-seeds/wallclock-time/run: Change within noise threshold. time: [24.315 ms 24.332 ms 24.349 ms]
change: [+0.5651% +0.7872% +0.9505] (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 mildtransfer/pacing-true/varying-seeds/simulated-time/run: No change in performance detected. time: [23.676 s 23.676 s 23.676 s]
thrpt: [173.01 KiB/s 173.01 KiB/s 173.01 KiB/s]
change:
time: [+0.0000% +0.0000% +0.0000] (p = NaN > 0.05)
thrpt: [+0.0000% +0.0000% +0.0000]
No change in performance detected.transfer/pacing-false/same-seed/wallclock-time/run: Change within noise threshold. time: [23.976 ms 23.993 ms 24.011 ms]
change: [+1.5808% +1.6905% +1.7989] (p = 0.00 < 0.05)
Change within noise threshold.
Found 5 outliers among 100 measurements (5.00%)
5 (5.00%) high mildtransfer/pacing-false/same-seed/simulated-time/run: No change in performance detected. time: [23.941 s 23.941 s 23.941 s]
thrpt: [171.09 KiB/s 171.09 KiB/s 171.09 KiB/s]
change:
time: [+0.0000% +0.0000% +0.0000] (p = NaN > 0.05)
thrpt: [+0.0000% +0.0000% +0.0000]
No change in performance detected.transfer/pacing-true/same-seed/wallclock-time/run: Change within noise threshold. time: [24.193 ms 24.216 ms 24.244 ms]
change: [+1.1905% +1.3083% +1.4336] (p = 0.00 < 0.05)
Change within noise threshold.
Found 4 outliers among 100 measurements (4.00%)
1 (1.00%) low mild
2 (2.00%) high mild
1 (1.00%) high severetransfer/pacing-true/same-seed/simulated-time/run: No change in performance detected. time: [23.676 s 23.676 s 23.676 s]
thrpt: [173.01 KiB/s 173.01 KiB/s 173.01 KiB/s]
change:
time: [+0.0000% +0.0000% +0.0000] (p = NaN > 0.05)
thrpt: [+0.0000% +0.0000% +0.0000]
No change in performance detected.Download data for |
Add tests to eliminate missed mutants in
neqo-common/src/datagram.rs:datagram_len_and_accessors: testlen,is_empty,as_ref,as_mut,set_tosbatch_data_and_try_from: testdata()and successfulTryFromconversionbatch_try_from_multiple_fails: testTryFromfailure for multi-datagram batch