ролей, членства и ограниченной истории без MAM. Изменение фиксируется до публикации ответа; при ошибке записи состояние комнаты откатывается. - Crash recovery использует последнее сохранённое поколение после SIGKILL, включая временные комнаты. Heartbeat обновляет живое членство; ожидающие записи сохраняют исходный deadline через повторные перезапуски. `muc_recovery_grace_period`: по умолчанию 300 секунд, пределы 1..604800. - Подтверждённые выходы, смена nick, ролей и политик комнаты не заменяются старой записью восстановления. Native config/state остаются экспортом для Prosody; согласованное восстановление Rust использует собственный sidecar. - Исправлены MUC probe, неизвестные типы presence, вход без MUC `<x/>`, ошибки доставки и статус 333. Обычные presence extensions сохраняются в живом обмене; поддельная MUC identity фильтруется. `subject` вместе с `body` либо `thread` не изменяет тему комнаты. - Подключены `muc_max_rooms`, `restrict_room_creation`, политики регистрации и зарегистрированного nick, `muc_tombstone_expiry`; добавлены встроенные административные ad-hoc команды уничтожения комнат и изменения affiliation. - Hub сохраняет resumable XEP-0198 сессии, счётчики и очередь. Resume после перезапуска доступен на новом TLS/SASL-транспорте через legacy SASL и SASL2. Действующие приватные SM-записи восстанавливают логические сессии и MUC до открытия listeners: offline-доставка попадает в очередь, синтетический join и история повторно не отправляются. SM resume не требует дополнительной available presence; без SM восстановление MUC требует новой аутентификации точного полного JID и available presence либо явного MUC-входа. Входящий handled-счётчик обновляется после обработки. Сокеты TCP/TLS не сохраняются; неопределённая сетевая отправка допускает повторную доставку. - Известные встроенные MUC-возможности Prosody отображаются на Rust-реализацию. Произвольные Lua/community-модули не исполняются; неизвестные явно включённые MUC-модули отклоняются при запуске. Общие и host `modules_disabled` учитываются для vCard и occupant-id. Порядок восстановления, ограничения хранения и отката на Prosody: [docs/MUC-RECOVERY.md](docs/MUC-RECOVERY.md). Проверка: 293 Rust tests, Clippy/fmt/release, полный сетевой прогон, 500 TLS MUC+SM ресурсов с SIGKILL/resume и native reference — успешно. Подробности: [docs/VALIDATION-0.8.0.md](docs/VALIDATION-0.8.0.md).
51 lines
2.7 KiB
Bash
Executable File
51 lines
2.7 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# All runtime checks below create isolated data and use loopback listeners.
|
|
set -euo pipefail
|
|
project_dir=$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." && pwd)
|
|
cd -- "$project_dir"
|
|
cargo fmt --check
|
|
cargo test --locked
|
|
cargo clippy --locked --all-targets -- -D warnings
|
|
cargo build --release --locked
|
|
python3 scripts/integration_xmpp.py
|
|
python3 tests/sasl_network.py --spawn --hash sha1
|
|
python3 tests/sasl_network.py --spawn --hash sha256
|
|
python3 tests/android_sasl_network.py target/release/rust-xmpp
|
|
python3 tests/logging_network.py target/release/rust-xmpp
|
|
python3 tests/sasl_retry_network.py target/release/rust-xmpp
|
|
python3 tests/sasl_web_network.py --binary target/release/rust-xmpp
|
|
python3 tests/wss_interop.py --binary target/release/rust-xmpp
|
|
python3 tests/http_proxy_paths_network.py --binary target/release/rust-xmpp
|
|
python3 tests/http_altconnect_network.py --binary target/release/rust-xmpp
|
|
python3 tests/sasl2_bind.py target/release/rust-xmpp
|
|
python3 tests/sasl2_cached_inline.py target/release/rust-xmpp
|
|
python3 tests/gajim_discovery_network.py target/release/rust-xmpp
|
|
python3 tests/sasl2_resume.py target/release/rust-xmpp
|
|
python3 tests/push_discovery.py target/release/rust-xmpp
|
|
python3 tests/pep_client_network.py target/release/rust-xmpp
|
|
python3 tests/pep_order_network.py target/release/rust-xmpp
|
|
python3 tests/pep_notifications_network.py target/release/rust-xmpp
|
|
python3 tests/preauth_network.py target/release/rust-xmpp
|
|
python3 tests/muc_restart_network.py target/release/rust-xmpp
|
|
python3 tests/muc_crash_network.py target/release/rust-xmpp
|
|
python3 tests/sm_restart_network.py target/release/rust-xmpp
|
|
python3 tests/resource_rebind.py target/release/rust-xmpp
|
|
python3 scripts/integration_http.py
|
|
python3 scripts/integration_http.py --custom-upload-path
|
|
python3 tests/upload_multi_network.py --binary target/release/rust-xmpp
|
|
python3 tests/upload_s3_network.py target/release/rust-xmpp
|
|
python3 tests/upload_migration_network.py target/release/rust-xmpp
|
|
# Opt-in real object-store run: default payload is 10 GiB, not a fixture.
|
|
if [[ -n ${MINIO_BINARY:-} ]]; then
|
|
python3 tests/upload_minio_network.py --binary target/release/rust-xmpp --minio "$MINIO_BINARY"
|
|
fi
|
|
if [[ ${XMPP_LOAD_CHECK:-0} == 1 ]]; then
|
|
python3 scripts/load_smoke.py --clients 500 --accounts 100 --rounds 10 --message-rounds 10 --archive
|
|
python3 tests/muc_sm_load_network.py --binary target/release/rust-xmpp --clients 500
|
|
fi
|
|
if [[ -n ${PROSODY_REFERENCE_SOURCE:-} ]]; then
|
|
RUSTUP_TOOLCHAIN=${RUSTUP_TOOLCHAIN:-1.99.1} scripts/prosody_compat/verify.sh \
|
|
"$PROSODY_REFERENCE_SOURCE" "${PROSODY_REFERENCE_LUA:-lua5.4}"
|
|
PROSODY_SOURCE="$PROSODY_REFERENCE_SOURCE" PROSODY_LUA="${PROSODY_REFERENCE_LUA:-lua5.4}" scripts/native-federation.sh
|
|
fi
|