98
tests/e2e/nightly/scripts/aop_commit_age.sh
Normal file
98
tests/e2e/nightly/scripts/aop_commit_age.sh
Normal file
@@ -0,0 +1,98 @@
|
||||
#!/bin/bash
|
||||
# ============================================================
|
||||
# aop_commit_age.sh - Look up last successful time in good_table.csv
|
||||
#
|
||||
# CSV format (good_table.csv):
|
||||
# name,yaml/path,link,status,vLLM Git information,vLLM-Ascend Git information,time
|
||||
#
|
||||
# Finds rows matching config_name where status=success,
|
||||
# picks the most recent "time" column, and calculates age.
|
||||
#
|
||||
# Args: $1 = config_name
|
||||
# $2 = csv_path
|
||||
#
|
||||
# Writes to $GITHUB_OUTPUT:
|
||||
# commit_age_days - days since last success
|
||||
# is_old - true if > 3 days
|
||||
# last_status - status from table
|
||||
# last_date - date from table
|
||||
# ============================================================
|
||||
set -euo pipefail
|
||||
|
||||
CONFIG_NAME="${1:-}"
|
||||
CSV_PATH="${GOOD_TABLE:-$2}"
|
||||
|
||||
if [ -z "$CONFIG_NAME" ]; then
|
||||
echo "ERROR: no config name provided"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo ">>> Looking up config : ${CONFIG_NAME}"
|
||||
echo ">>> CSV path : ${CSV_PATH}"
|
||||
|
||||
if [ ! -f "$CSV_PATH" ]; then
|
||||
echo ">>> CSV not found → skip"
|
||||
echo "is_old=true" >> "$GITHUB_OUTPUT"
|
||||
echo "commit_age_days=99" >> "$GITHUB_OUTPUT"
|
||||
echo "last_status=unknown" >> "$GITHUB_OUTPUT"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Find matching rows, only consider success rows (match name column only)
|
||||
ROWS=$(grep "^${CONFIG_NAME}," "$CSV_PATH" | grep -F ',success,' || true)
|
||||
|
||||
if [ -z "$ROWS" ]; then
|
||||
echo ">>> No success row for '${CONFIG_NAME}' → skip"
|
||||
echo "is_old=true" >> "$GITHUB_OUTPUT"
|
||||
echo "commit_age_days=99" >> "$GITHUB_OUTPUT"
|
||||
echo "last_status=unknown" >> "$GITHUB_OUTPUT"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Pick most recent success row
|
||||
BEST_ROW=""
|
||||
BEST_DATE=""
|
||||
while IFS= read -r row; do
|
||||
date_str=$(echo "$row" | awk -F',' '{print $NF}' | xargs)
|
||||
[ -z "$date_str" ] && continue
|
||||
if [ -z "$BEST_DATE" ] || [[ "$date_str" > "$BEST_DATE" ]]; then
|
||||
BEST_ROW="$row"
|
||||
BEST_DATE="$date_str"
|
||||
fi
|
||||
done <<< "$ROWS"
|
||||
|
||||
if [ -z "$BEST_ROW" ]; then
|
||||
echo ">>> No valid date in success rows → skip"
|
||||
echo "is_old=true" >> "$GITHUB_OUTPUT"
|
||||
echo "commit_age_days=99" >> "$GITHUB_OUTPUT"
|
||||
echo "last_status=unknown" >> "$GITHUB_OUTPUT"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
LAST_STATUS=$(echo "$BEST_ROW" | awk -F',' '{print $4}' | xargs)
|
||||
LAST_DATE="$BEST_DATE"
|
||||
|
||||
echo ">>> Matched row: ${BEST_ROW}"
|
||||
echo "last_status=${LAST_STATUS}" >> "$GITHUB_OUTPUT"
|
||||
echo "last_date=${LAST_DATE}" >> "$GITHUB_OUTPUT"
|
||||
|
||||
LAST_TS=$(date -d "$LAST_DATE" +%s 2>/dev/null || true)
|
||||
if [ -z "$LAST_TS" ]; then
|
||||
echo ">>> Could not parse date: ${LAST_DATE} → skip"
|
||||
echo "is_old=true" >> "$GITHUB_OUTPUT"
|
||||
echo "commit_age_days=99" >> "$GITHUB_OUTPUT"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
NOW=$(date +%s)
|
||||
AGE_DAYS=$(( (NOW - LAST_TS) / 86400 ))
|
||||
|
||||
echo "commit_age_days=${AGE_DAYS}" >> "$GITHUB_OUTPUT"
|
||||
|
||||
if [ "$AGE_DAYS" -gt 3 ]; then
|
||||
echo "is_old=true" >> "$GITHUB_OUTPUT"
|
||||
echo ">>> ${CONFIG_NAME} last_status=${LAST_STATUS} date=${LAST_DATE} age=${AGE_DAYS}d (> 3 days) → old"
|
||||
else
|
||||
echo "is_old=false" >> "$GITHUB_OUTPUT"
|
||||
echo ">>> ${CONFIG_NAME} last_status=${LAST_STATUS} date=${LAST_DATE} age=${AGE_DAYS}d (<= 3 days) → recent"
|
||||
fi
|
||||
Reference in New Issue
Block a user