initial commit
This commit is contained in:
commit
c260d7bab8
235 files changed
+49786
No files matched your search
@@ -0,0 +1,63 @@
|
||||
# Проверка 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.
|
||||
Reference in new issue
Block a user