test(quic): SendAsync holds no thread and reports every send once
ShouldSendWithoutBlockingQUIC: a burst of 256 sends of 64 KiB returns in a few milliseconds with most of it still in flight by BytesInFlight(); every send then reports true, once, in the order sent, the counters drain to zero and the peer reads all 16 MiB in order. With every pool worker parked, a chain of 100 sends, each made from the previous one's onSent, completes. A connection stopped under a burst reports every send once, the trues before the falses; sends made just before the wrapper is destroyed go out and report true; four threads sending on one stream at once all hear back; and a send on a closed stream reports false from a pool task rather than from inside SendAsync. Readers on the server are threads of their own, so parking the pool parks nothing they need. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
1b7417c2ba
commit
44706f29e7
2 changed files with 318 additions and 0 deletions
|
|
@ -204,6 +204,7 @@ extern "C" Configuration CrafterBuildProject(std::span<const std::string_view> a
|
|||
cfg.AddTest("ShouldSendRecieveLargeHTTP").Dependencies({ &cfg });
|
||||
cfg.AddTest("ShouldSendRecieveQUICDatagram").Dependencies({ &cfg });
|
||||
cfg.AddTest("ShouldSendRecieveQUICStream").Dependencies({ &cfg });
|
||||
cfg.AddTest("ShouldSendWithoutBlockingQUIC").Dependencies({ &cfg });
|
||||
cfg.AddTest("ShouldReportClosedQUICStream").Dependencies({ &cfg });
|
||||
cfg.AddTest("ShouldReportListenerPortQUIC").Dependencies({ &cfg });
|
||||
cfg.AddTest("ShouldReturnFromSendSyncQUIC").Dependencies({ &cfg });
|
||||
|
|
|
|||
Loading…
Reference in a new issue