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:
Claude
2026-05-07 14:24:52 +00:00
parent a9dc927cc6
commit ac0d6f06a9
2 changed files with 16 additions and 2 deletions
@@ -39,4 +39,4 @@ var writerDebugEnabled: Boolean = false
* docker layer cache didn't serve a stale jar). Bump when adding new
* trace lines to make them traceable from the wire run.
*/
const val WRITER_DEBUG_BUILD_ID: String = "2026-05-07-parallel-branch-v1"
const val WRITER_DEBUG_BUILD_ID: String = "2026-05-07-fix-parallel-detection-v1"