guard/docs/testing.md
loki5512344 15f474486a
feat!: universal redesign — drop Minecraft stack, single-crate architecture
- 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)
2026-08-24 01:50:22 +02:00

2.8 KiB
Raw Permalink Blame History

Testing - Rampart

Как тестировать: unit, integration, нагрузочное, DDoS simulation.


1. Unit и integration тесты (Rust)

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. Статический анализ

cargo fmt --all --check
cargo clippy --all-targets --all-features -- -D warnings
cargo deny check

XDP: smoke-check компиляции BPF-программы:

clang -O2 -g -target bpf -c xdp/core/universal_filter.c -o /tmp/universal_filter.o

3. Локальный integration-стенд (Docker)

bash deploy/test/run_test.sh

Поднимает backend-stub (TCP echo), edge (rampart с config.test.toml) и attacker-контейнер. Сценарии — в 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.

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

tcpkali --connections 1000 --connect-rate 5000 --duration 60s EDGE_IP:25565
hping3 -S --flood -p 25565 --rand-source EDGE_IP   # только на свои серверы!

5. Метрики для проверки во время теста

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