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