# Tests d'intégration full-stack — ja4-platform ## Architecture ``` ┌─────────────────────────────────────────────────────┐ │ platform (Rocky Linux 9) │ │ │ │ ┌──────────┐ http.socket ┌────────────┐ │ │ │ Apache │───────────────→│ │ │ │ │+ mod-reqin│ │ correlator │──→ ClickHouse │ └──────────┘ │ │ │ │ ┌──────────┐ network.socket │ │ │ │ │ sentinel │───────────────→│ │ │ │ │(TLS pcap) │ └────────────┘ │ │ └──────────┘ │ │ cap_add: NET_RAW, NET_ADMIN │ └─────────────────────────────────────────────────────┘ ↑ HTTPS │ test traffic ja4_logs.http_logs_raw ↓ ┌──────────────────┐ │ ClickHouse │ │ ja4_logs │ │ ja4_processing │ └──────────────────┘ ↑ ↑ ┌──────┘ └──────┐ ┌──────────────┐ ┌──────────────┐ │ bot-detector │ │ dashboard │ │ (ML/Python) │ │ (FastAPI) │ └──────────────┘ └──────────────┘ ``` ## Utilisation ```bash # Lancer les tests (build + start + test + teardown) ./run-tests.sh # Garder le stack actif après les tests (debug) ./run-tests.sh --no-down # Build uniquement (pas de tests) ./run-tests.sh --build-only # Ou depuis la racine du monorepo : make test-integration ``` ## Conteneurs | Conteneur | Image | Rôle | |-----------|-------|------| | `clickhouse` | clickhouse/clickhouse-server:24.8 | Base de données, schema auto-init | | `platform` | Rocky Linux 9 (build custom) | Apache HTTPS + mod-reqin-log + sentinel + correlator | | `bot-detector` | Python 3.11 | Détection d'anomalies ML | | `dashboard` | Python 3.11 / FastAPI | API SOC | ## Capabilities réseau Le conteneur `platform` a besoin de : - `NET_RAW` — pour la capture de paquets réseau (sentinel/pcap) - `NET_ADMIN` — pour la configuration de l'interface réseau Ces capabilities sont déclarées dans `docker-compose.yml` : ```yaml platform: cap_add: - NET_RAW - NET_ADMIN ``` ## Phases de test 1. **Schema ClickHouse** — vérifie les 2 bases, tables clés, utilisateurs 2. **Génération de trafic** — 50+ requêtes HTTPS vers Apache 3. **Pipeline de données** — vérifie les logs bruts et parsés dans ClickHouse 4. **Dashboard API** — vérifie /health et /api/metrics 5. **Bot-detector** — vérifie que le processus tourne 6. **Sentinel** — vérifie la capture réseau ## Debug ```bash # Logs du platform (Apache + correlator + sentinel) docker compose logs platform # Logs corrélés docker compose exec platform cat /var/log/logcorrelator/correlated.log # Requête ClickHouse directe docker compose exec clickhouse clickhouse-client \ -q "SELECT time, src_ip, method, host, path FROM ja4_logs.http_logs ORDER BY time DESC LIMIT 10" # Shell dans le platform docker compose exec platform bash ```