сообщения больше не выполняется полный scan/rewrite архива для expiry. Очистка остаётся в maintenance и перед MAM-запросами; append и crash checkpoint до fanout сохранены. - Неизменённые native config/persistent index не перезаписываются при каждом сообщении. Удалённые файлы восстанавливаются, ошибки экспорта повторяются. - CSI больше не сохраняет SM snapshot при отсутствии изменения durable очереди. Изменённая очередь сохраняется до отправки; при ошибке записи очередь откатывается. - Личные сообщения, IQ и входящая федерация к аккаунтам больше не захватывают общий MUC mutex, ожидая несвязанную работу с комнатными архивами. - Добавлены регрессии native exports/archive scanning/CSI rollback и реальный TLS latency check в verify-local.sh, автоматически включённый и в CI. Измерения и границы подтверждения: [docs/MESSAGE-LATENCY.md](docs/MESSAGE-LATENCY.md). Результаты итогового прогона: [docs/VALIDATION-0.8.1.md](docs/VALIDATION-0.8.1.md). - Личные сообщения и SM ACK больше не ждут сетевую отправку push. Уведомления отправляются через очередь1024 с максимум8параллельных маршрутов; worker и его задачи отменяются при завершении serve. Ошибки очереди/маршрута логируются. - Offline сообщение сохраняется до публикации push, чтобы проснувшийся клиент мог сразу получить его. Подтверждена очередь при первом TLS stream push gateway. - По умолчанию CSI считает важными bodyless OMEMO legacy/2, delivery receipts и chat markers. Явный список `csi_important_payloads` заменяет расширенные defaults. Низкоприоритетный headline по-прежнему буферизуется. Policy обновляется и при SM resume. - Выбор адресатов и carbons фильтрует владельцев до захвата session mutex; зависшая сессия чужого аккаунта не задерживает этот путь. Duplicate SM ACK без изменения durable counters/queue не переписывает snapshot. - Bind2 и MAM metadata IQ читают только первый/последний native record вместо сканирования всей истории. Индекс не требуется; recovery/лимиты записи сохранены. - Добавлен `message-processing-slow`: обработка message дольше250мс, поля duration_ms/route, без payload/токенов. Это время обработки сервером, не peer receipt. - Новые сетевые регрессии включены в verify-local.sh/GitHub CI. Причины, изменение CSI policy, измерения и ограничения: [docs/PERSONAL-MESSAGE-LATENCY.md](docs/PERSONAL-MESSAGE-LATENCY.md).
56 lines
3.5 KiB
Bash
Executable File
56 lines
3.5 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/bind2_archive_latency_network.py --binary target/release/rust-xmpp --records 10000 --samples 2 --output /tmp/bind2-archive-latency.json
|
|
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/push_latency_network.py --binary target/release/rust-xmpp --recipient hibernating --output /tmp/push-latency.json
|
|
python3 tests/push_latency_network.py --binary target/release/rust-xmpp --recipient offline --output /tmp/push-offline-latency.json
|
|
python3 tests/personal_message_latency_network.py --binary target/release/rust-xmpp --rounds 1 --history-records 1000 --roster-sizes 0 --backlog 30 --csi-dwell 0.1 --output /tmp/personal-message-latency.json
|
|
python3 tests/message_latency_network.py --binary target/release/rust-xmpp --rounds 3 --history-records 0 10000 --output /tmp/xmpp-message-latency.json
|
|
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
|