Files
enginex-ascend-910-vllm/tests/e2e/nightly/scripts/aop_classify.sh
Sun Ruoxi 7f8a1b1f7a init v0.23.0
Signed-off-by: Sun Ruoxi <sunruoxi@4paradigm.com>
2026-08-27 15:11:51 +08:00

61 lines
1.8 KiB
Bash

#!/bin/bash
# ============================================================
# aop_classify.sh - Check if failure is environmental
#
# Args: $1 = failed_test (from capture: "yaml", "pytest", "yaml,pytest")
#
# Only scans the log files that actually failed.
# Writes failure_type to $GITHUB_OUTPUT.
# ============================================================
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
RULES="$SCRIPT_DIR/rules-env.txt"
LOG_DIR="/tmp/test-logs"
FAILED_TEST="${1:-yaml,pytest}"
check_log() {
local log_file="$1"
local label="$2"
if [ ! -f "$log_file" ] || [ ! -s "$log_file" ]; then
echo " [$label] log empty/missing -> skipped"
return 0
fi
local count
count=$(grep -vE '^[[:space:]]*(#|$)' "$RULES" | grep -ciEf - "$log_file" 2>/dev/null || echo 0)
echo " [$label] env patterns matched: ${count}"
if [ "$count" -gt 0 ]; then
echo " [$label] --- matches ---"
grep -vE '^[[:space:]]*(#|$)' "$RULES" | grep -niEf - "$log_file" | head -10
return 1
fi
return 0
}
echo "=== Failure Classification ==="
echo "[DEBUG] rules file : ${RULES}"
echo "[DEBUG] rules exists: $(test -f "$RULES" && echo yes || echo no)"
echo "[DEBUG] rules lines : $(grep -c . "$RULES" 2>/dev/null || echo 0)"
echo "[DEBUG] rules content:"
cat -n "$RULES" 2>/dev/null || echo "(file not found)"
ENV_FOUND=0
if [[ "$FAILED_TEST" == *pytest* ]]; then
check_log "${LOG_DIR}/pytest-driven.log" "pytest-driven" || ENV_FOUND=1
fi
if [[ "$FAILED_TEST" == *yaml* ]]; then
check_log "${LOG_DIR}/yaml-test.log" "yaml-test" || ENV_FOUND=1
fi
if [ "$ENV_FOUND" -eq 1 ]; then
echo "=== Result: env_failure ==="
echo "failure_type=env_failure" >> "$GITHUB_OUTPUT"
else
echo "=== Result: not_env_failure ==="
echo "failure_type=not_env_failure" >> "$GITHUB_OUTPUT"
fi