From 1f964db2a80f2f26adb4c8fe78794254a4f7a3bc Mon Sep 17 00:00:00 2001 From: Claude Date: Thu, 7 May 2026 14:36:15 +0000 Subject: [PATCH] diag(quic-interop): tee runner stdout to sibling log + summarize reads it MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Two paired changes: (1) run-matrix.sh now tees the runner's full stdout (pre-grep- filter) to .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. --- quic/interop/run-matrix.sh | 7 +++++++ quic/interop/summarize-matrix.sh | 3 +++ 2 files changed, 10 insertions(+) diff --git a/quic/interop/run-matrix.sh b/quic/interop/run-matrix.sh index cc8389eb9..f6e10f8ab 100755 --- a/quic/interop/run-matrix.sh +++ b/quic/interop/run-matrix.sh @@ -142,8 +142,15 @@ if [ "${VERBOSE:-0}" = "1" ]; then exec "$RUNNER_DIR/.venv/bin/python" run.py \ -d -i amethyst --log-dir "$RUN_LOG_DIR" "$@" else + # Tee unfiltered stdout to a sibling file so summarize-matrix.sh + # can find the 'Test: X took Y, status:' lines later — the runner + # only writes those to its own stdout, not into per-testcase + # output.txt. Sibling rather than inside RUN_LOG_DIR because + # run.py refuses to start if its --log-dir already exists. + RUNNER_STDOUT="${RUN_LOG_DIR}.stdout.log" "$RUNNER_DIR/.venv/bin/python" run.py \ -d -i amethyst --log-dir "$RUN_LOG_DIR" "$@" 2>&1 \ + | tee "$RUNNER_STDOUT" \ | grep -Ev \ -e '^(client|server|sim) +\| +(Setting up routes|Actual changes:|tx-[a-z0-9-]+:|Endpoint'\''s IPv[46] address is)' \ -e '^ Container [a-z]+ +(Recreate|Recreated|Stopping|Stopped|Starting|Started)( [0-9.]+s)?$' \ diff --git a/quic/interop/summarize-matrix.sh b/quic/interop/summarize-matrix.sh index 22be16656..18dfbf64b 100755 --- a/quic/interop/summarize-matrix.sh +++ b/quic/interop/summarize-matrix.sh @@ -67,6 +67,9 @@ infer_status_from_artifacts() { # and the working dir we were invoked from. SEARCH_FILES=() while IFS= read -r f; do SEARCH_FILES+=("$f"); done < <( + # run-matrix.sh tees the runner's stdout to .stdout.log — + # check that first since it has the authoritative status lines. + [[ -f "${RUN_DIR}.stdout.log" ]] && echo "${RUN_DIR}.stdout.log" find "$PAIR_DIR" -maxdepth 3 -name 'output.txt' -type f 2>/dev/null find "$RUN_DIR" -maxdepth 1 -name '*.log' -type f 2>/dev/null find "$RUNNER_LOGS" -maxdepth 1 -name 'run-*.log' -type f 2>/dev/null