26 lines
1.9 KiB
Markdown
26 lines
1.9 KiB
Markdown
# Нагрузочный тест Hub
|
||
|
||
Цель текущего теста — постоянно проверять, что один Control Hub корректно принимает штатную нагрузку от 100 Node и сохраняет семантику idempotency. Это регрессионный CI-тест, а не синтетический рейтинг производительности конкретного процессора.
|
||
|
||
## Сценарий
|
||
|
||
`HubLoadTests.OneHubAcceptsConcurrentHeartbeatsFromOneHundredNodes` выполняет следующие действия:
|
||
|
||
1. создаёт отдельную SQLite-базу Hub;
|
||
2. регистрирует 100 Node с разными сертификатами;
|
||
3. отправляет от всех Node три одновременные волны heartbeat;
|
||
4. ограничивает каждую волну штатным интервалом Agent в 30 секунд;
|
||
5. повторяет последнюю волну с теми же idempotency key;
|
||
6. проверяет 100 online-узлов, ровно 300 metric samples и неизменные sequence при replay.
|
||
|
||
Таким образом CI проверяет худший случай синхронного всплеска вместо распределения heartbeat по 30-секундному окну.
|
||
|
||
## Запуск
|
||
|
||
```bash
|
||
dotnet test tests/ServerMonitorManager.Control.Tests/ServerMonitorManager.Control.Tests.csproj \
|
||
--configuration Release \
|
||
--filter "Category=Load"
|
||
```
|
||
|
||
Тест охватывает конкурентный путь Control/SQLite. Реальные WireGuard, nftables, пропускная способность сети, TLS handshake и перезагрузка хоста относятся к отдельному инфраструктурному end-to-end тесту установщика и не имитируются этим сценарием.
|