64 lines
5.8 KiB
Markdown
64 lines
5.8 KiB
Markdown
# Проверка 0.4.0
|
||
|
||
Проверено 2026-10-20 в Linux x86_64, Rust 1.99.1. После всех изменений
|
||
артефакты самого проекта удалены через `cargo clean -p rust-xmpp`;
|
||
сборка и проверки выполнены заново. Старый отчёт сохранён отдельно в
|
||
VALIDATION-0.3.0.md. Машинные результаты находятся в validation-results.json.
|
||
|
||
| Проверка | Результат |
|
||
|---|---|
|
||
| `cargo test --locked` | 148 passed, 0 failed, 8 ignored |
|
||
| `cargo clippy --locked --all-targets -- -D warnings` | Успешно, без предупреждений |
|
||
| `cargo fmt --check` | Успешно |
|
||
| `cargo build --release --locked` | Успешно |
|
||
| Native storage/auth oracle | Оригинальная Prosody читает и изменяет Rust данные и пароли SHA-1/SHA-256; Rust читает результат |
|
||
| Native PEP, MUC/MAM, CSI | Оригинальные модули работают с тестовыми данными Rust; правила CSI сверяются с оригиналом |
|
||
| Native push body lookup | Оригинальный util.stanza подтверждает исключение foreign namespace и вложенного extension body |
|
||
| Native federation | Настоящая Prosody cafd74b9c5ea обменивается сообщениями с Rust по двум TCP STARTTLS + SASL EXTERNAL соединениям; trust и identity включены |
|
||
| Большой архив | Потоковое чтение архива больше 128 MiB, отдельный ignored test |
|
||
| TCP integration | Контакты/подписки, IQ routing, CSI, MAM, блокировки, OMEMO PEP, MUC, offline, SM resume и SIGTERM |
|
||
| Offline/routing regression | Отсутствующий ресурс использует bare-JID fallback; no-permanent-store доставляется offline и исключается из MAM; bodyless receipt доставляется; offline headline не создаёт ошибку |
|
||
| SASL network SHA-1/SHA-256 | Независимый SCRAM, SASL1/SASL2, SSDP, подпись сервера, неверный пароль |
|
||
| SASL2 Bind2 | Канонический модуль, inline SM/CSI/Carbons/MAM, tag/resource privacy, malformed/auth failures, same UUIDv4 replacement и изоляция аккаунтов |
|
||
| WSS/HTTPS BOSH/upload | Авторизация, bind, CSI, namespaces, контакты, сообщения, upload PUT/GET/reuse |
|
||
| BOSH disconnected retry | Настоящий TCP reset до ответа; RID повторяется во время обработки и после неё, stanza выполняется однократно |
|
||
| Data directory lock | Межпроцессный отказ, тот же inode через symlink, освобождение guard и сохранность существующих файлов |
|
||
| Shell/Python syntax | Проверено для новых/изменённых сценариев |
|
||
|
||
Из восьми ignored tests отдельно успешно выполнены семь: пять native
|
||
storage/module checks, federation с настоящей Prosody и большой архив.
|
||
Оставшийся AF_UNIX admin socket test попытались выполнить: среда запретила
|
||
bind с `Operation not permitted`. Это не проверка готовности Unix socket
|
||
на целевом Docker/хосте. In-memory admin protocol tests проходят обычно.
|
||
|
||
## Нагрузочные сценарии
|
||
|
||
Оба сценария используют отдельное тестовое хранилище, 100 настоящих тестовых
|
||
аккаунтов и 500 TLS-соединений с разными ресурсами. Авторизация — TLS + PLAIN.
|
||
Проверяются адреса отправителей, IDs и содержимое направленных сообщений.
|
||
|
||
- Без MAM: 100 раундов ping и сообщений — 50 000 ping и 50 000 доставок.
|
||
- С MAM: 10 раундов — 5000 ping, 5000 доставок и ровно 10 000 записей
|
||
в архивах отправителей/получателей, распределённых между 100 файлами.
|
||
|
||
Сырые задержки, CPU/RSS и количество дескрипторов записаны в JSON.
|
||
Это короткие loopback-прогоны на машине разработки; они не подтверждают
|
||
длительную работу полного набора модулей или отсутствие утечек памяти.
|
||
MUC/PEP/push не нагружаются этим сценарием на всех 500 соединениях.
|
||
|
||
## Воспроизведение
|
||
|
||
```bash
|
||
bash scripts/verify-local.sh
|
||
python3 scripts/load_smoke.py --clients 500 --accounts 100 --rounds 100 --message-rounds 100
|
||
python3 scripts/load_smoke.py --clients 500 --accounts 100 --rounds 10 --message-rounds 10 --archive
|
||
```
|
||
|
||
Для native проверок нужны присланные исходники Prosody и Lua dependencies:
|
||
инструкции в scripts/prosody_compat/README.md. Docker в среде разработки
|
||
отсутствует: образ, UID/GID и Compose на целевом хосте не запускались.
|
||
Не проверены реальные Monal/Conversations/Gajim, APNs/FCM push-шлюз,
|
||
рабочие сертификаты/данные, загрузка 10 GiB, длительная нагрузка и откат
|
||
конкретной установки. Функциональные ограничения остаются в COMPATIBILITY.md.
|
||
Это экспериментальный сервер, а не подтверждённая полная замена Prosody.
|