# Load Testing (k6)

Готовый скрипт: `scripts/load/portal_k6.js`.

## 1) Установка k6

Ubuntu/Debian:

```bash
sudo gpg -k
sudo gpg --no-default-keyring --keyring /usr/share/keyrings/k6-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C5AD17C747E3415A3642D57D77C6C491D6AC1D69
echo "deb [signed-by=/usr/share/keyrings/k6-archive-keyring.gpg] https://dl.k6.io/deb stable main" | sudo tee /etc/apt/sources.list.d/k6.list
sudo apt update && sudo apt install -y k6
```

## 2) Smoke тест (быстрая проверка)

```bash
k6 run scripts/load/portal_k6.js \
  -e BASE_URL=https://stend.4mont.ru \
  -e USERNAME=ruslan \
  -e PASSWORD='YOUR_PASSWORD' \
  -e SERVICE_SLUGS=vmmanager,termidesk \
  -e PROFILE=smoke
```

## 3) Нормальная нагрузка

```bash
k6 run scripts/load/portal_k6.js \
  -e BASE_URL=https://stend.4mont.ru \
  -e USERS_CSV='user1:pass1;user2:pass2;user3:pass3' \
  -e SERVICE_SLUGS=vmmanager,termidesk,sayt-mont5 \
  -e PROFILE=load \
  -e HEARTBEATS=3 \
  -e THINK_TIME=1
```

## 4) Стресс

```bash
k6 run scripts/load/portal_k6.js \
  -e BASE_URL=https://stend.4mont.ru \
  -e USERS_CSV='user1:pass1;user2:pass2;user3:pass3;user4:pass4' \
  -e SERVICE_SLUGS=vmmanager,termidesk,sayt-mont5 \
  -e PROFILE=stress
```

## 5) Ключевые параметры

- `BASE_URL` — адрес портала.
- `USERNAME`/`PASSWORD` — одиночный пользователь.
- `USERS_CSV` — набор пользователей `u1:p1;u2:p2`.
- `SERVICE_SLUGS` — список slug через запятую.
- `PROFILE` — `smoke|load|stress`.
- `HEARTBEATS` — сколько `touch` в итерации.
- `THINK_TIME` — пауза между итерациями.
- `CLOSE_SESSION=0` — не закрывать сессию в конце итерации.

## 6) Что смотреть в результате

- `http_req_duration` (`p95/p99`)
- `http_req_failed`
- `flow_errors`
- `open_success`, `open_rejected`, `limit_redirects`, `touch_rejected`

## 7) Важное

- Запускайте сначала `smoke`, потом `load`, и только затем `stress`.
- Для реалистичного теста используйте несколько пользователей, иначе упретесь в лимиты по сессиям одного пользователя.
