Files
rust-xmpp/docs/VALIDATION-0.4.0.md
2026-10-20 15:59:55 +07:00

64 lines
5.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Проверка 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.