# 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 (не для IFT) | | `eventhub_http.xml` | Legacy короткий localhost | Цель: **HTTPS** `api.ift.eventhub.local` (+ `admin-api.ift.eventhub.local` для verify). ### Auth path 1. `POST /v1/admin/login` (admin-api) — учётка из `ift-admin.csv` 2. `POST /v1/register` → `user.id` 3. `GET /v1/admin/users/:id/verification-token` — спец. admin-метод 4. `POST /v1/verify` 5. `POST /v1/login` → user JWT ## Подготовка учётки admin ```bash # из /opt/eventhub-ift/.env или локальной копии cp test/tsung/ift-admin.csv.example test/tsung/ift-admin.csv # одна строка без комментариев: email;password printf '%s;%s\n' "$ADMIN_SUPER_EMAIL" "$ADMIN_SUPER_PASSWORD" > test/tsung/ift-admin.csv ``` `ift-admin.csv` в `.gitignore`. ## Перед прогоном (хост IFT) ```bash EVENTHUB_REPLICAS=1 bash /opt/eventhub-ift/devops/scripts/ift-loadtest-prepare.sh # EVENTHUB_REPLICAS=N — больше нод ``` Оставляет `traefik` + `eventhub×N`. ## Дех-машина (WSL) 1. DNS: `api.ift.eventhub.local` и `admin-api.ift.eventhub.local` → IP IFT. 2. `sudo apt install tsung` 3. TLS: доверить CA стенда (`EventHubDevOps/ift/traefik/certs`). Проверка: `curl -sf https://api.ift.eventhub.local/health` 4. Из корня `EventHubBack`: ```bash tsung -f test/tsung/eventhub_ift_smoke.xml start tsung -f test/tsung/eventhub_ift.xml start ``` Отчёт: `~/.tsung/log//`. ## После прогона ```bash bash /opt/eventhub-ift/devops/scripts/ift-loadtest-restore.sh ``` ## Настройка интенсивности В `eventhub_ift.xml` блок ``: `interarrival` и `duration` фаз. `thinktime` — **секунды**. ## Замечания - Каждый VU делает admin login — это нагрузка и на admin-api; при необходимости позже вынести общий admin JWT в csv. - Из hot path убраны: dummy refresh, reports/tickets, завышенные thinktime старого `eventhub_tsung.xml`.