# Tsung — нагрузка EventHub ## Профили | Файл | Назначение | |------|------------| | `eventhub_ift_smoke.xml` | Короткий smoke на IFT после prepare | | `eventhub_ift.xml` | Mix: `auth_browse` 60% + `create_flow` 40%, фазы warmup/ramp/peak | | `eventhub_tsung.xml` | Legacy localhost (thinktime там в секундах — не использовать для IFT) | | `eventhub_http.xml` | Legacy короткий localhost | Цель IFT: **HTTPS** `api.ift.eventhub.local:443` (Traefik). Auth path: `POST /v1/register` → `POST /v1/verify` → `POST /v1/login`. На стендах (`EVENTHUB_ENV` ≠ `prod`) register отдаёт `verification_token` (без почты). ## Перед прогоном (хост IFT) ```bash # 1 нода (default) EVENTHUB_REPLICAS=1 bash /opt/eventhub-ift/devops/scripts/ift-loadtest-prepare.sh # или N нод EVENTHUB_REPLICAS=2 bash /opt/eventhub-ift/devops/scripts/ift-loadtest-prepare.sh ``` Оставляет `traefik` + `eventhub×N`, гасит admin-ui / bot / observability / fallback. ## Дех-машина (WSL) 1. DNS: `api.ift.eventhub.local` → IP IFT (тот же, что в OpenWRT). 2. Установка: `sudo apt install tsung` (или [документация Tsung](http://tsung.erlang-projects.org/)). 3. TLS: самоподписанный сертификат стенда — импортировать CA из `EventHubDevOps/ift/traefik/certs` в trust store WSL, либо временно положить CA в `/usr/local/share/ca-certificates/` и `update-ca-certificates`. Проверка: `curl -sf https://api.ift.eventhub.local/health`. 4. Запуск из корня `EventHubBack`: ```bash # smoke (~1 мин) tsung -f test/tsung/eventhub_ift_smoke.xml start # полный прогон (~6 мин фаз) tsung -f test/tsung/eventhub_ift.xml start ``` Отчёт: `~/.tsung/log//` → `tsung_stats.pl` / HTML. ## После прогона ```bash bash /opt/eventhub-ift/devops/scripts/ift-loadtest-restore.sh ``` ## Настройка интенсивности В `eventhub_ift.xml` блок ``: `interarrival` (сек между стартами пользователей) и `duration` фаз. `thinktime` — **секунды** (не мс). ## Что сознательно убрано из hot path - dummy `/v1/refresh` - reports / tickets (шум модерации) - завышенные thinktime (старый `eventhub_tsung.xml`)