Commit Graph

6 Commits

Author SHA1 Message Date
Vitor Pamplona 48b48a8481 fix(quic-interop): summarize-matrix picks newest run dir, not sibling .stdout.log
`ls -1dt run-*` returns both the per-run directories AND the
`.stdout.log` files run-matrix.sh tees alongside them, interleaved by
mtime. `head -n 1` could land on a `.stdout.log` regular file, after
which the rest of the script trying to walk subdirectories under it
silently produced empty output ("no <pair> dir under …"). Walk the
listing instead and pick the first entry that is actually a directory.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 11:04:28 -04:00
Claude 0d94bd17e4 fix(quic-interop): summarize compat with bash 3.2 (macOS default)
Two bash-3.2 issues:

  - Multiline process substitution '< <(...)' with embedded
    comments triggered 'bad substitution: no closing ')''.
    Reworked as imperative pushes to an array.

  - 'set -u' rejects '${SEARCH_FILES[@]}' on an empty array.
    Disabled '-u' since the artifact-fallback path doesn't need
    any search files.
2026-05-07 14:40:00 +00:00
Claude 1f964db2a8 diag(quic-interop): tee runner stdout to sibling log + summarize reads it
Two paired changes:

(1) run-matrix.sh now tees the runner's full stdout (pre-grep-
    filter) to <RUN_LOG_DIR>.stdout.log — sibling rather than
    inside the log dir because run.py refuses to start if its own
    --log-dir already exists.

(2) summarize-matrix.sh checks that file FIRST when searching for
    'Test: X took Y, status:' lines — it has the authoritative
    runner output that wasn't being saved before.

Old runs (without the tee) fall back to qlog inspection.
2026-05-07 14:36:15 +00:00
Claude b0737f8655 diag(quic-interop): summarize falls back to qlog inspection when no status line
Some runner versions don't write 'Test: X took Y, status:' lines
into the per-testcase output.txt — they only print to the runner's
own stdout (which our run-matrix.sh consumes via grep filter and
loses). Without status lines we can still infer outcomes from
artifacts:

  - qlog has a connection_closed event with a reason → FAILED with
    that reason (e.g. peer CLOSE 'no CRYPTO frame')
  - qlog has packets received but no close → ran something, status
    genuinely uncertain
  - no qlog → connection probably never made it past TLS

Tagged [inf] so users can distinguish runner-reported status from
inferred status.
2026-05-07 14:35:34 +00:00
Claude 2f5cd66680 fix(quic-interop): summarize search wider — runner status line lives outside per-testcase output.txt
The 'Test: X took Y, status: TestResult.Z' line is written by
run.py to its own stdout, not the per-testcase output.txt the
script was grepping. Scan common locations (per-testcase output.txt
fallback, run dir log files, runner-logs root) and accept the
runner's optional leading timestamp format.
2026-05-07 14:34:32 +00:00
Claude a800ee4d97 diag(quic-interop): summarize-matrix.sh for partial / interrupted runs
Full matrix takes long enough to be vulnerable to terminal hangs,
docker OOM, or just user CTRL-C. Per-testcase output.txt files
hold status lines we can scrape without re-running anything.

Usage:
  ./quic/interop/summarize-matrix.sh

Output:
  TESTCASE               RESULT          TIME
  --------------------   --------------- ----------
  handshake              ✓ SUCCEEDED     2.5s
  transfer               ✓ SUCCEEDED     3.1s
  multiplexing           ✓ SUCCEEDED     5.2s
  retry                  ✕ FAILED        8.3s
  ecn                    ? UNSUPPORTED   2.6s

Helps iterate when the matrix is too long to run end-to-end on
macOS Docker.
2026-05-07 14:30:31 +00:00