Enhance congestion control testing/evaluation
Before we start reviewing/merging PRs that change behavior, I'd like to discuss better (CI) testing for CC, and getting that merged first. This isn't (only) about making sure we have good LoC coverage, but making sure we have test cases that validate correct behavior in CC edge cases. We probably need quite a few of these tests, so implementing them all in straight up Rust is going to be very wordy. Wondering if we can extend the simulator so one can feed it a test case with a script (think something like packetdrill) and have it execute that.
From @larseggert https://github.com/mozilla/neqo/issues/2967#issuecomment-3275675183
Having more confidence in our congestion control CI and a good and reproducible framework for tests/benches will also be useful for the upcoming Slow Start work #2858. Not having it would probably block us from merging there, too.
Some ideas:
- Lars mentioned extending our simulator with some sort of scripting language for testcases
- maybe there is a way to leverage the benchmarking framework https://bugzilla.mozilla.org/show_bug.cgi?id=1895345, likely not useful for neqo CI but maybe for analyzing traffic
- e.g. have it output qlogs to visualize congestion control on actual firefox traffic in qviz
- write more benches/tests, but as has already been said that's very wordy and it might be worth it to streamline it a bit
I haven't worked with/looked into the simulator very deeply, so I'm not sure what else is possible right now.