- remove Java plugins (velocity/paper), dashboard, all MC-specific code
(handshake, death_code, varint, hostname-HMAC); available in history pre-v0.2
- merge crates/* into one package with src/bin/{rampart,rampart-manager,rampart-cli}
- ProtocolHandler trait + registry (no implementations yet), universal PoW kept
- XDP: universal L3/L4 filter (xdp/core/) + pluggable hook API (xdp/hooks/),
fix IPv6 saddr bug; clang build verified
- docs: bilingual knowledge base (docs/kb/: attacks x4, defense-levels,
practice x3), rewrite README/architecture for universal concept
- TODO.md v4.0: <=300-line module limit, competitor benchmark section (ref/)
- deploy/CI/docs cleanup: no MC references, new binary names
cargo build/clippy(-D warnings)/test green (55 tests)
93 lines
2.8 KiB
Markdown
93 lines
2.8 KiB
Markdown
# Testing - Rampart
|
||
|
||
> Как тестировать: unit, integration, нагрузочное, DDoS simulation.
|
||
|
||
---
|
||
|
||
## 1. Unit и integration тесты (Rust)
|
||
|
||
```bash
|
||
cargo test # все тесты
|
||
cargo test --test config_parse
|
||
cargo test -- --nocapture # с выводом
|
||
```
|
||
|
||
Существующие наборы (tests/):
|
||
|
||
| Тест | Что покрывает |
|
||
|------|---------------|
|
||
| `config_parse` | Парсинг и валидация единого конфига (src/config) |
|
||
| `filter_logic` | Blacklist, rate limit, geo-фильтры |
|
||
| `pow_roundtrip` | Выдача/решение/проверка PoW challenge |
|
||
| `protocol_registry` | Реестр протокольных плагинов |
|
||
|
||
---
|
||
|
||
## 2. Статический анализ
|
||
|
||
```bash
|
||
cargo fmt --all --check
|
||
cargo clippy --all-targets --all-features -- -D warnings
|
||
cargo deny check
|
||
```
|
||
|
||
XDP: smoke-check компиляции BPF-программы:
|
||
|
||
```bash
|
||
clang -O2 -g -target bpf -c xdp/core/universal_filter.c -o /tmp/universal_filter.o
|
||
```
|
||
|
||
---
|
||
|
||
## 3. Локальный integration-стенд (Docker)
|
||
|
||
```bash
|
||
bash deploy/test/run_test.sh
|
||
```
|
||
|
||
Поднимает backend-stub (TCP echo), edge (`rampart` с config.test.toml) и
|
||
attacker-контейнер. Сценарии — в [deploy/test/README.md](../deploy/test/README.md).
|
||
|
||
---
|
||
|
||
## 4. Нагрузочное тестирование
|
||
|
||
### Много-IP TCP flood на VDS (edge-only)
|
||
|
||
`deploy/test/stress/` — полный цикл без Redis/ClickHouse: edge-контейнер с
|
||
stub-бэкендом (socat echo) + attacker-контейнер со 100 source IP.
|
||
`flood.py` шлёт чистые TCP-соединения (connect / slowloris / keepalive),
|
||
во время флуда параллельно подключаются generic TCP-клиенты (`legit.py`),
|
||
замеряющие RTT.
|
||
|
||
```bash
|
||
git clone https://github.com/loki5512344/rampart.git && cd rampart
|
||
cargo build --release --bin rampart
|
||
cd deploy/test/stress && bash run-stress.sh
|
||
```
|
||
|
||
Фазы: A — сырая пропускная способность (лимиты сняты), B — защита (per-IP rate
|
||
limit + reputation bans), C — SYN flood hping3, D — активные соединения.
|
||
|
||
### tcpkali / hping3
|
||
|
||
```bash
|
||
tcpkali --connections 1000 --connect-rate 5000 --duration 60s EDGE_IP:25565
|
||
hping3 -S --flood -p 25565 --rand-source EDGE_IP # только на свои серверы!
|
||
```
|
||
|
||
---
|
||
|
||
## 5. Метрики для проверки во время теста
|
||
|
||
```bash
|
||
curl -s http://localhost:9090/metrics | grep rampart_
|
||
# rampart_connections_total{result="allowed|blocked"}
|
||
# rampart_rate_limit_hits
|
||
# rampart_pow_challenges_total{result=...}
|
||
# rampart_attack_status
|
||
```
|
||
|
||
---
|
||
|
||
*Версия: 2.0 | Август 2026*
|