fix(loadtest): verify через admin verification-token, убрать token из register. Refs EventHub/EventHubBack#30
This commit is contained in:
+33
-23
@@ -6,42 +6,53 @@
|
||||
|------|------------|
|
||||
| `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_tsung.xml` | Legacy localhost (не для IFT) |
|
||||
| `eventhub_http.xml` | Legacy короткий localhost |
|
||||
|
||||
Цель IFT: **HTTPS** `api.ift.eventhub.local:443` (Traefik).
|
||||
Цель: **HTTPS** `api.ift.eventhub.local` (+ `admin-api.ift.eventhub.local` для verify).
|
||||
|
||||
Auth path: `POST /v1/register` → `POST /v1/verify` → `POST /v1/login`.
|
||||
На стендах (`EVENTHUB_ENV` ≠ `prod`) register отдаёт `verification_token` (без почты).
|
||||
### 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
|
||||
# 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
|
||||
# EVENTHUB_REPLICAS=N — больше нод
|
||||
```
|
||||
|
||||
Оставляет `traefik` + `eventhub×N`, гасит admin-ui / bot / observability / fallback.
|
||||
Оставляет `traefik` + `eventhub×N`.
|
||||
|
||||
## Дех-машина (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`:
|
||||
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
|
||||
# smoke (~1 мин)
|
||||
tsung -f test/tsung/eventhub_ift_smoke.xml start
|
||||
|
||||
# полный прогон (~6 мин фаз)
|
||||
tsung -f test/tsung/eventhub_ift.xml start
|
||||
```
|
||||
|
||||
Отчёт: `~/.tsung/log/<timestamp>/` → `tsung_stats.pl` / HTML.
|
||||
Отчёт: `~/.tsung/log/<timestamp>/`.
|
||||
|
||||
## После прогона
|
||||
|
||||
@@ -51,11 +62,10 @@ bash /opt/eventhub-ift/devops/scripts/ift-loadtest-restore.sh
|
||||
|
||||
## Настройка интенсивности
|
||||
|
||||
В `eventhub_ift.xml` блок `<load>`: `interarrival` (сек между стартами пользователей) и `duration` фаз.
|
||||
`thinktime` — **секунды** (не мс).
|
||||
В `eventhub_ift.xml` блок `<load>`: `interarrival` и `duration` фаз.
|
||||
`thinktime` — **секунды**.
|
||||
|
||||
## Что сознательно убрано из hot path
|
||||
## Замечания
|
||||
|
||||
- dummy `/v1/refresh`
|
||||
- reports / tickets (шум модерации)
|
||||
- завышенные thinktime (старый `eventhub_tsung.xml`)
|
||||
- Каждый VU делает admin login — это нагрузка и на admin-api; при необходимости позже вынести общий admin JWT в csv.
|
||||
- Из hot path убраны: dummy refresh, reports/tickets, завышенные thinktime старого `eventhub_tsung.xml`.
|
||||
|
||||
Reference in New Issue
Block a user