From 82b114a494344b6932db6d130932dc16370e0a50 Mon Sep 17 00:00:00 2001 From: nyash-codex Date: Mon, 15 Dec 2025 07:07:34 +0900 Subject: [PATCH] test: Phase 132 smoke - add timeout/logging for robust diagnostics --- .../apps/phase132_exit_phi_parity.sh | 42 +++++++++++++++---- 1 file changed, 33 insertions(+), 9 deletions(-) diff --git a/tools/smokes/v2/profiles/integration/apps/phase132_exit_phi_parity.sh b/tools/smokes/v2/profiles/integration/apps/phase132_exit_phi_parity.sh index b855b1b6..526d8de5 100644 --- a/tools/smokes/v2/profiles/integration/apps/phase132_exit_phi_parity.sh +++ b/tools/smokes/v2/profiles/integration/apps/phase132_exit_phi_parity.sh @@ -26,6 +26,8 @@ mkdir -p "$NYASH_ROOT/tmp" PASS_COUNT=0 FAIL_COUNT=0 +BUILD_TIMEOUT_SECS=${BUILD_TIMEOUT_SECS:-300} +RUN_TIMEOUT_SECS=${RUN_TIMEOUT_SECS:-10} # ===== Case A: Simple loop return ===== echo "[INFO] Case A: phase132_return_loop_var_min.hako" @@ -33,14 +35,17 @@ echo "[INFO] Case A: phase132_return_loop_var_min.hako" INPUT_A="$NYASH_ROOT/apps/tests/phase132_return_loop_var_min.hako" OUTPUT_A="$NYASH_ROOT/tmp/phase132_return_loop_var_min" -if "$NYASH_ROOT/tools/build_llvm.sh" "$INPUT_A" -o "$OUTPUT_A" > /tmp/phase132_a_build.log 2>&1; then +if timeout "$BUILD_TIMEOUT_SECS" "$NYASH_ROOT/tools/build_llvm.sh" "$INPUT_A" -o "$OUTPUT_A" > /tmp/phase132_a_build.log 2>&1; then if [ -x "$OUTPUT_A" ]; then set +e - "$OUTPUT_A" > /dev/null 2>&1 - EXIT_CODE=$? + timeout "$RUN_TIMEOUT_SECS" "$OUTPUT_A" > /dev/null 2>&1 + EXIT_CODE=$? # 124=timeout set -e - if [ "$EXIT_CODE" -eq 3 ]; then + if [ "$EXIT_CODE" -eq 124 ]; then + echo "[FAIL] Case A: executable timed out (>${RUN_TIMEOUT_SECS}s)" + ((FAIL_COUNT++)) + elif [ "$EXIT_CODE" -eq 3 ]; then echo "[PASS] Case A: exit code 3 verified" ((PASS_COUNT++)) else @@ -52,7 +57,13 @@ if "$NYASH_ROOT/tools/build_llvm.sh" "$INPUT_A" -o "$OUTPUT_A" > /tmp/phase132_a ((FAIL_COUNT++)) fi else - echo "[FAIL] Case A: build_llvm.sh failed" + if [ "$?" -eq 124 ]; then + echo "[FAIL] Case A: build_llvm.sh timed out (>${BUILD_TIMEOUT_SECS}s)" + else + echo "[FAIL] Case A: build_llvm.sh failed" + fi + echo "[INFO] Case A build log (tail):" + tail -n 80 /tmp/phase132_a_build.log || true ((FAIL_COUNT++)) fi @@ -62,17 +73,24 @@ echo "[INFO] Case B: llvm_stage3_loop_only.hako" INPUT_B="$NYASH_ROOT/apps/tests/llvm_stage3_loop_only.hako" OUTPUT_B="$NYASH_ROOT/tmp/llvm_stage3_loop_only" -if "$NYASH_ROOT/tools/build_llvm.sh" "$INPUT_B" -o "$OUTPUT_B" > /tmp/phase132_b_build.log 2>&1; then +# Case B can reuse the runtime built by Case A; skip rebuilding NyRT to reduce runtime. +if timeout "$BUILD_TIMEOUT_SECS" env NYASH_LLVM_SKIP_NYRT_BUILD=1 "$NYASH_ROOT/tools/build_llvm.sh" "$INPUT_B" -o "$OUTPUT_B" > /tmp/phase132_b_build.log 2>&1; then if [ -x "$OUTPUT_B" ]; then set +e - OUTPUT=$("$OUTPUT_B" 2>&1) + OUTPUT=$(timeout "$RUN_TIMEOUT_SECS" "$OUTPUT_B" 2>&1) + EXIT_CODE=$? # 124=timeout set -e - if echo "$OUTPUT" | grep -q "Result: 3"; then + if [ "$EXIT_CODE" -eq 124 ]; then + echo "[FAIL] Case B: executable timed out (>${RUN_TIMEOUT_SECS}s)" + ((FAIL_COUNT++)) + elif echo "$OUTPUT" | grep -q "Result: 3"; then echo "[PASS] Case B: stdout contains 'Result: 3'" ((PASS_COUNT++)) else echo "[FAIL] Case B: Expected stdout to contain 'Result: 3'" + echo "[INFO] Case B stdout (tail):" + echo "$OUTPUT" | tail -n 80 || true ((FAIL_COUNT++)) fi else @@ -80,7 +98,13 @@ if "$NYASH_ROOT/tools/build_llvm.sh" "$INPUT_B" -o "$OUTPUT_B" > /tmp/phase132_b ((FAIL_COUNT++)) fi else - echo "[FAIL] Case B: build_llvm.sh failed" + if [ "$?" -eq 124 ]; then + echo "[FAIL] Case B: build_llvm.sh timed out (>${BUILD_TIMEOUT_SECS}s)" + else + echo "[FAIL] Case B: build_llvm.sh failed" + fi + echo "[INFO] Case B build log (tail):" + tail -n 80 /tmp/phase132_b_build.log || true ((FAIL_COUNT++)) fi