полный smoke тест стенда
This commit is contained in:
@@ -10,6 +10,7 @@ BOOKINGS_INIT_DAYS ?= 1
|
|||||||
.PHONY: up stop down clean airflow-init logs gp-psql ddl-gp \
|
.PHONY: up stop down clean airflow-init logs gp-psql ddl-gp \
|
||||||
bookings-clone-demodb bookings-init bookings-psql bookings-generate-day \
|
bookings-clone-demodb bookings-init bookings-psql bookings-generate-day \
|
||||||
dev-setup dev-sync dev-lock test lint fmt clean-venv
|
dev-setup dev-sync dev-lock test lint fmt clean-venv
|
||||||
|
SHELL := /bin/bash
|
||||||
|
|
||||||
up:
|
up:
|
||||||
docker compose -f docker-compose.yml up -d
|
docker compose -f docker-compose.yml up -d
|
||||||
@@ -113,3 +114,6 @@ fmt:
|
|||||||
|
|
||||||
clean-venv:
|
clean-venv:
|
||||||
python -c "import shutil; shutil.rmtree('.venv', ignore_errors=True)"
|
python -c "import shutil; shutil.rmtree('.venv', ignore_errors=True)"
|
||||||
|
|
||||||
|
e2e-smoke:
|
||||||
|
./scripts/e2e_smoke.sh
|
||||||
|
|||||||
@@ -421,5 +421,6 @@ load_bookings_to_stg = PostgresOperator(
|
|||||||
|
|
||||||
- Локальные проверки: `make test` (pytest). Для форматирования — `make fmt`, для проверки — `make lint`.
|
- Локальные проверки: `make test` (pytest). Для форматирования — `make fmt`, для проверки — `make lint`.
|
||||||
- Пошаговый сценарий с Docker (включая негативные кейсы и reset) — см. `TESTING.md`.
|
- Пошаговый сценарий с Docker (включая негативные кейсы и reset) — см. `TESTING.md`.
|
||||||
|
- Полный smoke-тест стенда (сносит volumes!): `make e2e-smoke` — поднимает стек с нуля и прогоняет `csv_to_greenplum` и `bookings_to_gp_stage` через `airflow dags test`.
|
||||||
|
|
||||||
Удачи в изучении Data Engineering! 🚀
|
Удачи в изучении Data Engineering! 🚀
|
||||||
|
|||||||
Executable
+53
@@ -0,0 +1,53 @@
|
|||||||
|
#!/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 "Apply DDL to Greenplum"
|
||||||
|
make ddl-gp
|
||||||
|
|
||||||
|
warn "Run local pytest suite"
|
||||||
|
make test
|
||||||
|
|
||||||
|
warn "Airflow DAG test: csv_to_greenplum"
|
||||||
|
docker compose -f docker-compose.yml exec airflow-webserver airflow dags test csv_to_greenplum 2024-01-01
|
||||||
|
|
||||||
|
warn "Airflow DAG test: bookings_to_gp_stage"
|
||||||
|
docker compose -f docker-compose.yml exec airflow-webserver airflow dags test bookings_to_gp_stage 2024-01-01
|
||||||
|
|
||||||
|
warn "Smoke test completed successfully"
|
||||||
Reference in New Issue
Block a user