feat(e2e): add distributed E2E test framework with parametric traffic generation
Add run-e2e-test.sh with CLI parameters (--hits, --http-ratio, --dns, --tls, --src-ips, --keep-analysis, --up) for configurable traffic generation. Traffic runs from VM endpoints with multiple source IPs (alias IPs on eth0) to produce distinct sessions for the ML pipeline. Fix curl TLS flags (--tlsv1.2 instead of --tls-v1-2), skip redundant local verification in distributed mode, and fix dashboard is_available() cache that never retried after ClickHouse recovery. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
59
tests/vm/provision-analysis.sh
Executable file
59
tests/vm/provision-analysis.sh
Executable file
@ -0,0 +1,59 @@
|
||||
#!/usr/bin/env bash
|
||||
# =============================================================================
|
||||
# provision-analysis.sh — Provisionnement de la VM analysis (ClickHouse + bot-detector + dashboard)
|
||||
#
|
||||
# Installe uniquement Docker et les prérequis pour la stack d'analyse.
|
||||
# Pas de toolchain eBPF, Go, ni serveurs web (uniquement sur les endpoints).
|
||||
# =============================================================================
|
||||
set -euo pipefail
|
||||
|
||||
log() { echo "[provision] $(date +%H:%M:%S) $*"; }
|
||||
|
||||
# ── 1. Mise à jour système + dépôts ──────────────────────────────────────────
|
||||
log "Mise à jour des dépôts..."
|
||||
dnf install -y epel-release dnf-plugins-core
|
||||
dnf config-manager --enable crb
|
||||
dnf update -y --quiet
|
||||
|
||||
# ── 2. Docker + docker-compose ───────────────────────────────────────────────
|
||||
log "Installation de Docker..."
|
||||
dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
|
||||
dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
|
||||
|
||||
# Sur kernel 6.12+ (el10+), nf_tables incompatibilité avec iptables-nft
|
||||
if ! systemctl start docker 2>/dev/null; then
|
||||
log "Docker: fallback iptables=false pour kernel $(uname -r)"
|
||||
mkdir -p /etc/docker
|
||||
echo '{"iptables": false}' > /etc/docker/daemon.json
|
||||
fi
|
||||
|
||||
systemctl enable --now docker
|
||||
usermod -aG docker vagrant
|
||||
chmod 666 /var/run/docker.sock || true
|
||||
|
||||
# ── 3. Firewall — ouvrir les ports d'analyse ──────────────────────────────────
|
||||
log "Configuration firewall..."
|
||||
firewall-cmd --add-port=9000/tcp --permanent 2>/dev/null || true # ClickHouse native
|
||||
firewall-cmd --add-port=8123/tcp --permanent 2>/dev/null || true # ClickHouse HTTP
|
||||
firewall-cmd --add-port=8080/tcp --permanent 2>/dev/null || true # bot-detector health
|
||||
firewall-cmd --add-port=8000/tcp --permanent 2>/dev/null || true # dashboard
|
||||
firewall-cmd --reload 2>/dev/null || true
|
||||
|
||||
# ── 4. Swap (sécurité pour le build Docker des images ML) ────────────────────
|
||||
log "Configuration swap 4G..."
|
||||
if [ ! -f /swapfile ]; then
|
||||
dd if=/dev/zero of=/swapfile bs=1M count=4096 status=progress
|
||||
chmod 600 /swapfile
|
||||
mkswap /swapfile
|
||||
swapon /swapfile
|
||||
echo '/swapfile none swap sw 0 0' >> /etc/fstab
|
||||
fi
|
||||
|
||||
# ── 5. Outils utilitaires ─────────────────────────────────────────────────────
|
||||
log "Installation outils..."
|
||||
dnf install -y curl python3 python3-pip
|
||||
|
||||
# ── 6. Répertoire de travail ──────────────────────────────────────────────────
|
||||
# Le projet est rsync par Vagrant (config vm.synced_folder dans Vagrantfile)
|
||||
log "Provisionnement analysis terminé !"
|
||||
log "Lancer 'make test-e2e' depuis le host pour démarrer le test distribué."
|
||||
Reference in New Issue
Block a user