- Зачем: - необходимо визуализировать выбор типа хранения (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` (полный цикл от очистки до витрины).
48 lines
1.0 KiB
Bash
Executable File
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"
|