Files
airflow-greenplum/scripts/e2e_smoke.sh
T
ddadmin 22a0590e1b feat(sql): явное управление storage и автоматизированный E2E-тест через REST API
- Зачем:
  - необходимо визуализировать выбор типа хранения (Heap vs Append-Only) для учебных целей.
  - автоматизировать проверку всей цепочки DWH для исключения ручных ошибок.
  - сделать процесс отладки прозрачным и наглядным через стандартные инструменты Airflow.
- Что:
  - внедрена клауза WITH (appendonly=...) во все DDL; ODS-справочники переведены на AO Row и TRUNCATE+INSERT.
  - создан скрипт scripts/e2e_etl.sh для полного прогона ETL (DDL + 2 дня данных) через REST API.
  - исправлены баги типизации (INTEGER[]), именования полей (amount, passenger_id) и удалены фантомные колонки (contact_data).
  - обновлен e2e-etl-test-protocol.md: добавлен раздел по отладке, чтению логов и перезапуску задач через API.
  - исправлены pytest-контракты под новую логику загрузки.
- Проверка:
  - успешный прогон `make e2e-smoke` (полный цикл от очистки до витрины).
2026-03-03 22:38:26 +03:00

48 lines
1.0 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
# Полный smoke-тест стенда: сносит volumes, поднимает стек,
# и проверяет оба учебных DAG через airflow dags test.
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$ROOT"
warn() { echo ":: ${1}" >&2; }
wait_up() {
local svc="$1"
local attempts=60
while true; do
if docker compose -f docker-compose.yml ps "$svc" 2>/dev/null | grep -q "Up"; then
break
fi
attempts=$((attempts - 1))
if [ "$attempts" -le 0 ]; then
echo "Service $svc is not up after waiting" >&2
exit 1
fi
sleep 2
done
}
warn "Reset stack (containers + volumes)"
make clean
warn "Starting stack (docker compose up)"
make up
warn "Waiting for Airflow services"
wait_up airflow-webserver
wait_up airflow-scheduler
warn "Init demo DB bookings"
make bookings-init
warn "Run local pytest suite"
make test
warn "Start full E2E ETL test via REST API"
make e2e-etl
warn "Smoke test completed successfully"