fix(quic-interop): detect multiplexing by URL count, not TESTCASE name
The smoking gun from the 2026-05-07 multiplex run boot log: [boot] DEBUG=1; ...; TESTCASE=transfer; ROLE=client [boot] transfer mode: parallel=false urls=1999 quic-interop-runner sets TESTCASE_CLIENT=transfer for ALL the transfer-family testcases (transfer, multiplexing, transferloss, transfercorruption). Discrimination between transfer (1 file) and multiplexing (~2000 files) happens by URL count, NOT by TESTCASE name — so our check `parallel = (testcase == "multiplexing")` was always false, even for the multiplexing test, and we always took the serial fallback path: client.get(authority, path) per URL, opening one stream + awaiting before the next. That's why the wire showed exactly one stream per RTT for the entire 60s. Fix: parallel = (token count of REQUESTS env var) > 1. Effectively: - 1 URL → transfer testcase, serial path - >1 URL → multiplexing testcase, batched-parallel path Verified the writer's batched coalescing already works in unit tests (MultiplexingCoalescingTest, MultiplexingAioquicTpsTest both green at ~9 streams/packet). With this dispatch fix, the live runner should finally reach the batched code path. Bumped WRITER_DEBUG_BUILD_ID so the next [boot] line confirms the fix is deployed.
This commit is contained in:
+15
-1
@@ -198,7 +198,21 @@ fun main() {
|
||||
initialVersion = initialVersion,
|
||||
keyLogPath = keyLogPath,
|
||||
qlogDir = qlogDir,
|
||||
parallel = (testcase == "multiplexing"),
|
||||
// The runner reuses TESTCASE_CLIENT=transfer for the
|
||||
// multiplexing testcase — discrimination is by URL
|
||||
// count, not testcase name. We were checking
|
||||
// testcase == "multiplexing" which is NEVER true
|
||||
// (we'd see TESTCASE=multiplexing only on a
|
||||
// hypothetical client where the runner explicitly
|
||||
// sets it). Symptom: 60s timeout with 1421/2000
|
||||
// files at 1 stream / RTT — exactly the serial
|
||||
// client.get(...) path. Confirmed via the boot log:
|
||||
// [boot] TESTCASE=transfer; transfer mode:
|
||||
// parallel=false urls=1999
|
||||
//
|
||||
// Cheap whitespace tokenization here just counts;
|
||||
// runTransferTest re-parses into URI[] inside.
|
||||
parallel = requests.split(Regex("\\s+")).count { it.isNotBlank() } > 1,
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user