tests: run_all.sh авто-tee в test-results/, правила логирования
This commit is contained in:
@@ -60,6 +60,33 @@ ssh -i ~/.ssh/naeel_vm_id_ed25519 -o StrictHostKeyChecking=no -o ConnectTimeout=
|
|||||||
git tag vX.Y.Z && git push origin vX.Y.Z
|
git tag vX.Y.Z && git push origin vX.Y.Z
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## ⛔ ТЕРМИНАЛЬНЫЙ БУФЕР — НИКОГДА НЕ ЧИТАТЬ СТАРЫЙ
|
||||||
|
|
||||||
|
**АБСОЛЮТНОЕ ПРАВИЛО:**
|
||||||
|
- get_terminal_output из старых сессий — МУСОР. Там старые прогоны.
|
||||||
|
- Всегда запускать новую команду через SSH и читать её вывод напрямую.
|
||||||
|
- НИКОГДА не читать буфер терминала из предыдущей сессии как актуальные данные.
|
||||||
|
- Актуальный результат — только из команды, которая была запущена СЕЙЧАС.
|
||||||
|
|
||||||
|
## ⛔ ДОКУМЕНТАЦИЯ ТЕСТ-ПРОГОНОВ — В РЕАЛЬНОМ ВРЕМЕНИ
|
||||||
|
|
||||||
|
**Правила:**
|
||||||
|
1. Перед запуском `run_all.sh` — создать файл `test-results/YYYY-MM-DD_HH-MM.log` и записать в него метку времени и что запускается.
|
||||||
|
2. Запускать `run_all.sh 2>&1 | tee ~/terra/fission/test-results/YYYY-MM-DD_HH-MM.log` — вывод пишется сразу в файл и отображается в терминале.
|
||||||
|
3. После завершения — rsync лога локально. Лог остаётся как документация.
|
||||||
|
4. Папка `test-results/` в репозитории — `.gitignore` не добавлять, логи коммитить.
|
||||||
|
|
||||||
|
**Формат запуска:**
|
||||||
|
```bash
|
||||||
|
LOG="test-results/$(date +%Y-%m-%d_%H-%M).log"
|
||||||
|
ssh -i ~/.ssh/naeel_vm_id_ed25519 -o StrictHostKeyChecking=no naeel@5.172.178.213 \
|
||||||
|
"bash ~/terra/fission/scripts/run_all.sh 2>&1 | tee ~/terra/fission/${LOG}"
|
||||||
|
rsync -az -e "ssh -i ~/.ssh/naeel_vm_id_ed25519 -o StrictHostKeyChecking=no" \
|
||||||
|
naeel@5.172.178.213:~/terra/fission/test-results/ ~/fission/test-results/
|
||||||
|
```
|
||||||
|
|
||||||
|
**Никогда не разбираться с результатами по памяти / буферу / чату. Только лог.**
|
||||||
|
|
||||||
## Поведение агента
|
## Поведение агента
|
||||||
|
|
||||||
- Не трогать рабочий код без явного указания
|
- Не трогать рабочий код без явного указания
|
||||||
|
|||||||
Executable
+113
@@ -0,0 +1,113 @@
|
|||||||
|
#!/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 ]
|
||||||
Reference in New Issue
Block a user