Files
ss-tools/docs/architecture.md
busya 79f67e1952 test(superset): add Testcontainers setup for Apache Superset integration tests
- Add 6 fixtures to integration conftest: superset_db_url, superset_secret_key,
  superset_admin_password, superset_container (init+web), superset_url,
  superset_admin_headers
- Two-container architecture: init (db upgrade → create-admin → init) +
  web (superset run -p 8088)
- Superset 4.1.2 pinned (6.x incompatible: no psycopg2, SUPERSET__ prefix required)
- 8 integration tests cover health, form-login auth, SupersetClient construction
- Document decision in ADR-0012 with architecture rationale, rejected alternatives,
  and migration path to Superset 6.x
- Update docs/architecture.md with testing infrastructure overview
2026-06-11 14:45:31 +03:00

56 lines
2.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# [DEF:DocArchitecture:Module]
# @TIER: STANDARD
# @PURPOSE: Placeholder architecture document reserved for future normalized project architecture guidance.
# @RELATION: DEPENDS_ON -> [DEF:Std:Architecture:Standard]
Architecture guidance currently lives in `.ai/standards/architecture.md` and `.ai/MODULE_MAP.md`.
---
## Интеграционное тестирование с Testcontainers
Проект использует [Testcontainers](https://testcontainers-python.readthedocs.io/) для интеграционных тестов, требующих реальных сервисов (PostgreSQL, ClickHouse, Apache Superset).
### Принцип
Каждая тестовая сессия получает изолированные Docker-контейнеры на случайных портах. Контейнеры уничтожаются после завершения сессии. Это гарантирует отсутствие утечек состояния между запусками.
### Поддерживаемые сервисы
| Сервис | Образ | Scope | Конфигурация |
|--------|-------|-------|-------------|
| PostgreSQL | `postgres:16-alpine` | session | `backend/tests/integration/conftest.py` |
| ClickHouse | `clickhouse/clickhouse-server:24.3` | module | `test_translate_clickhouse.py` |
| Apache Superset | `apache/superset:4.1.2` | session | `backend/tests/integration/conftest.py` |
### Apache Superset Testcontainers
**Решение:** [ADR-0012 — Superset Testcontainers](./adr/ADR-0012-superset-testcontainers.md)
**Архитектура:**
```
Test Session
├── PostgresContainer (общий) # DB: superset_meta
├── Init Container (краткоживущий) # db upgrade → create-admin → init
└── Web Container (на всю сессию) # superset run -p 8088
```
**Запуск:**
```bash
cd backend && source .venv/bin/activate
python -m pytest tests/integration/test_superset_integration.py -v
# 8 passed in ~25s
```
**Доступные fixtures:**
- `superset_db_url` — PostgreSQL URI для метаданных Superset
- `superset_container` — запущенный веб-сервер Superset
- `superset_url``http://host:port`
- `superset_admin_headers` — авторизованная сессия (admin:admin123)
**Ограничения:**
- JWT-авторизация (`/api/v1/security/login`) требует дополнительной конфигурации FAB-permission'ов
- Метаданные хранятся в SQLite (образ 4.1.2 не содержит psycopg2)
# [/DEF:DocArchitecture:Module]