114 lines
3.8 KiB
Bash
Executable File
114 lines
3.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# run_all.sh — запускает все тест-скрипты по очереди, выводит итог.
|
|
# Каждый скрипт независим и имеет собственный cleanup.
|
|
# При падении одного скрипта остальные продолжают выполняться.
|
|
#
|
|
# Запуск: bash run_all.sh
|
|
# Запуск одного: bash run_all.sh test_auth.sh
|
|
set -uo pipefail
|
|
|
|
ROOT_DIR=$(cd "$(dirname "$0")" && pwd)
|
|
|
|
# Авто-логирование: если stdout — терминал, пишем одновременно в файл
|
|
LOG_DIR="${ROOT_DIR}/../test-results"
|
|
mkdir -p "$LOG_DIR"
|
|
LOG_FILE="${LOG_DIR}/$(date +%Y-%m-%d_%H-%M-%S).log"
|
|
# Перезапуск с tee только если ещё не логируем (нет переменной _LOGGING)
|
|
if [ -z "${_LOGGING:-}" ]; then
|
|
export _LOGGING=1
|
|
exec bash "$0" "$@" 2>&1 | tee "$LOG_FILE"
|
|
exit $?
|
|
fi
|
|
echo "LOG: $LOG_FILE"
|
|
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m'
|
|
|
|
TOTAL_PASS=0
|
|
TOTAL_FAIL=0
|
|
FAILED_SCRIPTS=()
|
|
|
|
run_script() {
|
|
local script="$1"
|
|
local name
|
|
name=$(basename "$script")
|
|
echo ""
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
echo " ЗАПУСК: $name"
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
|
|
local exit_code=0
|
|
bash "$script" || exit_code=$?
|
|
|
|
if [ "$exit_code" -eq 0 ]; then
|
|
echo -e "${GREEN} ✓ $name — PASSED${NC}"
|
|
TOTAL_PASS=$((TOTAL_PASS+1))
|
|
else
|
|
echo -e "${RED} ✗ $name — FAILED (exit $exit_code)${NC}"
|
|
TOTAL_FAIL=$((TOTAL_FAIL+1))
|
|
FAILED_SCRIPTS+=("$name")
|
|
fi
|
|
}
|
|
|
|
# Список скриптов в порядке выполнения
|
|
# (быстрые сначала, invoke/stress — последними)
|
|
SCRIPTS=(
|
|
"${ROOT_DIR}/test_auth.sh"
|
|
"${ROOT_DIR}/test_functions_crud.sh"
|
|
"${ROOT_DIR}/test_ttl.sh"
|
|
"${ROOT_DIR}/test_isolation.sh"
|
|
"${ROOT_DIR}/test_update.sh"
|
|
"${ROOT_DIR}/test_invoke.sh"
|
|
"${ROOT_DIR}/test_linters.sh"
|
|
"${ROOT_DIR}/test_stress.sh"
|
|
)
|
|
|
|
# Если передан аргумент — запускаем только его
|
|
if [ "$#" -ge 1 ]; then
|
|
SCRIPTS=("${ROOT_DIR}/$1")
|
|
fi
|
|
|
|
# Предварительная очистка тест-namespace-ов от прошлых прогонов.
|
|
# Запускается только если cleanup_test_namespaces.sh умеет wildcard.
|
|
PRE_CLEANUP="${ROOT_DIR}/pre_cleanup.sh"
|
|
if [ -x "$PRE_CLEANUP" ]; then
|
|
echo ""
|
|
echo ">>> Предварительная очистка тест-namespace-ов..."
|
|
KUBECTL_DIRECT=1 bash "$PRE_CLEANUP" 2>/dev/null || true
|
|
fi
|
|
|
|
echo ""
|
|
echo "╔══════════════════════════════════════╗"
|
|
echo "║ fission-console — полный тест-сьют ║"
|
|
echo "╚══════════════════════════════════════╝"
|
|
|
|
START_TIME=$(date +%s)
|
|
|
|
for script in "${SCRIPTS[@]}"; do
|
|
if [ ! -f "$script" ]; then
|
|
echo -e "${YELLOW} SKIP: $script не найден${NC}"
|
|
continue
|
|
fi
|
|
run_script "$script"
|
|
done
|
|
|
|
END_TIME=$(date +%s)
|
|
ELAPSED=$((END_TIME - START_TIME))
|
|
|
|
echo ""
|
|
echo "╔══════════════════════════════════════╗"
|
|
printf "║ Скриптов: PASS=%-3d FAIL=%-3d %3ds ║\n" "$TOTAL_PASS" "$TOTAL_FAIL" "$ELAPSED"
|
|
echo "╚══════════════════════════════════════╝"
|
|
|
|
if [ "${#FAILED_SCRIPTS[@]}" -gt 0 ]; then
|
|
echo ""
|
|
echo "Упавшие скрипты:"
|
|
for s in "${FAILED_SCRIPTS[@]}"; do
|
|
echo -e " ${RED}✗ $s${NC}"
|
|
done
|
|
fi
|
|
|
|
[ "$TOTAL_FAIL" -eq 0 ]
|