initial commit

This commit is contained in:
wt committed 2026-10-20 15:59:55 +07:00
commit c260d7bab8
235 files changed
+49786

No files matched your search

+4
View File
@@ -0,0 +1,4 @@
target
demo
bin
.git
+4
View File
@@ -0,0 +1,4 @@
/target/
*.local.*
/demo/
/bin/
+32
View File
@@ -0,0 +1,32 @@
# 0.6.0 — переподключение и восстановление сессий
Исправлена причина bind conflict при повторном входе с тем же resource:
раньше runtime всегда отклонял новый bind, включая ресурс hibernating SM.
Теперь используется native `conflict_resolve`: default/kick_old заменяет
старый ресурс, kick_new возвращает conflict, increment выбирает свободный
суффикс #N, random — независимый UUID. Ответ содержит фактически выданный JID.
Одинаковая политика применяется к обычному bind и Bind2.
Старый transport получает stream conflict/close; его cleanup не удаляет новый
ресурс. Замена отзывает прежний resume token. Очередь и счётчики SM переносятся
только при успешном resume, а не при новой привязке ресурса.
SM resume допускает ещё живое старое TCP-соединение, проверяет владельца,
токен и h до takeover. Восстановленное состояние получает отдельный Arc:
старый обработчик не может изменять его acknowledgements, очередь и CSI.
Добавлен SASL2 inline SM resume. Resumed помещается в success с полным JID,
затем повторяются неподтверждённые stanzas. Успешный resume подавляет Bind2;
при неуспехе остаётся Bind2/обычный bind fallback. SM рекламируется в SASL2
inline только при включённом smacks.
Исправлены teardown-гонки BOSH terminate и WebSocket close: транспорт даёт
engine завершить cleanup перед fallback abort. Внезапный сетевой обрыв
остаётся негрейсфул, сохраняя возможность SM resume.
Регрессии: tests/resource_sessions.rs, tests/resource_rebind.py,
tests/sasl2_resume.py, tests/http_transport.rs и scripts/integration_http.py.
Все сетевые fixtures используют отдельные конфиги и временные данные.
Не выполнена проверка на настоящем устройстве Monal/Conversations, рабочих
данных и APNs/FCM. Флаг --experimental и пределы docs/COMPATIBILITY.md остаются.
+30
View File
@@ -0,0 +1,30 @@
# 0.6.1 — Android SASL authentication
Исправлена воспроизводимая несовместимость с выбором channel binding в
Conversations при TLS 1.2. Раньше сервер рекламировал только tls-exporter
для обеих версий TLS. Android selector выбирает exporter только при TLS 1.3,
при TLS 1.2 без другого совместимого типа выбирает обычный SCRAM с GS2 y,,.
Сервер отклонял это как downgrade, а клиент видел not-authorized.
Добавлены tls-server-end-point на TLS 1.2/1.3 и exporter на TLS 1.3. Тип из
GS2 выбирается из фактически доступных на соединении; проверка binding и
proof не ослаблена. SSDP подписывает полный список объявленных типов.
Digest сертификата соответствует RFC5929: MD5/SHA1 заменяются SHA256;
SHA224/256/384/512, RSA/DSA/ECDSA и RSA-PSS поддержаны. Неизвестные алгоритмы,
EdDSA и неопределённые multi-hash варианты возвращают ошибку; произвольный
SHA256 fallback не применяется. TLS1.3 exporter остаётся доступен независимо
от возможности вычислить certificate binding.
Исправлен отдельный SSDP edge для WebSocket: при отсутствии CB-типа хеш
не должен содержать пустую CB-секцию с завершающим 0x1f. При явном отключении
всех PLUS-механизмов CB не рекламируется, обычный SCRAM с y,, допускается.
Отказы SCRAM оставляют безопасную диагностику mechanism/stage без credentials.
Добавлены независимые сетевые проверки Android selector, настоящего
TLS exporter, certificate binding, WSS SCRAM, SSDP и неправильного binding.
Старый 0.6.0 воспроизводит обе найденные ошибки; 0.6.1 проходит новые сценарии.
В latest monocles есть собственный fallback через n,, и обязательный SSDP;
поведение конкретной установленной версии на устройстве не проверено.
Исправления не доказывают, что любой not-authorized имел эту причину.
Рабочие пароли/данные не изменялись. Полная замена Prosody ещё не подтверждена.
+27
View File
@@ -0,0 +1,27 @@
# 0.7.0 — operational/authentication logging
Добавлен instance-owned logger с уровнями debug/info/warn/error, native-style
level maps, explicit sink ranges/sets, console/file, UTC millis, plain/JSON,
0600 append и сериализацией записей. SIGHUP переоткрывает ротируемые файлы,
сохраняя прежние дескрипторы при ошибке. Native syslog/произвольные plugin
sinks и полное hot reload не реализованы.
TCP/HTTP XMPP transports больше не теряют все ошибки без журнала. Единый ID
прослеживает TLS, SASL features/attempt/challenge, account lookup, точный класс
rejection, auth success, bind/resume и disconnect. Добавлены startup version,
SM hibernation/expiry, resource replacement, maintenance и основные входящие
S2S события. Секреты и XML переписки не передаются в logger; есть фильтр sensitive
keys и escaping. Подробная инструкция и таблица причин — docs/LOGGING.md.
Исправлены подтверждённые различия: PLAIN нормализует authentication identity
через SASLprep/nodeprep и использует canonical owner; authorization identity
проверяется после нормализации. SCRAM abort отвечает aborted, новая auth
может перезапустить обмен в пределах лимита попыток. Отказы proof и nonce
получили отдельные внутренние причины; wire authentication failure остаётся
обобщённым, чтобы не раскрывать внешнему клиенту состояние account store.
Новые сетевые регрессии проверяют 8 сценариев журналирования и SIGHUP,
20 случаев normalizing/retry в TLS1.2/1.3 и SASL1/2, плюс logger unit tests.
Оставшийся отказ конкретных Conversations/monocles на устройстве не воспроизведён;
для него теперь можно получить server-side reason и этап. Полная замена Prosody
не подтверждена, остальные ограничения перечислены в docs/COMPATIBILITY.md.
+35
View File
@@ -0,0 +1,35 @@
# 0.7.1 — cached SASL2 inline fallback and Gajim discovery
По предоставленному журналу TLS завершался успешно, а SASL2 запрос отклонялся
inline validator до проверки SCRAM/PLAIN credentials. В исходниках обоих Android
клиентов Quickstart использует сохранённую доступность inline Bind2 и может
посылать bind после того, как текущая конфигурация перестала его объявлять.
Сервер 0.7.0 возвращал malformed-request для отключённого Bind2. Дополнительная
ошибка регистра в mapper скрывала `bind2 is disabled` за invalid-inline-fields.
Теперь отключённые optional Bind2/inline SM requests игнорируются, обычная
проверка credentials выполняется, и сервер возвращает post-auth features для
legacy bind. Модуль Bind2 остаётся явно включаемым: ложной рекламы capability
нет. Реализованный путь соответствует проверенному fallback клиентского кода.
Malformed requests включённых расширений по-прежнему отклоняются; wrong password
не принимается. События sasl-attempt/inline-options доступны до validation,
ignored extension отмечается inline-request-ignored; причины parser errors уточнены.
Добавлены host/account disco features XEP-0258 и XEP-0077, которые проверяют
SecurityLabels/Register modules Gajim. Register discovery означает также
смену пароля/отмену регистрации: allow_registration=false по-прежнему запрещает
создание новых аккаунтов, но не управление своим существующим аккаунтом.
Security label catalog отражает requested @to в обеих версиях. Для точной
policy/classifications схемы предоставленного конфига добавлен catalog-only
adapter: выбирает default_policy, показывает classification names/display/default;
не реализует ACL или обязательное enforcement. Неизвестные policy fields
отклоняются. Это документированное расширение относительно supplied mod_seclabels.
Logger объединяет одинаковые destinations и маски уровней: перекрывающиеся
console правила больше не дублируют строки. Разные файлы сохраняют свои уровни.
Старый cached-inline отказ воспроизведён, новый fallback проверен реальным TLS,
SCRAM-SHA-1/PLAIN, SSDP on/off, Bind2/SM flags и bind+ping. Gajim predicates и
фактические catalog/password/create/delete операции проверены по TLS.
Реальные Android/Gajim приложения в этой среде не запускались; полный runtime
остаётся experimental с ограничениями docs/COMPATIBILITY.md.
+46
View File
@@ -0,0 +1,46 @@
# 0.7.2 — PEP operations and diagnostics
Предоставленный INFO-журнал версии0.7.1 подтверждает успешный SCRAM login и
resource bind Conversations/monocles. Он не содержит PubSub IQ: конкретный
production отказ PEP из него определить нельзя. Диагноз «данные OMEMO повреждены»
по такому журналу не устанавливается.
Исправлены найденные при проверке совместимости дефекты:
- IQ error теперь возвращает from исходного to и исходный payload, как требуется
для ответа от имени bare-аккаунта. Отсутствующие PEP узел/элемент по-прежнему
возвращают item-not-found, что OMEMO-клиент обрабатывает как повод публикации.
- Эффективные notification defaults материализуются при обработке существующих
узлов, включая ранее сохранённые конфигурации с пропущенными полями.
Publish-options больше не сообщает ложный precondition-not-met для опций,
которые доставка уже считала включёнными. Реальное несовпадение по-прежнему
возвращает conflict/precondition-not-met; чужое изменение узла запрещено.
- INFO событие pubsub-iq-result показывает action, node_kind, status, condition,
precondition_not_met, количество запланированных deliveries; disco дополнительно
показывает pep_identity, persistent_items, publish_options. Никаких payload,
node suffix, device/item/IQ IDs или ключевых данных. deliveries не является
подтверждением получения телефоном. iq-dispatch-failed сообщает безопасный
io_kind для ошибок хранения/модулей, не печатая их исходный текст.
Добавлены сценарии первого OMEMO запуска, no-to публикации avatar/devices/bundle,
owner config recovery, TLS/restart persistence, native-like omitted defaults,
filtered caps events и проверка redaction. Это проверки wire/storage, не запуск
Android приложений или криптографическая проверка тестовых bundle bytes.
DNSSEC: публичные DS/DNSKEY wthome.ru на дату проверки отсутствуют. Инструкция
подписания DNS-зоны и DS у регистратора — docs/DNSSEC.md. Это отдельная задача
оператора DNS, не capability XMPP и не исправление в этой сборке.
Полная замена Prosody пока не подтверждена: docs/COMPATIBILITY.md.
Проверка мигрированных форм выявила и исправила несовместимость0.7.1:
notification_type, itemreply и native payload_type выдавались в форме, но
не принимались parser при повторной отправке. Теперь payload_type соответствует
wire pubsub#type; notification_type normal/headline и itemreply
none/owner/publisher валидируются. Как в native PEP, уведомления PEP сохраняют
headline; standalone PubSub учитывает normal/headline. itemreply=publisher
включает bare publisher в чтение и уведомления, none/owner не раскрывают его
(поведение предоставленного native handler). Поддержаны publish_model
open/subscribers с проверками блокировок/outcast, без изменения owner-only
прав на create/configure/retract. Неизвестные enum значения отвергаются.
Baseline regression на исходниках ZIP0.7.1 воспроизводит rejected whole-form
submission и ложные default preconditions; патч проходит эти сценарии.
+38
View File
@@ -0,0 +1,38 @@
# 0.7.3 — newest-first PEP item retrieval
Журнал0.7.2 показывает успешные SASL/bind, own-account PEP discovery,
чтение и публикацию OMEMO. Ошибок на OMEMO IQ в приложенном фрагменте нет;
есть ошибки avatar metadata у отдельных запросов, но без scope они не
доказывают отказ на собственном аккаунте. Пользователь подтвердил полное
завершение процессов Android-приложений; прежний latch нельзя принимать
за установленную причину.
Найден и воспроизведён дефект выдачи нескольких сохранённых элементов:
сначала выбирались последние N, затем ответ разворачивался ещё раз и
возвращал старый элемент первым. Native Prosody archive_itemstore возвращает
новые первыми. Проверенный monocles IqParser.getItem берёт только первый item;
если старый item содержит пустой список, клиент видит пустой список, хотя
в более позднем item есть устройства и весь IQ имеет type=result.
В0.7.3 устранено лишнее разворачивание ответа PEP/PubSub items. Поиск по ID,
выбор последних N, права доступа, лимиты хранения и сами данные сохраняются.
Native oracle с настоящим mod_pep подтвердил current,old на тех же данных;
сетевая проверка повторяет первый-item parser, замену current и restart.
Regression на исходниках ZIP0.7.2 воспроизводит old,current и ошибку parser.
Уточнена безопасная INFO диагностика: target_scope отличает own-account,
other-account, server/resource/implicit/host-or-component. Для успешного
items result добавлены items_count, first_content_kind, first_device_count.
Имена пользователей/узлов/элементов/устройств и payload не добавляются в поля.
Это структурные счётчики, не криптографическая проверка OMEMO. Событие выдаётся
после local dispatch; ранние ветки routing могут не формировать его.
Наличие нескольких элементов и конкретное содержимое production узлов не
были доступны. Исправленный дефект — подтверждённый сценарий совместимости,
но не доказательство, что он единственный источник индикатора именно этого
устройства. Не внедряется неподтверждённая гипотеза двойного item wrapper:
предоставленный native archive хранит только payload, как и Rust.
DNSSEC повторно проверен публичными DS/DNSKEY запросами: нет Answer, AD=false.
Зона/DS у регистратора не менялись. Инструкция — docs/DNSSEC.md.
Полная замена Prosody пока не подтверждена: docs/COMPATIBILITY.md.
+39
View File
@@ -0,0 +1,39 @@
# 0.7.4 — Converse Origin, HTTP interfaces and PEP diagnostics
Пользователь подтвердил страницу Converse https://conversejs.wthome.ru/.
Исходный http_cors_override.websocket.origins разрешал только
https://wthome.ru. В изолированном TLS тесте исходная политика даёт101 для
wthome.ru и403 для реального Origin Converse; после добавления точного Origin
Converse получает101. examples/config.json и отдельный YAML fragment обновлены.
Рабочий конфиг на целевом сервере нужно изменить отдельно от сборки.
Wildcard разрешение Origin не добавляется; проверка TLS сохраняется.
Исправлено игнорирование http_interfaces/https_interfaces: раньше HTTP всегда
слушал0.0.0.0. Теперь учитывается настройка соответствующего протокола, fallback
к interfaces; * раскрывается в IPv4/IPv6, дубликаты убираются, IPv6 socket V6ONLY.
Тест HTTPS-only с глобальным interfaces127.0.0.1 и отдельным HTTPS ::1 подтверждает
обе привязки. INFO listener-ready показывает address/transport/route flags.
Добавлена диагностика HTTP с connection ID: TLS установление/отказ/таймаут,
фиксированный класс websocket/bosh/other, HTTP status, завершение. Ни URI,
query, Origin/header values, bodies, пароли или raw errors не печатаются.
Новый serve_router_logged сохраняет прежний serve_router API без logger.
Новый RFC7395 тест выявил настоящий дефект закрытия до SASL: stream close
разбирался как XML document и считался invalid-xml. Теперь закрытие отвечает
stream close, штатно завершает authenticate, затем закрывает WebSocket.
Проверены оба WS пути и browser token-list headers/subprotocol xmpp.
PEP: production0.7.3 own IQ replies содержат1 item и непустые списки1/2/6 устройств,
так что прошлый multi-item порядок не объясняет текущий случай. Нет доказанного
нового отказа сервера PEP и нет обещания исправления индикатора этим патчем.
Добавлены legacy/OMEMO2 distinction, valid_device_count/invalid_device_count
по inspected Android signed32 parsing и notification-generated content_present.
Синтетический TLS тест показывает: include_payload=false даёт пустое уведомление,
при этом IQ retrieval по-прежнему содержит устройства. Это проверка диагностики,
а не установленная production конфигурация. ID/XML/ключи в журнал не выводятся.
scripts/filter-android-pep-log.py печатает только фиксированные причины из
клиентского журнала и помогает определить фактическую ветку pepBroken.
DNSSEC повторно: DS/DNSKEY без Answer, AD=false; изменение DNS не выполнялось.
Полная замена Prosody всё ещё не подтверждена, см. COMPATIBILITY.md.
+13
View File
@@ -0,0 +1,13 @@
#0.7.5
- Настраиваемые HTTP-пути WS/BOSH/upload, HTTP Host/fallback и публичный URL
reverse proxy с префиксом.
- Доверенные proxy IP/CIDR, обработка X-Forwarded-For/Proto или RFC7239
Forwarded, безопасное игнорирование заголовков недоверенного peer.
- Проверка защищённости WS/BOSH на запросе, TLS termination без глобального
consider_*_secure; эффективный peer в серверной диагностике.
- Проверки кастомных маршрутов и loopback TLS reverse proxy; инструкция
docs/HTTP-PROXY.md.
Полная замена Prosody ещё не подтверждена; актуальные границы —
docs/COMPATIBILITY.md, результаты — docs/VALIDATION.md.
+14
View File
@@ -0,0 +1,14 @@
# 0.7.6
- MUC: hats, язык, политики PM/модераторских PM, presence broadcast по ролям,
дополнительные формы/дискавери и отключаемые vCard/occupant-id.
- История MUC без MAM; ограничения запроса истории и native последнее сообщение.
- MAM открытых комнат, forced archiving, presence records, optional totals,
очистка архива при уничтожении комнаты.
- Native occupant checkpoints persistent/temporary комнат при штатной остановке;
повторная аутентификация точного полного JID, проверка конфигурации и300-секундный
grace без активации недоступных адресатов. Состояние нескольких ресурсов.
- Защита серверных MUC identity/hats от клиентской подмены.
Подробные условия восстановления и отличия от native: docs/MUC-RECOVERY.md.
Полная взаимозаменяемость сервера пока не подтверждена.
+10
View File
@@ -0,0 +1,10 @@
# 0.7.7
- Встроенный http_altconnect: XRD/JRD host-meta discovery, CORS, HEAD/OPTIONS.
- Реклама включённых BOSH/WS, advertise_bosh/advertise_websocket и отключение
discovery отдельно от транспорта.
- Custom http_paths.altconnect, HTTP Host/fallback и публичный URL reverse proxy.
- Публичные href из конфигурации с предпочтением HTTPS; native HTTP fallback.
- Конфликты с transport routes и неправильные advertise-типы отвергаются.
Включение и пример reverse proxy — docs/HTTP-ALTCONNECT.md.
Generated
+2182
View File
File diff suppressed because it is too large. Load diff
+45
View File
@@ -0,0 +1,45 @@
[package]
name = "rust-xmpp"
version = "0.7.7"
edition = "2024"
description = "Experimental Rust XMPP server with Prosody-compatible storage"
license = "MIT"
[dependencies]
anyhow = "1"
mlua = { version = "0.12", features = ["lua54", "vendored", "serde"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
serde_yaml_ng = "0.10"
toml = "0.9"
glob = "0.3"
tokio = { version = "1", features = ["rt-multi-thread", "macros", "net", "io-util", "sync", "time", "signal", "fs"] }
tokio-rustls = { version = "0.26", default-features = false, features = ["ring", "tls12"] }
rustls-pemfile = "2"
roxmltree = "0.21"
base64 = "0.22"
sha1 = "0.10"
sha2 = "0.10"
hmac = "0.12"
pbkdf2 = "0.12"
hex = "0.4"
subtle = "2"
stringprep = "0.1"
uuid = { version = "1", features = ["v4"] }
chrono = { version = "0.4", default-features = false, features = ["std", "clock"] }
axum = { version = "0.8", features = ["ws"] }
futures-util = "0.3"
tokio-util = { version = "0.7", features = ["io"] }
http-body-util = "0.1"
hyper-util = { version = "0.1", features = ["server-auto", "tokio", "service"] }
socket2 = "0.6"
hickory-resolver = { version = "0.24", features = ["tokio-runtime", "system-config"] }
rustls-native-certs = "0.8"
[dev-dependencies]
tempfile = "3"
+17
View File
@@ -0,0 +1,17 @@
FROM rust:1.99.1-slim AS builder
WORKDIR /src
COPY Cargo.toml Cargo.lock ./
COPY src ./src
RUN cargo build --release --locked
FROM debian:trixie-slim
RUN apt-get update \
&& apt-get install -y --no-install-recommends ca-certificates gosu \
&& rm -rf /var/lib/apt/lists/*
COPY --from=builder /src/target/release/rust-xmpp /usr/local/bin/rust-xmpp
RUN ln -s /usr/local/bin/rust-xmpp /usr/local/bin/prosodyctl
COPY scripts/docker-entrypoint.sh /usr/local/bin/rust-xmpp-entrypoint
RUN chmod 0755 /usr/local/bin/rust-xmpp-entrypoint
WORKDIR /work
ENTRYPOINT ["rust-xmpp-entrypoint"]
CMD ["serve", "/etc/prosody/prosody.cfg.lua", "--experimental"]
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2026 Rust XMPP contributors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+199
View File
@@ -0,0 +1,199 @@
# Rust XMPP 0.7.7
Сервер на Rust, разрабатываемый для замены **Prosody 13.0 nightly 100,
cafd74b9c5ea** с предоставленными модулями. Читает существующий Lua-конфиг,
а также JSON, YAML/YML и TOML. Использует внутреннее файловое хранилище
Prosody: конвертация аккаунтов и истории для проверенных сценариев не нужна.
Nginx не требуется: HTTPS, WebSocket, BOSH и загрузка файлов обслуживаются
самим сервером; coturn остаётся отдельным сервисом.
Это работающая экспериментальная реализация, **полная взаимозаменяемость
ещё не достигнута**. Уже реализованы вход, сообщения, контакты, MAM, MUC,
PEP/pubsub, закладки, offline, carbons, SM, push, TLS-федерация и HTTP.
Точные ограничения перечислены в [docs/COMPATIBILITY.md](docs/COMPATIBILITY.md),
проверки — в [docs/VALIDATION.md](docs/VALIDATION.md).
Нестандартные HTTP-пути и TLS reverse proxy: [docs/HTTP-PROXY.md](docs/HTTP-PROXY.md).
Пример для слияния с действующим конфигом: `examples/reverse-proxy.fragment.yaml`.
MUC-расширения и условия восстановления участников: [docs/MUC-RECOVERY.md](docs/MUC-RECOVERY.md).
Встроенный http_altconnect: [docs/HTTP-ALTCONNECT.md](docs/HTTP-ALTCONNECT.md).
## Сборка и изолированный запуск
Нужны Rust 1.99.1 (rustup установит версию из `rust-toolchain.toml`),
C-компилятор и make. Для тестовых сертификатов и сетевых проверок нужны
OpenSSL CLI, Bash и Python 3; HTTP-тест дополнительно использует Python `websockets`.
Системные CA-сертификаты нужны для проверки удалённых серверов федерации.
Cargo.lock фиксирует зависимости; первая сборка требует их загрузки.
```bash
cd rust-xmpp
cargo build --release --locked
bash scripts/make-demo.sh
./target/release/rust-xmpp serve demo/config.toml --experimental
```
Demo слушает только `127.0.0.1:55222` и создаёт отдельное хранилище `demo/data`.
Аккаунты: `alice@localhost / alice-test-only` и
`bob@localhost / bob-test-only`. Для ручного клиента используйте STARTTLS
и доверьте сгенерированному `demo/cert.pem`. `make-demo.sh` не перезаписывает
существующий demo. Сертификаты и аккаунты в исходный архив не включены.
## Существующий конфиг без редактирования
```bash
./target/release/rust-xmpp check-config /etc/prosody/prosody.cfg.lua
./target/release/rust-xmpp serve /etc/prosody/prosody.cfg.lua --experimental
```
`check-config` проверяет разбор и базовые типы; ограничения runtime проверяются
при `serve`. Существующий Lua-файл читается непосредственно, преобразовывать
его в другой формат не требуется. Процессу нужны права на сертификат, ключ,
каталог данных и Unix admin socket. Используйте тот же UID/GID, что и Prosody,
чтобы сохранять доступ при возврате к нему.
Первую проверку выполняйте на копии данных с отдельными портами: сервер пишет
аккаунты, историю, комнаты и другие данные в обычном режиме. Одновременно
запускать Rust и Prosody с одним каталогом данных нельзя. Между экземплярами
Rust действует блокировка inode каталога данных, в том числе при разных портах
и путях-синонимах. Prosody в этой блокировке не участвует. Команда create-user
также отказывается писать в каталог работающего Rust-сервера; для изменения
аккаунтов во время работы используйте admin shell. Для переключения остановите один процесс и запустите
другой. Резервная копия нужна для проверки отката до переключения рабочего
сервера; тестирование формата не доказывает совместимость всех ваших записей.
## Ваш Docker Compose
Распакуйте каталог `rust-xmpp` рядом с исходным `docker-compose.yml`.
Дополнительный файл заменяет образ только сервиса `prosody`. Порты, тома,
healthcheck `prosodyctl check` и сервис coturn наследуются из исходного файла.
```bash
docker compose -f docker-compose.yml -f rust-xmpp/compose.override.yml config
docker compose -f docker-compose.yml -f rust-xmpp/compose.override.yml up -d --build prosody
```
Эта команда запускает сервер на томах из исходного Compose; применяйте её
после проверки на копии. Исходные `docker-compose.yml` и `prosody.cfg.lua`
редактировать не требуется. Образ содержит CA-сертификаты и команду
`prosodyctl`, совместимую с указанным healthcheck. Это проверка ответа
работающего процесса через admin socket, а не полный аналог диагностики
`prosodyctl check`.
Entrypoint определяет UID/GID владельца `/var/lib/prosody` и запускает процесс
с этими правами, не меняя рекурсивно владельцев существующих файлов. Если
каталог принадлежит root, а файлы внутри другому UID, задайте `XMPP_UID` и
`XMPP_GID` в окружении контейнера через дополнительный Compose-файл.
При другом пути данных задайте также `XMPP_DATA_DIR`. Выбранный пользователь
должен читать TLS-ключ и писать данные. Docker-образ в среде разработки
не собирался: здесь нет Docker; состав образа и override подготовлены,
но запуск на целевом Docker ещё предстоит проверить.
## Форматы конфигурации
Все форматы используют одну структуру: `global` и `hosts`; у хоста есть
`options` и, для компонента, `component`. Надёжнее получить её из Lua:
```bash
./target/release/rust-xmpp convert /etc/prosody/prosody.cfg.lua json config.json
./target/release/rust-xmpp convert /etc/prosody/prosody.cfg.lua yaml config.yml
./target/release/rust-xmpp convert /etc/prosody/prosody.cfg.lua toml config.toml
./target/release/rust-xmpp check-config config.yml
```
Конвертер сохраняет области настроек и Include, не меняет исходный файл,
не перезаписывает существующий выходной и создаёт его с правами `0600`.
Выходной файл содержит секреты конфигурации. Lua выполняется в ограниченной
VM без системных библиотек; произвольные Lua-плагины не исполняются.
Поддержка Lua в проекте также нужна для точного чтения файлов данных Prosody.
## Команды и проверки
Полный локальный прогон: `bash scripts/verify-local.sh`.
`XMPP_LOAD_CHECK=1` добавляет нагрузочный сценарий; настройки native Prosody
для дополнительных проверок описаны в `scripts/prosody_compat/README.md`.
```bash
cargo test --locked
cargo clippy --locked --all-targets -- -D warnings
cargo build --release --locked
python3 scripts/smoke.py # после make-demo.sh
python3 scripts/integration_xmpp.py
python3 tests/sasl_network.py --spawn --hash sha1
python3 tests/sasl_network.py --spawn --hash sha256
python3 tests/sasl2_bind.py target/release/rust-xmpp
python3 scripts/integration_http.py # требует websockets
python3 scripts/load_smoke.py --clients 500 --accounts 100 --rounds 10 --message-rounds 10 --archive
```
Все сетевые тесты создают отдельные тестовые данные; кроме smoke с портом
55222, выбирают свободные loopback-порты. Оригинальная Prosody отдельно
проверяет формат данных и пароли: инструкции в
[scripts/prosody_compat/README.md](scripts/prosody_compat/README.md).
```bash
./target/release/rust-xmpp create-user CONFIG USER --password-stdin
./target/release/rust-xmpp check [CONFIG]
./target/release/rust-xmpp shell CONFIG 'server:status()'
```
Пароль `create-user` принимает через stdin; существующий аккаунт не заменяет.
Admin shell реализует ограниченный набор команд управления сервером и
аккаунтами. Произвольный Lua-код и горячая перезагрузка модулей не поддержаны.
## Дополнительный SASL2 Bind2
Модуль `sasl2_bind2` (alias `bind2`) включает привязку ресурса внутри SASL2,
inline SM/CSI/Carbons и MAM metadata. Добавьте его в modules_enabled вместе
с `sasl2` только если эта функция нужна. Исходный конфиг по-прежнему работает
без включения нового модуля. Ресурс генерируется случайно; прежние соединения
того же аккаунта с тем же валидным UUIDv4 user-agent завершаются после успешного
входа. Inline возобновление SM через SASL2 пока не объявляется.
## PEP, push и pre-authenticated roster
В 0.5.0 исправлены ответы disco для bare JID аккаунта. При включённых
`pep` и `cloud_notify` (они уже есть в предоставленном конфиге) изменение
конфига не требуется. После обновления переподключите аккаунт в клиенте,
чтобы повторить service discovery. Push требует также настройки
клиентского push-сервиса; реальный APNs/FCM шлюз здесь не имитируется.
При включённом `roster` клиент может обнаружить и вызвать контактную
ad-hoc команду `urn:xmpp:invite#invite` на серверном JID. Она возвращает
`xmpp:…?roster;preauth=…` и срок действия. Регистрацию аккаунта такое
приглашение не разрешает. XEP-0379 presence tokens сохраняются даже
для неизвестных серверу приглашений, созданных самим клиентом.
## Переподключение в 0.6.0
Повторная привязка одного ресурса по умолчанию заменяет старое соединение,
как в Prosody. `conflict_resolve` поддерживает `kick_old`, `kick_new`,
`increment` и `random`. Если явно задан `kick_new`, занятый ресурс по-прежнему
получит protocol conflict — это выбранная политика.
SM восстанавливается при гонке со старым TCP и внутри SASL2. Исправлено
освобождение ресурсов при BOSH/WebSocket close. Подробности:
[CHANGELOG-0.6.0.md](CHANGELOG-0.6.0.md).
## Android SASL в 0.6.1
Добавлен `tls-server-end-point` для TLS1.2/1.3 и исправлена SSDP-проверка
соединений WebSocket без channel binding. Причина воспроизводимого
`not-authorized` в Conversations, область тестирования и ограничения
описаны в [CHANGELOG-0.6.1.md](CHANGELOG-0.6.1.md) и
[docs/ANDROID-SASL.md](docs/ANDROID-SASL.md).
## Логирование в 0.7.0
Добавлены журнал TLS/SASL/bind/SM с единым connection ID, точные причины
отказов, файлы/console, JSON/plain и SIGHUP rotation reopen. Для диагностики
Conversations/monocles используйте [docs/LOGGING.md](docs/LOGGING.md).
## Исправления 0.7.5
Cached SASL2 Bind2/SM requests допускают legacy fallback, XEP-0258/0077
объявляются для Gajim; policy/classifications схема может использоваться
как каталог labels. Дубликаты одинаковых log destinations устранены.
Подробности — [CHANGELOG-0.7.5.md](CHANGELOG-0.7.5.md).
+11
View File
@@ -0,0 +1,11 @@
# Run from the directory holding the ORIGINAL docker-compose.yml:
# docker compose -f docker-compose.yml -f rust-xmpp/compose.override.yml config
# Then use up -d --build prosody after validation on copied data.
# The base file's ports, volumes, coturn service and healthcheck are inherited.
services:
prosody:
image: rust-xmpp:0.5.0
pull_policy: never
build:
context: ./rust-xmpp
dockerfile: Dockerfile
+55
View File
@@ -0,0 +1,55 @@
# Источники проверки Android SASL
Проверено 2026-10-20. Java source использовался для анализа выбора механизма;
Android-приложения на устройстве не запускались. Python regression повторяет
выбор из Conversations, не всю реализацию приложения.
- https://xmpp.org/extensions/xep-0440.html (1.0.0)
- https://xmpp.org/extensions/xep-0474.html
- https://www.rfc-editor.org/rfc/rfc5929.html
- https://www.rfc-editor.org/rfc/rfc9266.html
- https://codeberg.org/iNPUTmice/Conversations
- https://codeberg.org/monocles/monocles_chat
Файлы fetched с mutable master. Следующие branch-head значения получены
после fetch; это не доказательство скачивания каждого файла по commit pin:
Retrieved 2026-10-20 UTC from mutable master; no commit pin confirmed.
https://codeberg.org/iNPUTmice/Conversations/raw/branch/master/src/main/java/eu/siacs/conversations/crypto/sasl/
API master commit observed after source fetch: bf3269cd128d4dbf0e479c091477fd9544a798b0
monocles master commit: 0bc8473a5d4597d1ffe5545055da692ef8b89d37
Локальные SHA256 загруженных исходников:
- ChannelBinding.java: 88723522ed5bb53e947ad7afbc8cd0f8712ea4747d847347c3e5cd7b9aa41389
- ChannelBindingMechanism.java: e8a492de0eb866fc93d673cbc46bd5fae18ecf4b7bb46e272e6dca9e8c086937
- DowngradeProtection.java: a3fe98c2ccad998deb46f5748411a1a26506215cabb2a4e1d7adce0f51f2ac03
- SaslMechanism.java: 9bec637e7d62cc86a7b09cb8353e6272c80fd7b5d94e305b936bcf8c5a611e73
- ScramMechanism.java: aa5b2cdc5389a12e8de8fef562f0ee2de45fbdf61fa8fdbd33ea63a5b9299ae8
- monocles-ChannelBinding.java: 88723522ed5bb53e947ad7afbc8cd0f8712ea4747d847347c3e5cd7b9aa41389
- monocles-ScramMechanism.java: fea3687a12260d9280e204cc003d689043654950118e2d1dc84c058c736234e7
Conversations selector предпочитает exporter только на TLS1.3, затем
unique на TLS≤1.2, затем endpoint. При отсутствии совместимого объявленного
типа старый путь использует NONE/y,,. Monocles master содержит дополнительный
continueWithoutChannelBinding с n,, и обязательным downgrade protection;
его поведение зависит от версии и не полностью моделируется Python тестом.
## Cached inline requests в 0.7.1
Полученный серверный журнал показывал TLS1.3 success и inline-request-malformed
до sasl-attempt. В server 0.7.0 строка `bind2 is disabled` не совпадала с
`Bind2 is disabled` в diagnostic mapper. В supplied конфигурации Bind2 явно
не включён. Quickstart constructor в клиентских XmppConnection.java использует
QUICKSTART_FEATURES, даже если на новом соединении Bind2 уже не объявлен.
Это воспроизведено новым tests/sasl2_cached_inline.py на binary0.7.0.
В0.7.1 unavailable optional bind/resume не отклоняет credentials exchange.
Bare authorization identifier и post-auth legacy bind позволяют клиентскому
fallback продолжить вход; available Bind2 работает по прежнему. Это решение
совместимости с фактическим client fallback, а не ссылка на явное MUST-ignore
из XEP-0388. Wrong password и malformed enabled extensions не разрешаются.
Источники: Conversations и monocles `src/main/java/eu/siacs/conversations/
xmpp/XmppConnection.java`, `im/conversations/android/xmpp/model/sm/Enable.java`,
полученные с mutable master 2026-10-20. Authentication success handler оставляет
isBound=false без bound, затем processSecureStreamFeatures делает обычный bind.
+39
View File
@@ -0,0 +1,39 @@
# 0.4.0
Экспериментальная версия; полная взаимозаменяемость с Prosody не заявляется.
- SASL2 Bind2: опциональный модуль `sasl2_bind2` (alias `bind2`), inline SM,
CSI, Carbons, MAM metadata, случайные ресурсы и замена сессии того же
аккаунта с тем же валидным UUIDv4 устройства. SASL2 inline resume пока нет.
- PubSub/PEP: full-JID blocklist во всех путях доставки и replay, соблюдение
`include_payload` при replay, native deliver_notifications/deliver_payloads,
независимые правила notify_retract, корректные publish-options ошибки и
сравнение native строковых лимитов max_items.
- MUC: защита от понижения/исключения равного модератора без admin/owner,
сохранность бинарной occupant_id_salt и приоритет native _affiliations.
Нативные MUC-блокировки домена запрещают вход и исключают текущих участников.
- Федерация: общий deadline аутентификации, проверка положения TLS/SASL
features в XML, нормализация регистра доменов, проверка DNS labels и
безопасное переподключение до передачи stanza актору записи.
- Push: только текст настоящего body/subject в namespace сообщения включается
в summary/importance; содержимое чужих XML extensions не раскрывается.
- Сообщения: fallback отсутствующего full JID на активные ресурсы, native
правила headline/error/groupchat; offline-доставка bodyless receipts и
no-permanent-store без сохранения последнего в MAM.
- HTTP: обрезка допустимого byte range до конца файла, квоты просроченных
незагруженных слотов, синхронизация PUT с очисткой, регистронезависимый
Bearer и сохранение XML namespaces WebSocket/BOSH. Поддержаны URL с завершающим
слешем и WS CORS OPTIONS. BOSH продолжает обработку RID после HTTP disconnect,
сохраняет ответ для повторного запроса и не выполняет stanza дважды.
Число обработчиков и время выполнения ограничены.
- Каталог данных блокируется между процессами Rust, включая CLI create-user.
Блокировка не защищает от одновременно работающей Prosody.
- Нагрузочный сценарий поддерживает несколько аккаунтов и несколько раундов
сообщений; проверяется также адрес реального отправителя.
- `bash scripts/verify-local.sh` повторяет сборку и доступные локальные
протокольные проверки. HTTP-тест требует Python package `websockets`.
Изменений формата пользовательских файлов не требуется. Существующий конфиг
не включает Bind2 автоматически. Для переключения рабочего сервера всё ещё
требуются проверка копии данных и проверки целевых клиентов/окружения;
актуальные пределы перечислены в COMPATIBILITY.md.
+26
View File
@@ -0,0 +1,26 @@
# 0.5.0
Исправлены клиентские проверки PEP и push:
- Account disco на bare JID: identity account/registered, pubsub/pep при PEP,
automatic/filtered PubSub features. Серверный адрес остаётся server/im.
- Push feature urn:xmpp:push:0 появляется на своём аккаунте с cloud_notify,
независимо от PEP. Не объявляется identity внешнего push-шлюза pubsub/push.
- При раннем PEP reply сохраняются MAM и остальные account features, включая
поддерживаемые bookmarks/vCard conversions; leaf disco/ACL не подменяются.
- Регрессия воспроизводит predicates handleAccountDiscoInfo из исходника Monal.
- XEP-0379: preauth сохраняется в пересылке и pending presence для неизвестного
серверу токена; валидный серверный token однократный, с expiry/owner scope,
приводит к подтверждению и обратному запросу подписки.
- XEP-0401: реализована контактная ad-hoc команда urn:xmpp:invite#invite и её
discovery на серверном JID; выдаётся URI и expiry. Нет прав регистрации,
нет ibr=y, landing page и account-creation command.
- RFC6121 preapproval объявляется в stream features вместе с roster versioning.
- Unscoped invite_token совместим с настоящим mod_invites; native test
проверяет создание/использование токенов в обе стороны и изоляцию scope.
Текущий конфиг с roster, pep, cloud_notify не требует редактирования для этих
исправлений. Клиенту нужно повторить discovery после переподключения аккаунта.
Доставка push на физическое устройство зависит от используемого шлюза;
проверена серверная регистрация и сериализация, а не реальный APNs/FCM цикл.
Функциональные пределы полной замены остаются в COMPATIBILITY.md.
+23
View File
@@ -0,0 +1,23 @@
# Клиентские признаки и проверки
Проверено 2026-10-20 по официальным XEP и исходнику Monal develop:
https://github.com/monal-im/Monal/blob/develop/Monal/Classes/MLIQProcessor.m
handleAccountDiscoInfo требует для PEP identity pubsub/pep и features
filtered-notifications, publish-options, publish, subscribe, create-nodes,
delete-items, delete-nodes, persistent-items, retrieve-items, auto-create.
Для modern PEP дополнительно проверяет item-ids/multi-items; для max-items
проверяет config-node-max. Push включается по urn:xmpp:push:0 на аккаунте.
Эти predicates воспроизведены в tests/push_discovery.py. Само приложение
в среде разработки не запускалось.
Стандарты:
- https://xmpp.org/extensions/xep-0163.html §6.1
- https://xmpp.org/extensions/xep-0357.html §4.1
- https://xmpp.org/extensions/xep-0379.html §3–5
- https://xmpp.org/extensions/xep-0401.html §3, §5.1
XEP-0379 определяет токен в presence и URI. Генерация серверной ссылки
использует контактную ad-hoc команду XEP-0401, не выдуманный IQ PARS.
Истёкший/неизвестный токен не даёт автоматических прав и сохраняет ручной
workflow. tests/preauth_network.py проверяет весь контактный flow через TLS.
+141
View File
@@ -0,0 +1,141 @@
# Совместимость с предоставленной установкой
Цель — конкретная Prosody `cafd74b9c5ea` и предоставленные community/custom
модули ревизии `dddb6c34b964`, а не все существующие модули Prosody.
Реализация содержит рабочие обработчики всех явно включённых имён модулей
из конфига. Это не означает полного совпадения их поведения.
| Область | Что реализовано | Существенные пределы |
|---|---|---|
| Конфигурация | Lua/JSON/YAML/YML/TOML, Include, глобальные и локальные области, наследование модулей | Lua VM ограничена; не все функции окружения конфигуратора Prosody доступны. Runtime обслуживает один VirtualHost и его компоненты |
| Хранилище | internal `.dat`, `.list`, бинарные строки, смешанные ключи Lua, атомарные записи, потоковые архивы, инвалидирование `.lidx` | SQL, external storage и произвольные драйверы не реализованы. Каталог блокируется между процессами Rust; Prosody в блокировке не участвует |
| Аккаунты, saslauth | internal_hashed SHA-1/SHA-256, SASLprep, PLAIN внутри TLS, SCRAM и PLUS с tls-exporter/tls-server-end-point, SSDP, SASL2 | Только internal_hashed; опциональный sasl2_bind2 (alias bind2) поддерживает inline bind/SM/CSI/Carbons. SASL2 inline SM resume и takeover живого транспорта реализованы; MAM metadata при Bind2 читает весь архив синхронно |
| Сообщения и presence | локальная маршрутизация, приоритеты ресурсов, контакты/подписки/probes, offline, carbons, блокировки | Полная совместимость всех пограничных сценариев маршрутизации ещё не подтверждена |
| MAM | личный и комнатный MAM2, prefs, формы, RSM, фильтры времени/контакта/ID, extended queries, metadata, stanza-id, expiry | Нет доказательства совпадения каждой ошибки и порядка результатов при всех комбинациях запроса |
| MUC | комнаты, несколько ресурсов, роли/affiliations, owner/admin, конфигурация, приглашения, история без MAM и MAM, occupant-id/avatar, hats, язык, PM policies, presence broadcast, native metadata/state checkpoints и восстановление после штатной остановки | Восстановление после повторной аутентификации точного полного JID в300-секундном grace и при неизменной конфигурации. Нет сохранения TCP/SM между процессами и checkpoint на SIGKILL. Произвольные community-расширения не запускаются; MUC-RECOVERY.md |
| PEP/pubsub | persistent nodes/items, ACL, subscriptions, publish/retract/purge/delete, owner/configuration, caps, OMEMO XML как payload | Не все необязательные политики узлов Prosody реализованы; OMEMO шифруют клиенты, криптография OMEMO не часть сервера |
| private/bookmarks/vCard | private XML, старые и новые закладки, vCard/temp-vCard4 и avatar-переходы | Межклиентное поведение нужно дополнительно проверить настоящими клиентами |
| SM/push | acknowledgements, resumable sessions, replay, ограниченные очереди, native регистрации push и ответы сервисов | Есть coalescing и watchdog первого push; полный цикл с настоящим APNs/FCM шлюзом не проверен. Состояние живых сессий не переживает перезапуск процесса |
| CSI | active/inactive, ограниченный буфер, native importance rules, delay, flush при клиентской активности и grace period | Событие socket drain приближено завершением записи; необязательные расширенные XPath-фильтры поддержаны не полностью |
| Федерация | входящие/исходящие STARTTLS, CA/DNS-ID, SASL EXTERNAL, DNS SRV, проверка домена каждого stanza, ограниченный пул соединений | Нет dialback/DANE/OtherName-only/SRV-ID/bidi/direct TLS |
| HTTP upload | слоты XEP-0363, streaming PUT, GET/HEAD/range/conditional, лимиты/квоты/expiry, native metadata, JWT slots | Один upload-компонент; внешнее объектное хранилище не реализовано. Фактический upload 10 GiB не прогонялся |
| WebSocket/BOSH | WS/WSS и HTTP/HTTPS, общая XMPP-сессия, origin rules, BOSH RID/retry/hold/reorder/restart; http_altconnect XRD/JRD discovery; http_paths, HTTP Host/fallback, внешний URL, доверенные IP/CIDR и forwarded headers для TLS reverse proxy | Один VirtualHost с компонентами; нет PROXYv1/v2, произвольных Lua HTTP-приложений и горячей перенастройки. См. HTTP-PROXY.md |
| admin_shell | протокол admin socket, status/version/uptime, списки, основные операции аккаунтов | Нет произвольного Lua, горячей загрузки модулей и полного набора prosodyctl |
| Остальные модули | disco, ping, time, version, uptime, register, TURN extdisco/HMAC, каталог seclabels | Нет встроенного TURN. Coturn работает отдельно. `pep_simple` пуст в предоставленном исходнике |
## Особенности именно вашего конфига
- `allow_registration = true` действительно разрешает регистрацию, несмотря
на противоречащий этому комментарий в исходном файле.
- Личная история настроена `never`, комнатная — на неделю. Очистка выполняется
периодически; append не переписывает весь архив.
- Лимит отдельного файла — 10 GiB, общий — 100 GiB. Сетевой тест проверяет
потоковую загрузку меньшего файла; это не проверка фактической загрузки 10 GiB.
- Структура `security_labels.default_policy/policies/classifications` отличается
от native `mod_seclabels`. С0.7.1 её точная schema может использоваться как
catalog metadata: выбранный default_policy и его classifications. ACL и
обязательное enforcement не реализуются; неизвестные поля отвергаются.
- Настройки `limits` сами по себе не включают `mod_limits`; он не указан
среди включённых модулей исходного конфига и не является autoload-модулем
предоставленной Prosody. В этой реализации транспортного rate limiting пока нет.
- Чужие Lua-плагины из каталога `custom_plugins` автоматически не запускаются.
Наличие исходников 479 каталогов не означает, что все они были включены.
## Что осталось для утверждения «полная замена»
Нужны подтверждённый запуск на копии реальных данных, проверки настоящими
Monal/Conversations/Gajim и используемым push-шлюзом, совместимость с внешними
XMPP-доменами и сертификатами, проверка целевого Docker/UID/TLS, откат, долгий
нагрузочный прогон и устранение оставшихся различий из таблицы.
Текущие автоматические проверки покрывают конкретные сценарии и не заменяют
эти критерии. Проект намеренно сохраняет флаг `--experimental`.
## Исправления discovery и pre-auth в 0.5.0
PEP описывается identity `pubsub/pep` на bare JID аккаунта. Push feature
`urn:xmpp:push:0` возвращается на собственном bare JID при включённом
`cloud_notify`, в том числе без PEP. Серверный JID остаётся `server/im`.
PEP leaf nodes сохраняют `node`, собственные ACL и ошибки отсутствующего узла.
Функции MAM, блокировок и другие account features не теряются в раннем PEP reply.
С `roster` доступны RFC6121 subscription preapproval и контактная часть
XEP-0379/XEP-0401: ad-hoc `urn:xmpp:invite#invite`, одноразовые токены
с истечением срока, автоматическое подтверждение и обратная подписка.
Неизвестный клиентский preauth сохраняется при пересылке и в pending presence,
чтобы владелец мог подтвердить подписку вручную или в своём клиенте.
Нет приглашений на создание/сброс аккаунта и landing page; `ibr=y` не выдаётся.
Unscoped токены используют native per-user `invite_token` map; scoped токены
хранятся отдельно, чтобы Prosody без поддержки scope не мог выдать лишние права.
Токен потребляется до нескольких roster-записей: при дисковой ошибке между
записями нет multistore rollback, ошибка передаётся вызывающему коду, токен
повторно автоматически не авторизует подписку. Возможен ручной fallback.
## Переподключение в 0.6.0
`conflict_resolve` следует native sessionmanager: default/kick_old, kick_new,
increment и random. Новая привязка отзывает прежний resume token при замене;
она не наследует старые SM acknowledgements. Успешный resume сохраняет SM,
Carbons, push identifier и очередь, изолируя старый transport от нового состояния.
BOSH terminate ждёт engine cleanup, WebSocket close/EOF закрывает input и
даёт engine завершиться перед ограниченным timeout abort. Сетевой тест
использует kick_new, чтобы случайное hibernation не скрылось takeover-политикой.
## Android SASL в 0.6.1
На TLS1.2 предлагается certificate endpoint binding, на TLS1.3 также exporter.
Проверены SHA1/256, SASL1/2, SSDP on/off, tampered bindings, WSS без CB и
явно отключённый PLUS. Monocles имеет версионные различия fallback; настоящие
устройства не запускались. Certificate signature algorithms EdDSA/unknown
не используются для endpoint binding; TLS1.3 exporter при этом сохраняется.
## Логирование в 0.7.0
Native-style log level maps и explicit sinks, console/file, JSON/plain, UTC
millis и SIGHUP reopen реализованы. В scope входят TLS/SASL/bind/SM, startup,
maintenance и основные входящие S2S события. Syslog/plugin sinks, mixed Lua
log tables, полный hot reload и журналы всех модулей не реализованы.
PLAIN теперь нормализует имя/authorization identity; wire abort/retry проверены
отдельно. Журнал нужен для диагностики оставшегося реального Android отказа.
## Cached SASL2 и Gajim в 0.7.1
Bind2 остаётся явно включаемым. Сохранённый Quickstart request к недоступному
optional extension не мешает credentials exchange и последующей обычной
привязке. Inline SM при отключённом smacks также не обрабатывается.
Host/account discovery объявляет seclabels/register по наличию реальных
обработчиков; создание новых аккаунтов по-прежнему зависит от allow_registration.
Gajim predicates проверены по python source, реальные приложения не запускались.
Policy catalog adapter — расширение для supplied config, а не ACL implementation.
## PEP и DNSSEC в 0.7.2
Добавлены проверки OMEMO/аватаров с публикацией без to, recoverable missing
bundles, publish-options/config retry, сохранением после restart и скрытой
от журнала полезной нагрузкой. IQ errors адресуются от имени исходной цели;
notification defaults совпадают с эффективной конфигурацией при preconditions.
Конкретный production IQ отказ из INFO-лога0.7.1 неизвестен.
DNSSEC клиент проверяет до XMPP; текущая зона wthome.ru не имеет обнаруженных
DS/DNSKEY. Требуется настройка DNS/регистратора, docs/DNSSEC.md. Эта сборка не
добавляет DNSSEC validation в outbound federation.
## PEP порядок в 0.7.3
PEP/PubSub items выдаются newest-first, как реальный supplied mod_pep.
Протокольный regression сохраняет старую пустую и новую populated devicelist,
проверяет первый item как Android parser, замену current и restart. Native
oracle отдельно подтверждает порядок. Это не гарантирует исправления каждого
production индикатора: реальная конфигурация/содержимое узлов не предоставлены.
## HTTP и диагностика0.7.4
HTTPS учитывает https_interfaces (включая* → IPv4+IPv6), HTTP — http_interfaces,
с fallback к interfaces. Добавлена безопасная HTTP/TLS/status диагностика.
Закрытие до SASL обрабатывается штатно и завершает WebSocket. Для подтверждённой
страницы Converse https://conversejs.wthome.ru добавлен точный allowed Origin
в примеры; рабочий конфиг требуется обновить отдельно. Runtime wire test
подтверждает original403 → configured101, IPv4/IPv6 и TLS validation.
PEP production причина по-прежнему не доказана; новая диагностика различает
parser-valid IDs и форму уведомлений. Нет подтверждения Android UI, живого
production WSS, DNSSEC signing или полной замены Prosody.
+50
View File
@@ -0,0 +1,50 @@
# Converse.js: https://conversejs.wthome.ru → WSS5281
Страница браузера и endpoint имеют разные роли:
- Страница: https://conversejs.wthome.ru/ → Origin https://conversejs.wthome.ru.
- XMPP endpoint: wss://wthome.ru:5281/xmpp-websocket.
В рабочий YAML конфиг под global добавьте точный Origin, сохранив остальные
настройки http_cors_override и текущие origins:
```yaml
global:
http_cors_override:
websocket:
enabled: true
origins:
- https://wthome.ru
- https://conversejs.wthome.ru
```
Это fragment, не полный конфиг: не заменяйте им hosts/data_path/SSL и прочие
параметры. examples/converse-origin.fragment.yaml содержит тот же фрагмент;
полный examples/config.json тоже обновлён. Примените изменение к вашему
prosody.rust-xmpp.cfg.yaml и перезапустите процесс после пересборки0.7.4.
Endpoint можно оставить прежним. В настройке клиента websocket_url должен
указывать полный WSS URL с путём. Сертификат endpoint должен быть доверенным
и действительным для wthome.ru; Origins не меняют TLS hostname validation.
Изолированный test воспроизводит исходный403 для нужного Origin и исправленный101.
Он использует настоящую проверку тестового CA/hostname, оба endpoint paths,
HTTP/1.1 Connection token list, обязательный subprotocol xmpp, отсутствие/неверный
subprotocol400, посторонние origins403, неизвестный путь404, invalid CA rejection,
RFC7395 open/features/close до SASL. Параметры auth/bind отдельно проверяются
sasl_web_network и integration_http. Интерфейсы127.0.0.1 и::1 подтверждены по TLS.
## Как читать новый журнал
- http listener-ready address=[::]:5281/0.0.0.0:5281, transport=https и
websocket=enabled — настроенная доступность listener/route.
- http request-complete route=websocket status=403 — запрос отклонён политикой.
Сопоставляйте Origin именно страницы с конфигом. В журнале значение Origin
скрыто, чтобы не писать произвольные заголовки.
- status=101 — выполнен Upgrade; дальнейшие auth/bind события идут в c2s.
- 400 — отсутствующий/неверный xmpp subprotocol или некорректный Upgrade.
- 404 — endpoint не найден; phase=tls-handshake указывает на TLS этап.
Журнал не доказывает browser connectivity через ваш firewall/proxy/DNS.
Попытка read-only проверки production endpoint в среде разработки не смогла
разрешить имя, поэтому живой wss://wthome.ru:5281 здесь не проверен.
Origin не расширяется до wildcard и TLS не отключается.
+106
View File
@@ -0,0 +1,106 @@
# DNSSEC и индикатор monocles
Проверено 2026-10-20 UTC. Выполнены только чтение исходников клиентов и
публичные DNS-запросы; DNS-зона, регистратор и production не изменялись.
Приложения на Android не запускались.
## Что именно показывает клиент
В monocles `EditAccountActivity.java` выбирает `not_dnssec_verified`, если
нет соединения или `XmppConnection.resolverAuthenticated()` возвращает false.
Последний метод возвращает `currentResolverResult != null &&
currentResolverResult.isAuthenticated()`. Проверка DANE отдельная и выполняется
только внутри положительной ветки DNSSEC; наличие TLS-сертификата само по себе
не делает этот индикатор положительным.
В обычном пути SRV + IP (`Resolver.resolveIpsAsFuture`) флаг равен
`SRV.isAuthenticData() && addressResult.isAuthenticData()`. Для hostname-only
fallback достаточно authentic SRV; для пути без SRV monocles переносит authentic
флаг A/AAAA. MiniDNS сначала пытается проверить DNSSEC через DNS текущей сети,
при ошибках может перейти к обычному DNS. Поэтому даже после корректного
подписания зоны результат зависит от версии приложения и DNS сети телефона.
Ручной hostname (`fromHardCoded`) устанавливает authenticated=true без DNSSEC;
его нельзя использовать как доказательство подписи зоны или как исправление DNSSEC.
Эти детали относятся к проверенному monocles master. В проверенном Conversations
master DNS-запросы выполняются через AndroidDNSClient, а `ResolverResult` создаётся
с null DNSSEC metadata; нельзя автоматически переносить поведение индикатора между
версиями и форками клиентов.
## Публичная зона wthome.ru
Google DNS JSON API с `do=1` дал следующие результаты:
| Запрос | Результат |
| --- | --- |
| `wthome.ru DS` | NOERROR, без DS в Answer |
| `wthome.ru DNSKEY` | NOERROR, без DNSKEY в Answer |
| `_xmpp-client._tcp.wthome.ru SRV` | `5 0 5222 wthome.ru.` |
| `_xmpps-client._tcp.wthome.ru SRV` | NXDOMAIN |
| `wthome.ru A` | `88.204.18.107` |
Во всех этих ответах `AD=false`; у ответов зоны wthome.ru нет RRSIG.
Cloudflare DNS JSON API независимо подтвердил отсутствие DS. Совокупность
результатов указывает на неподписанную зону без цепочки доверия из .ru,
а не на ошибку SASL или отсутствие XMPP stream feature. Это снимок DNS на дату
проверки, а не постоянная гарантия состояния зоны.
## Что нужно настроить оператору
1. Включить DNSSEC у авторитетного DNS-провайдера зоны, убедиться, что DNSKEY и
RRSIG опубликованы и действительны. Если текущий тариф/провайдер этого не
поддерживает, сначала перенести зону с сохранением всех записей.
2. Получить DS из реально работающего подписанного ключа и опубликовать его
через регистратора в родительской зоне .ru. Не придумывать DS вручную и не
публиковать DS до готовности подписанной зоны.
3. Проверить валидатором цепочку root → ru → wthome.ru и подписи SRV + A/AAAA
фактически используемого target. Для target в другой зоне проверить и её
цепочку. Дождаться обновления DNS-кэшей.
4. Переподключить клиент через DNS-сеть, передающую нужные DNSSEC-записи, проверить
его resolver log и индикатор. Отдельный DANE-индикатор потребует корректных
TLSA и их DNSSEC-проверки; для одного DNSSEC-индикатора TLSA не обязателен.
Диагностика с установленным BIND tools:
```sh
dig +dnssec wthome.ru DS
dig +dnssec wthome.ru DNSKEY
dig +dnssec _xmpp-client._tcp.wthome.ru SRV
dig +dnssec wthome.ru A
delv _xmpp-client._tcp.wthome.ru SRV
delv wthome.ru A
```
`+dnssec` только запрашивает записи DNSSEC и само по себе не проверяет подписи;
для проверки нужен валидирующий resolver или delv. Обычный DoH AD=false тоже
не различает все причины отсутствия проверки без анализа DS/DNSKEY/ответов.
## Почему это не исправляется кодом c2s-сервера
Клиент проверяет DNS до TCP/TLS/XMPP. Сервер не может передать ему DNSSEC-флаг
через XML, SASL2, Bind2 или TLS. Текущий `src/federation.rs` использует
`TokioAsyncResolver::tokio_from_system_conf()` только для исходящего s2s SRV;
Cargo.toml не включает dnssec feature Hickory. Проверка TLS при этом использует
JID-домен назначения, а не неподтверждённый SRV target. Добавление DNSSEC в s2s
resolver было бы отдельной задачей и не исправит DNSSEC-индикатор Android-клиента.
## Источники и воспроизводимость
Исходники прочитаны с mutable master; commit pin для этих загрузок не подтверждён.
Пути внутри `src/main/java/eu/siacs/conversations/`:
- https://codeberg.org/monocles/monocles_chat — `ui/EditAccountActivity.java`,
`utils/Resolver.java`, `xmpp/XmppConnection.java`.
- https://codeberg.org/iNPUTmice/Conversations — `utils/Resolver.java`.
- https://dns.google/resolve?name=wthome.ru&type=DS&do=1
- https://dns.google/resolve?name=wthome.ru&type=DNSKEY&do=1
- https://dns.google/resolve?name=_xmpp-client._tcp.wthome.ru&type=SRV&do=1
- https://cloudflare-dns.com/dns-query?name=wthome.ru&type=DS
(заголовок `Accept: application/dns-json`).
SHA256 прочитанных Java-файлов:
- `monocles-AccountActivity.java`: `96af8f891a8e6dbf647c34e07a19dd6782aeeba3fa6ec2de5d6b3332121ce56d`
- `monocles-Resolver.java`: `890856ea1221cf09aa951612e6fce2f27d2aea5c5e7c03b27af0a9a8d5977e79`
- `monocles-XmppConnection.java`: `37a2cd5c62242b47eaab5023c48807870428a053cbc1586408ba51e1b8dee6fd`
- `conv-Resolver.java`: `892bc1a346102798dc502bfa8c4c061a2f5fec7bffde1b4c78fba45d4383557b`
+24
View File
@@ -0,0 +1,24 @@
# Gajim discovery verification — 0.7.1
Upstream sources read 2026-10-20 (mutable master, not pinned):
- https://raw.githubusercontent.com/gajim/gajim/master/src/gajim/common/modules/security_labels.py
- https://raw.githubusercontent.com/gajim/gajim/master/src/gajim/common/modules/register.py
- https://raw.githubusercontent.com/gajim/gajim/master/src/gajim/gtk/preference/server_info.py
- https://raw.githubusercontent.com/gajim/python-nbxmpp/master/nbxmpp/modules/security_labels.py
- https://xmpp.org/extensions/xep-0258.html
- https://xmpp.org/extensions/xep-0077.html
Gajim sets SecLabels.supported from sec-label:0 in info.features and Register.supported
from jabber:iq:register. The server-info window uses those values, not only the
pre-auth registration stream feature. nbxmpp catalog queries use catalog:2 with
@to; server replies preserve the target attribute.
Server now advertises sec-label:0/catalog:2/catalog:0 on domain and current account
security features on own bare JID. Registration discovery is gated by register,
whereas creating a new account remains gated by allow_registration.
Tests exercise real TLS account management and catalogs, enabled/disabled modules,
registration gate, password login after change and rejection after cancellation.
The sample policy schema is a catalog metadata adapter only. Names classify labels;
they confer no access or enforcement. Unknown policy fields fail explicitly.
+97
View File
@@ -0,0 +1,97 @@
# http_altconnect (0.7.7)
Встроенный модуль публикует альтернативные XMPP connection methods:
- GET `/.well-known/host-meta`: XRD, Content-Type application/xrd+xml.
- GET `/.well-known/host-meta.json`: JRD, Content-Type application/json.
Оба ответа содержат Access-Control-Allow-Origin: *. HEAD возвращает те же
заголовки без тела; OPTIONS разрешён; остальные методы дают405. Неизвестные
пути и неразрешённый HTTP Host не обслуживаются. Query не изменяет формат
и не включает JSONP. В логах запрос классифицируется как altconnect.
Реализация сверена с supplied plugins/mod_http_altconnect.lua cafd74b9c5ea.
Источник протокола: https://xmpp.org/extensions/xep-0156.html.
## Включение
Добавьте `http_altconnect` в существующий modules_enabled, сохранив остальные
модули. В Lua, например:
```lua
modules_enabled = {
-- остальные существующие модули
"websocket";
"bosh";
"http_altconnect";
}
advertise_bosh = true;
advertise_websocket = true;
```
Это фрагмент: не заменяйте им весь рабочий список modules_enabled.
Оба advertise-параметра по умолчанию true; false скрывает соответствующий Link.
Выключенный/неподключённый транспорт не рекламируется. Если нет ни одного
транспорта, XRD пустой, JSON содержит links: []. Отключение http_altconnect
убирает discovery endpoints, сохраняя работу WS/BOSH.
Адреса учитывают http_host, http_paths.bosh/websocket и http_external_url.
При отсутствии внешнего URL выбирается первый настроенный HTTPS listener,
затем первый HTTP listener; значения не зависят от Host/Forwarded в запросе.
Пустой interfaces список не считается действующим listener.
Пример для HTTPS proxy с удаляемым публичным префиксом /xmpp/:
```lua
http_external_url = "https://wthome.ru/xmpp/";
http_paths = {
websocket = "/ws";
bosh = "/bind";
}
```
Опубликованные href: https://wthome.ru/xmpp/bind и wss://wthome.ru/xmpp/ws.
http_external_url меняет публичные адреса, внутренние пути остаются /bind и /ws.
`http_paths.altconnect` меняет внутреннюю базу discovery, например `/discover`:
в этом случае endpoint — `/discover/host-meta[.json]`. `$host` поддерживается.
Путь transport, конфликтующий с активным host-meta endpoint, отвергается при
check-config/startup вместо неоднозначной маршрутизации.
## Публичный discovery
Клиент запрашивает well-known на HTTPS origin XMPP-домена, например
https://wthome.ru/.well-known/host-meta. HTTPS listener5281 сам по себе не
создаёт публикацию на443: используйте существующий reverse proxy или port mapping.
Пример дополнительных location внутри TLS server Nginx, если backendHTTP5280:
```nginx
location = /.well-known/host-meta {
proxy_pass http://127.0.0.1:5280;
proxy_set_header Host wthome.ru;
}
location = /.well-known/host-meta.json {
proxy_pass http://127.0.0.1:5280;
proxy_set_header Host wthome.ru;
}
```
Эти location публикуют discovery без transport-префикса /xmpp/; соответствующие
WS/BOSH location по-прежнему настраиваются согласно HTTP-PROXY.md.
При custom altconnect mount proxy должен переписать well-known на него.
XEP-0156 требует HTTPS загрузку metadata и только https/wss href. Для native
совместимости supplied module HTTP/WS fallback также сохранён: если настроен
только HTTP, ссылки будут http/ws. Для стандартного защищённого discovery
настройте HTTPS listener или HTTPS http_external_url. Автоматическое изменение
production DNS, proxy или TLS-сертификатов не выполняется.
Проверка с действительным CA (для self-signed добавьте --cacert cert.pem):
```bash
curl -i https://wthome.ru/.well-known/host-meta
curl -i https://wthome.ru/.well-known/host-meta.json
```
Модуль включается на единственном runtime VirtualHost. Host Meta2/XEP-0487,
DNS TXT/SRV changes, redirects на чужие Host и автоматический запуск браузера
не являются частью этого плагина. Результаты локальных проверок — VALIDATION.md.
+92
View File
@@ -0,0 +1,92 @@
# HTTP-пути и reverse proxy
С0.7.5 WS/BOSH используют настройки `http_paths.websocket` и `http_paths.bosh`.
`http_paths.file_share` задаёт внутренний путь upload-компонента. Настройки
VirtualHost/Component имеют приоритет над глобальными; `$host` заменяется именем
XMPP-хоста. Дефолты: `/xmpp-websocket`, `/http-bind`, `/file_share`.
HTTP-пути задаются без query/fragment; конечный `/` допускается. Поддержаны
литеральные RFC3986 path-символы и percent encoding, например `/v1:ws` и
`/bind%20endpoint`. Закодированные slash/backslash, control и dot segments
отвергаются, чтобы избежать неоднозначного переписывания прокси.
`http_host` задаёт HTTP Host, который proxy должен отправлять backend.
`http_default_host` глобально выбирает fallback для неизвестного HTTP Host.
Runtime по-прежнему обслуживает один VirtualHost и его компоненты.
`http_external_url` задаёт публичный HTTP(S) origin и необязательный префикс.
Например, `https://chat.example.org/xmpp/` вместе с `http_paths.bosh: /bind`
соответствует публичному `https://chat.example.org/xmpp/bind` и внутреннему `/bind`.
Прокси должен удалить `/xmpp/` перед отправкой backend. Эта настройка сама по
себе не меняет внутренние маршруты и не включает автоматическое discovery.
Для WebSocket клиент использует эквивалентный `wss://` URL.
## TLS на прокси
Пример фрагмента YAML для существующего конфига (сохраните остальные параметры):
```yaml
global:
http_ports: [5280]
http_interfaces: [127.0.0.1]
trusted_proxies: [127.0.0.1, '::1']
http_legacy_x_forwarded: true
http_default_host: wthome.ru
http_external_url: https://wthome.ru/xmpp/
http_paths:
websocket: /ws
bosh: /bind
http_cors_override:
websocket:
origins: [https://conversejs.wthome.ru]
bosh:
origins: [https://conversejs.wthome.ru]
```
Nginx: переменная map задаётся внутри `http`, location — внутри TLS server.
```nginx
map $http_upgrade $xmpp_connection {
default upgrade;
'' close;
}
location /xmpp/ {
proxy_pass http://127.0.0.1:5280/;
proxy_http_version 1.1;
proxy_set_header Host wthome.ru;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection $xmpp_connection;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off;
proxy_read_timeout 120s;
}
```
Публичные адреса: `wss://wthome.ru/xmpp/ws` и
`https://wthome.ru/xmpp/bind`. Для прежнего прямого WSS5281 настройка
прокси не требуется. Origin — адрес страницы Converse, а не WSS endpoint.
IP/CIDR в `trusted_proxies` разрешают доверять forwarded-данным только от
указанных socket peers. По умолчанию доверены loopback127.0.0.1 и::1.
Пустой список отключает доверие. Не задавайте `0.0.0.0/0` для публичного backend.
X-Forwarded-For разбирается справа налево до первого недоверенного адреса.
X-Forwarded-Proto=https разрешает HTTP WS/BOSH без consider_*_secure только
для доверенного прокси. Прямой HTTP без такого подтверждения получает403,
если `consider_websocket_secure`/`consider_bosh_secure` не включены явно.
Не включайте consider_*_secure на открытом внешнем HTTP listener.
При `http_legacy_x_forwarded: false` используются RFC7239 `Forwarded`
с IP, bracketed IPv6/port, `proto=https` и цепочками доверенных прокси.
В RFC-режиме защищённость TLS termination принимается от ближайшего доверенного
прокси; каждый следующий разобранный hop также должен иметь `proto=https`. Это
намеренно отличается от консервативного `secure AND proto` supplied native
revision, не позволявшего так отметить HTTP backend защищённым.
`X-Forwarded-Host`/`Forwarded host` не заменяют HTTP Host: настройте Host на прокси.
Поддержаны HTTP reverse proxies, сохраняющие WebSocket Upgrade и BOSH body.
HAProxy PROXYv1/v2, произвольные Lua HTTP-приложения и горячая перенастройка
маршрутов не реализованы. Nginx-конфигурация дана для оператора; настоящий
Nginx и production-сертификат в локальном прогоне не запускались.
Основание семантики: https://prosody.im/doc/http и supplied mod_http.lua.
+144
View File
@@ -0,0 +1,144 @@
# Журнал сервера и диагностика авторизации — 0.7.4
После сборки/перезапуска строка `starting`/`ready` должна показывать 0.7.4.
Это позволяет проверить, что запущен новый binary/container image.
Без настройки журнал пишет info/warn/error в stderr (виден в Docker logs).
Для диагностики одной попытки входа добавьте в Lua-конфиг:
```lua
log = { debug = "*console" }
log_format = "json"
```
В JSON-конфиге это поля `global.log = {"debug":"*console"}` и
`global.log_format = "json"`. Обычный текст: `log_format = "plain"`.
`debug = true` включает debug по умолчанию, если `log` не задан.
Настройки наследуются из global, локальный `log` VirtualHost имеет приоритет.
Файлы в стиле Prosody:
```lua
log = {
info = "/var/log/prosody/rust-xmpp.log";
error = "/var/log/prosody/rust-xmpp.err";
debug = "*console";
}
log_format = "plain"
```
Каталоги должны существовать и быть доступны UID процесса. Файлы открываются
append с правами 0600. Level-map включает указанный уровень и старшие уровни.
Explicit sinks поддерживают диапазон и точный набор уровней:
```lua
log = {
{ to = "file"; filename = "/var/log/prosody/debug.log";
levels = { min = "debug"; max = "warn" } };
{ to = "console"; levels = { "error" } };
}
```
`levels = "warn"` в explicit sink — только warn, как у native loggingmanager.
`log = "*console"` и `log = { "*console" }` включают debug и старше.
Дополнительное сокращение runtime `log = "debug"` также пишет debug в консоль.
Вся строка JSON/plain записывается под общим mutex, ID не смешиваются.
Файлы ротируются внешним logrotate: после rename отправьте процессу SIGHUP.
Журнал переоткроет destinations и запишет `logs-reopened`. При ошибке
переоткрытия старые файловые дескрипторы сохраняются. SIGHUP здесь не означает
горячую перезагрузку конфигурации или Lua-модулей. Автоматической ротации и
retention нет. Native syslog sink, mixed Lua tables, timestamp templates и
произвольные plugin sinks пока не реализованы.
## Как собрать одну попытку
В JSON есть `timestamp`, `level`, `module`, `connection`, `event`, `fields`.
`connection` — случайный ID одного transport, не SM resume token. Поля в
`fields` — массив `{key,value}`, который можно преобразовать через jq
`from_entries`. Проследите один ID от `connection-open` до `connection-closed`:
1. `connection-open`: host, transport, peer.
2. `tls-established`: фактическая версия TLS и cipher.
3. `sasl-features`: объявленные механизмы, CB-типы, account_hash и SSDP.
4. `sasl-attempt`: номер попытки, механизм, SASL1/SASL2.
5. `account-lookup`: нормализованный user, hash и состояние записи.
6. `sasl-challenge`, затем `auth-success` либо `sasl-rejected`.
7. `resource-bound`/`session-resumed`, затем `connection-closed`.
При закрытии есть phase, reason, duration_ms и io_kind. Если клиент отключился
после challenge, сервер видит только `phase=sasl-client-final` и disconnect;
его внутреннюю причину (например, локальное отклонение SSDP) сервер узнать
не может. Для этого потребуется клиентский журнал. Для HTTP adapter peer
помечается not-forwarded: внутренний duplex не получает адрес HTTP-запроса.
| Событие/причина | Что проверять |
|---|---|
| account-lookup: missing-or-disabled | Правильный host, data_path/volume, наличие и enabled-состояние аккаунта |
| account-record-invalid | Lua account record повреждён или не поддержан |
| account-hash-or-record-invalid | stored/server key length и настроенный SHA-1/SHA-256 должны соответствовать |
| invalid-client-proof | Proof не проверилась: пароль, устаревшие credentials либо несовместимый расчёт клиента; это не доказательство конкретно неверного пароля |
| channel-binding-mismatch | Выбранный CB не соответствует данному TLS-сеансу/сертификату |
| channel-binding-downgrade-detected | Клиент отправил y при доступном серверном CB |
| mechanism-not-offered | Клиент выбрал механизм, которого нет в sasl-features |
| invalid-authzid | Authorization identity не совпадает с нормализованным владельцем |
| client-aborted-after-challenge | Клиент явно отменил обмен; wire-ответ aborted |
| inline-request-malformed | Ошибка Bind2/resume, поле detail уточняет класс |
| bind-rejected/resource-conflict | Авторизация прошла, проблема уже на этапе ресурса |
Дополнительно пишутся listener-ready, resource-replaced, session-disconnected
(removed/hibernating и unacked count), session-expired, maintenance-failed,
базовые открытия/закрытия входящих S2S и shutdown-requested. Это начальное
покрытие операций, не полная замена всех журналов модулей Prosody.
В журнал не передаются пароли, соль/ключи, SASL base64, nonce/proof, resume/push
токены и XML/тела сообщений. Имена аккаунтов и peer-адреса присутствуют для
диагностики, как в Prosody. Дополнительный фильтр редактирует sensitive field
keys; escaping исключает вставку новых строк/control characters в запись.
Нужен фрагмент одной неуспешной попытки Conversations/monocles, включая version
и перечисленные события. До получения этого фрагмента причина конкретного
оставшегося отказа на вашей установке не установлена.
## Изменения 0.7.1
Одинаковые console destinations (включая aliases) и одинаковые строки путей
файлов объединяются с union уровней; overlapping rules не создают дубликаты.
Разные destinations получают независимые копии записи согласно своим уровням.
`sasl-attempt` теперь записывается до inline validation. `sasl-inline-options`
содержит только requested/available flags без payload. Необъявленный cached
Bind2/SM логируется как `inline-request-ignored` с причиной bind2-disabled или
sm-disabled и fallback=post-auth-stream-features. Это не ошибка пароля.
Malformed enabled inline extensions сохраняют rejection и более точный detail.
## PEP/PubSub в 0.7.2
INFO pubsub-iq-result содержит классифицированные action/node_kind/status/condition,
precondition_not_met и счётчик deliveries. Для disco — pep_identity,
persistent_items, publish_options. Идентификаторы устройства/элемента/запроса,
полные имена узлов и payload не печатаются. WARN iq-dispatch-failed содержит
безопасный io_kind. Значение deliveries не доказывает получение клиентом.
Интерпретация ошибок и проверка после обновления — PEP-DIAGNOSTICS.md.
## Содержимое результата PEP в 0.7.3
`target_scope` классифицирует цель запроса без её адреса. У successful items
result `items_count` — число непосредственных item, `first_content_kind` —
известный класс первого payload или none/other/nested-item, `first_device_count`
— количество непосредственных device в распознанном списке первого item.
Никаких значений device ID или bundle bytes. Это структура XML, не проверка
валидности ключей, доверия или числовых ID. Для других операций этих счётчиков нет.
`implicit` означает отсутствие to; сам по себе он не утверждает выбор аккаунта.
## HTTP и PEP0.7.4
HTTP diagnostics: listener-ready, connection-open, tls-established,
request-complete route/status, connection-closed phase/reason. Routes ограничены
websocket/bosh/other; raw URLs, queries, Origin/headers/bodies не пишутся.
Для подключения Converse: CONVERSE-WSS.md.
PEP IQ: device_protocol legacy/omemo2/other, valid_device_count и
invalid_device_count. notification-generated: content_present и такие же
счётчики локально созданного сообщения ДО routing, не подтверждение доставки.
ID/JID/ключевые данные не добавляются. Подробности — PEP-DIAGNOSTICS.md.
+68
View File
@@ -0,0 +1,68 @@
# MUC: расширения и восстановление0.7.6
Сопоставление выполнено с предоставленной Prosody cafd74b9c5ea: plugins/muc
и mod_muc_mam.lua. Поддержка относится к встроенным расширениям этой ревизии,
а не к произвольным community Lua plugins.
Добавлены hats из affiliation data, язык комнаты, политики PM/модераторских PM,
фильтрация presence по ролям и формы конфигурации. Поддельные occupant-id/hats
и MUC user identity из клиентского сообщения удаляются. muc_vcard и
muc_occupant_id можно отключить. Настройки MAM включают muc_log_all_rooms,
muc_log_presences, muc_log_include_total; presence хранится отдельными событиями,
обычный MAM-запрос выбирает groupchat сообщения как в native.
История работает без MAM: ограниченный буфер, maxstanzas/maxchars/seconds/since,
delay и раздельный subject. Архив MAM продолжает поддерживать историю persistent
комнат. Удаление комнаты очищает её MAM-архив.
## Как восстанавливается членство
При SIGTERM/Ctrl-C сервер сначала сохраняет метаданные комнаты и native
`state/<roomnode>.dat`, затем завершает соединения. Сохраняются nick, полный JID,
роль, show/status/priority и последнее сообщение истории. Это относится также
к временным комнатам с участниками. Транспортное отключение во время shutdown
не считается добровольным выходом из комнаты и не удаляет checkpoint.
После запуска сохранённые участники ожидают восстановления до300 секунд.
Они не становятся активными адресатами маршрутизации автоматически. Когда
тот же полный JID проходит SASL, bind и отправляет общую available presence,
сервер повторно проверяет комнату и восстанавливает членство, nick, роль и
presence. Одного совпадения bare JID или resource недостаточно.
Клиент может по-прежнему явно войти обычной MUC presence.
Отпечаток конфигурации должен совпасть с сохранённым: изменение пароля или
прав комнаты отменяет автоматическое восстановление; требуется обычный вход
с актуальными параметрами. В presence state не записываются MUC-пароли и
произвольные расширения. Пароль комнаты остаётся в исходной native config,
как и до этого. Тот же checkpoint не продлевает grace при повторных перезапусках. Успешно использованная запись восстановления
погашается на диске до отправки результата клиенту, чтобы авария не вернула
старую роль после выхода или снятия модератора.
Неактивированные временные комнаты очищаются после истечения срока.
Native формат читается/пишется и проверяется настоящей Prosody в обе стороны.
Для автоматического восстановления используются checkpoint с отпечатком и
временем Rust; старый native state без этих полей сам по себе не является
разрешением на автоматический вход. Обычное повторное присоединение доступно.
Это восстановление XMPP-членства в комнате: старые TCP/TLS-сокеты после
остановки процесса не существуют. SM resume между процессами не реализован.
Аварийный SIGKILL/отказ питания не создаёт новый checkpoint: гарантируется
проверенный штатный shutdown, а не полный crash recovery.
История ограничена `max_history_messages`: по умолчанию100, допустимый внутренний
предел4096. Состояние комнаты ограничено4096 ресурсами. Необязательные presence
поля слишком большого размера и последнее сообщение больше16KiB не включаются
в checkpoint; это не мешает сохранить членство. Текущие сообщения доставляются
по обычным транспортным лимитам.
## Проверка и границы
Автоматические тесты используют отдельные временные данные. Сетевой сценарий
останавливает процесс с живыми клиентскими socket, запускает его повторно,
проверяет persistent и temporary комнаты, запрет чужих identity/resource,
восстановленные роли/presence и доставку сообщений. Native oracle проверяет
перенос state с несколькими ресурсами туда и обратно.
Полная production-миграция, непрерывные федеративные reconnect и все community
расширения не проверены. Конкретные результаты — VALIDATION.md; общие пределы
сервера — COMPATIBILITY.md. Реальные клиенты должны повторно аутентифицироваться.
+131
View File
@@ -0,0 +1,131 @@
# PEP «повреждено»: проверка 0.7.4
В предоставленном журнале0.7.1 monocles и Conversations успешно авторизовались.
Содержимого PubSub запросов/ответов в INFO-журнале не было. Поэтому изменения
0.7.2 устраняют воспроизведённые ошибки совместимости и добавляют нужные данные
для следующей диагностики, но не доказывают причину именно вашего индикатора.
## Предикаты клиента
В проверенном monocles AccountActivity ветка PEP broken использует
AxolotlService.isPepBroken(), а не только bare-account disco. Флаг устанавливается
при ответе с ошибкой, отличной от item-not-found, на чтение own bundle, при
ошибках публикации device list, кроме ожидаемого precondition-not-met, и при
повторяющихся пустых device list. Отсутствие узла при первом запуске нормально:
сервер должен ответить item-not-found, затем принять публикацию. Источник master
может отличаться от версии установленного приложения.
## После обновления
1. Пересобрать и перезапустить сервер. События starting/ready должны показывать
0.7.4. Выполнить переподключение клиента; если статус сохраняется только в
текущем процессе приложения, полностью закрыть и снова открыть приложение.
Удалять аккаунт, локальные ключи, device list или серверное хранилище не нужно.
2. Включить существующий INFO sink (JSON или plain), воспроизвести открытие
настроек аккаунта/обновление аватара/публикацию OMEMO.
3. Проверять pubsub-iq-result для того же connection. node_kind различает
omemo-bundle, omemo-devices, avatar-data, avatar-metadata, bookmarks, custom;
неизвестное имя не записывается. status=result означает успешный ответ на IQ.
4. items/item-not-found до первой публикации ожидаем. conflict +
precondition_not_met=true допускает owner configure GET/SET и повтор publish.
forbidden, feature-not-implemented или internal-server-error на собственном
узле требует разбора; iq-dispatch-failed io_kind=PermissionDenied указывает
на ошибку доступа к данным. io_kind=none означает не-I/O ошибку; её текст
намеренно не печатается, чтобы не раскрыть содержимое данных.
Событие формируется для IQ, прошедших локальный dispatch. Ранние ветки
блокировки/удалённой маршрутизации могут его не формировать; отсутствие события
само по себе не доказывает, что клиент не отправил запрос.
Disco flags подтверждают рекламу features, но не доступность каждого узла.
deliveries — количество созданных маршрутизаций, не доставки/ACK. Чтение и
публикация PEP не требуют согласия на раскрытие XML или OMEMO данных в журнале:
диагностические поля ограничены известными значениями протокола.
Автоматические проверки: tests/pep_client_interop.rs, tests/pep_client_network.py,
tests/pep_discovery.rs, tests/pubsub_persistence.rs, tests/iq_errors.rs. Network
fixtures используют синтетические ключевые bytes, не настоящие приватные ключи.
Полная миграция реальных данных и поведение Android приложения пока не проверены.
Источники: https://codeberg.org/monocles/monocles_chat —
src/main/java/eu/siacs/conversations/ui/AccountActivity.java,
crypto/axolotl/AxolotlService.java, generator/IqGenerator.java,
xmpp/pep/PublishOptions.java; https://xmpp.org/extensions/xep-0060.html;
https://xmpp.org/rfcs/rfc6120.html. Master mutable; дата проверки 2026-10-20.
Проверка мигрированных форм выявила и исправила несовместимость0.7.1:
notification_type, itemreply и native payload_type выдавались в форме, но
не принимались parser при повторной отправке. Теперь payload_type соответствует
wire pubsub#type; notification_type normal/headline и itemreply
none/owner/publisher валидируются. Как в native PEP, уведомления PEP сохраняют
headline; standalone PubSub учитывает normal/headline. itemreply=publisher
включает bare publisher в чтение и уведомления, none/owner не раскрывают его
(поведение предоставленного native handler). Поддержаны publish_model
open/subscribers с проверками блокировок/outcast, без изменения owner-only
прав на create/configure/retract. Неизвестные enum значения отвергаются.
Baseline regression на исходниках ZIP0.7.1 воспроизводит rejected whole-form
submission и ложные default preconditions; патч проходит эти сценарии.
Старый Rust config.type нормализуется в native payload_type при обработке
узла; это предотвращает дублирование pubsub#type при смешанной миграции.
## Успешный IQ, но старый первый item
Исправлен порядок выдачи: новые элементы теперь первые, как в supplied native
Prosody. Старые0.7.2 ответы на multi-item node могли содержать пустой old item
перед populated current item. IqParser.getItem monocles выбирает первый item.
Это отдельный дефект от malformed/error ответов; type=result недостаточно
для доказательства корректного состояния, видимого клиенту.
С0.7.3 для self-account/implicit items проверяйте items_count,
first_content_kind=omemo-devices и first_device_count. Если счётчик устройств0,
первый список структурно пуст; если items_count>1, узел хранит несколько записей.
Сам по себе пустой список допустим и не означает поломку OMEMO. Другие аккаунты
могут законно отвечать forbidden из-за ACL. Диагностические поля не раскрывают
ID, XML или ключевые данные. Для подтверждения прежней production причины
нужна структура реальных данных; в текущем журнале0.7.2 этих счётчиков нет.
Regression: tests/pep_item_order.rs и tests/pep_order_network.py. Дополнительный
ignored oracle запускает настоящий mod_pep и подтверждает порядок current,old.
Источник parser: monocles IqParser.java getItem180-190/deviceIds193-228
(проверенный mutable master); native source: plugins/mod_pubsub/pubsub.lib.lua
archive_itemstore:items reverse=true, util/pubsub.lua service:get_items.
## Что установлено по production0.7.3
Own-account PEP discovery успешен; own devices replies имеют1 item и
непустые XML списки1/2/6. Исправление порядка нескольких items не объясняет
этот случай. Элементы device ещё не означают успешно разобранные Android ID.
Теперь valid_device_count считает уникальные signed32 ID по inspected Java
Integer.valueOf (без whitespace trimming), invalid_device_count — пропущенные/
некорректные/выходящие за диапазон. device_protocol различает legacy/omemo2/other.
Это client-parser diagnostics, не полная валидность XEP0384 или криптографии.
notification-generated показывает структуру локально сгенерированного события,
items_count, content_present, device_protocol и счётчики. Событие пишется ДО routing,
без transport connection ID и без адресата: оно не доказывает получение клиентом.
Не все remote delivery ветки проходят через этот logger. Payload suppression
include_payload=false может давать пустой item event при непустом IQ; тест покрывает
этот случай. Флаг false здесь не доказывает, что именно ваш узел настроен так.
Для определения ветки клиентской ошибки используйте отфильтрованный клиентский
журнал, а не полный XML/ключи. При доступном adb:
```sh
adb logcat -v brief | python3 scripts/filter-android-pep-log.py
```
Для сохранённого клиентского журнала:
```sh
python3 scripts/filter-android-pep-log.py < client.log
```
Выход содержит только фиксированные причины: empty-device-list-retry-limit,
device-list-publish-error, bundle-read-error, bundle-publish-error,
empty-device-list-publish. Строки без этих известных фраз не выводятся. Версия
клиента может использовать другие сообщения; отсутствие вывода не доказывает
отсутствие проблемы. Пароли/JID/ID/произвольный текст/XML не копируются в выход.
Нужны одна такая причина и соответствующие notification-generated/own-account
IQ события для дальнейшего конкретного исправления. Текущий источник master
не гарантирует совпадение с установленной версией приложения.
+115
View File
@@ -0,0 +1,115 @@
7136ea911bb6b6d352f703f80efeebde921028ea9dc39cd0d2cd55ea465f8c37 examples/config.json
8a65739eb5c24f10b9f2c509f0bd050fb1115706e6a41fdf804b9e0e44f583fd examples/config.toml
ca86274bcf4dc5daebbf69c9f003854afca92954719aff068f810e0a3d615dea examples/config.yaml
bbc2591581d382fef5fb918a480e6c338c7e3e3f2025df5509f51708534631e7 examples/converse-origin.fragment.yaml
66ea9e2b58f6a39b70911b9981cae5e99625483af7a41168e24923464de8ae56 examples/reverse-proxy.fragment.yaml
16e476e50c5802efcbb7d1aa68141c183c60f5ab17037d697dce720c209141f4 scripts/docker-entrypoint.sh
6fcb8a4977fee840d826951b0c30a3f2477c55d00860c79e99f635ca6e215e2b scripts/filter-android-pep-log.py
a83cfdb6d910af1add9a14df7b0bd43fb0e2a23342f1a1eec831d47c659bba6f scripts/integration_http.py
b1018e1b279c89f6cf14b4017e4f1b14e9165afef2f668cec6ac8bbe0c710d85 scripts/integration_xmpp.py
89e3fc6202656363712f2605efcfe1669a5ae77e5b08da790e4e481772a85e00 scripts/load_smoke.py
86089451e83f881b4496b3cd7157e25d2285e511696283075287177b4a46550a scripts/make-demo.sh
038052022c9b38f59fc0a6f91b0ef36911b0a023e467be359affd469d7015c04 scripts/native-federation.sh
6d8423de4f2db9198c8f6c19175f0fef4502f34002103f88cca7d8661100d073 scripts/prosody_compat/README.md
e08ac6136cce27cda2ddbd510da0f25750766ab0150a9f4b8f87c953276d16e9 scripts/prosody_compat/oracle.lua
2c7a2c946885205e9df38b97305073a8ac72f58ac8ff84fc6f9af320c35bbc96 scripts/prosody_compat/verify.sh
1b9ed063daf3e0320819b4fe0135c96dd27e49877044aa2f5093b8ab4fbda41d scripts/smoke.py
4d9702d73fab7c20f1e5b9798c0f53c6e1e77aab15074c1c8118df9ae5abd795 scripts/verify-local.sh
a2e47f547ab9349f84ee6c4f8e51c147b7110b41a82c17cdb938027a84d82ef3 src/account_modules.rs
5637f816586f0613b83e14d0ed478bd539f325b70ccbfc9fdf893adbe494453d src/admin.rs
89d7e29d8f8daab614c9c836864b166fdaa324ca035c2d3d5f95639c24b2a9e1 src/archive.rs
e15b079a420227ee59e3b7ac305783c51eb59d76a8fb5dd12760547b0f812107 src/auth.rs
83ac35a4c9d20debf006fe80fba8e423c09806fb2526ff384b188ca28d612a5e src/config.rs
6574ad70d5c60c4acf7e01e66dadaa7cd2d09d3b184a611418aeb271f27ebc3c src/csi.rs
834ebe4a1f2d46ab932c14c0a2c7be3375873a71ef56026d372c86e60ef041fc src/data_lock.rs
1c8aa5cb816a32a0f9f24589ac00beba27544a83c3d9aad771523a1d1cbcd4c8 src/extras.rs
dca8959effb123b94e1fbd42c561a79c721178c4b612a004db9f9fccb3b8950d src/federation.rs
46a59bc6689f0931670547e26b3dc4beae3aa210eee1aae832070925b377499c src/http_altconnect.rs
43ab37be4b6ad41e51c3918c8806d91650c1ee2b62977caade639920abf7aa44 src/http_config.rs
3fa73ae129fe552bd7de7afca0617a1c18bf4d3b36a39023bfec036bca17ffc5 src/http_proxy.rs
9366d1aaa7e13d06cf7547cfb1e10461091ba876413927e0ad49df41c3661e6f src/http_service.rs
c4fd5046b55510f87a1c87e2b293500f0a01b76f22dacfa6d145e857e857fc09 src/http_transport.rs
9f27d509f7e58467c92e1f7ac9175deeb7347c61a45664bb35d17ed4ad0d0d0e src/lib.rs
a21e1119ea0271b63935e92eb106ab6076f0035e6d3a06c21a352f152b9b37db src/logging.rs
58ce2a9daa36ac26b39c8f263a16f4fa8cc4e57c91bbbf5b24a6aad3f1a326e0 src/lua.rs
85616b8aa8e6fc7ac9aeaa75f256463ee9c2527a590832b243481720caabbe42 src/main.rs
71d5d185900b9cde190e10e2f28371cd5042d98b5900b4385d823f724234fced src/mam.rs
0f780d95523b41c4ae242bd4a1fb6b65ff57826dca6d23ac73a1a1459609ec0a src/muc.rs
d8263eb28f5cdff362512a6b13217aa8f7574f4a3d54b7bcb6ba7930f8c353d8 src/muc_history.rs
4c151ffcdc36e4a3e680f859d4dc7ba16b0162d4f1fe6fb470df4c5e21197e5a src/muc_recovery.rs
7d7114a22ef3bf02f9caaf578f0a50d4f75b4dcd4b335b4cb8425d9716c97e71 src/pep_diagnostics.rs
f09a6479b76c9c601a169b5f1f9cf1364e82df5ae27e4bab8d1b1428b5cad457 src/preauth.rs
a7333b31a57780c57f2d30620cdfaeb7b1215808865960bb7e5b595d3ad98f7c src/protocol.rs
761e29d6431fac5c2a4a24bcfca1f393949a5c55585fd6b0dd7a4f6e9f94a10d src/pubsub.rs
913cd033f60a68f6c7cf9b3adbaf76db1c5c9bc88a0599196d373b16b64c0a1e src/push.rs
bec477f2520af6a9d7ca54e43eb12158b53e3cf09057653e504dfdeab956885e src/sasl.rs
46b532fa98cfe8d5d6878ea7bdcc535132a678906caf5f84e7e8feb726048a25 src/server.rs
894f11389bfc3fddc3508396d106146261376999f7adcef5a049458f6b4028cf src/sessions.rs
71d7ce1036a091d8c27016ea7ce4cffedf904dfca9d1cc4891b7dc66a1e06a4e src/storage.rs
462b00edb2c1e02dd34524bafe4f82b5ef902028b44310ba31b085d31f4dc2aa src/tls_binding.rs
f9b023565711e0217238b53fb678c5fb14849cdcd2efcd0fce249018274fad69 src/wire.rs
b4eb7a230570dfde0fd0d301a6ace36559a5eae3e1402e42c76f014f61739c24 tests/_wire_client.py
45613ad6c53087a50c6c3a7969b30783578c334499bc6baceadb2d18b0b3ea4e tests/admin_socket.rs
0645fda01bede4362d998ef22aefdd2c02578dd2c2aae3878d0cff87b3679835 tests/android_sasl_network.py
366b315521bd4f4448c0bac17bf74ddb77a728ff41fc48e29d46377625e0330f tests/archive_mam.rs
cb6b7bbcd1bc7ee01a4ccf892d4b6074765685c56c4b8bb46e0381b834577b6a tests/auth.rs
b3c3470f0b9b64584abf98c26a4578b0b90089086d00f7b07187aa5f6db6a417 tests/cli.rs
cc58adbb0fc867802b09cf7bd0d25397a273e721fbd0d0cb0ce30c19e80c13a2 tests/config.rs
ba364e9ea561624b2c649cd0dda559e213c75e6d7080ae85f0c23f1f13d117e1 tests/csi.rs
3f5b4558cf380e5e9e849baf6935b267598f33d8614dfe960068471fba2f240a tests/csi_native.rs
d4d8d982c6f4ab96a809b598ea9ead7f64fa9d916547f1eb9d797aa71db64fdb tests/data_lock.rs
be18a83fb5884cfdbd2ddc542cb25fd07b70f139cbdce1ae67562568df42a2e2 tests/debug_legacy.rs
63753c2e3524e8e7826bc2d48e2bd78e36e1cc56fde9da19950d5c35e1c38f77 tests/federation_tls.rs
1aaf06ba872cb5dbe0545afffdd8efddd0eae7305de06f3b3b75c19289581865 tests/fixtures/prosody.cfg.lua
19d570b92075d1355257c3798e4c52e404cc356dfe5dfd0c8fb384e4e7150682 tests/gajim_discovery_network.py
4398bf0639c31f0df328f0b0f1a5df17f2e69d2df84514845bba882146de06bc tests/gajim_features.rs
a346e70af3657fbf56e0bb1c39c427f630de8c349e6858b8933c52f42a21ab46 tests/http_altconnect.rs
e124050689fd712fa5dce058add7d9f0b6b51ad163a11e835a650bed2513461e tests/http_altconnect_network.py
f1ea3eb78d5c716f4281cf17cb41b9fb22e08dbb4cf08ed9c8477c79b7d2382b tests/http_proxy_paths_network.py
7c599c83eb999cd8776f0ce6811db8f478366b840311f2e513823f70b5d7cd30 tests/http_transport.rs
278db32ba0dec882b0af8f1969da87670ff3d2d749d32320154dabef51cff191 tests/http_upload.rs
da2fc65e931ec74fbcdcd26d04f2cb073e2dc1e354139135166c79580973a477 tests/iq_errors.rs
05160f17f8098466a67c9b069c165dc9d94a84ab03a49896169f110baf8e869a tests/logging.rs
dfc3429e3e755d4c99ec1bd8ee6fb0f1f6aaf86414d5adaca7e9e3b18c7fe3f7 tests/logging_network.py
329ccbd4faee6cbbfa92d2fa0248844721b7ffc033baae4ec2570e9893f5df9f tests/message_routing.rs
dafc2dd1e1d9e860482eb5bdf98c293842dea6a2790d27b94bf1885be3324690 tests/muc_access.rs
c28c7e9128cd1483df90dbccc7af0d756a5edc813bdff604b4560a349a844754 tests/muc_domain_bans.rs
b7d16e15e069649b9f0b055f0e0227117bb6d167c3a76cc713bd99fa19a6a60e tests/muc_extensions.rs
59561f914274b437497ff35be00ed535ea012d18c99b589c8f944ea365b7112d tests/muc_flow.rs
b24bd920f096576c2009ff1ccc0366eb8734c5f0b2feb39f04ad7087268a94b9 tests/muc_history.rs
1f3df5f3f39143adc2b2a419fac0cd74b2229337ffa86570261d1f6ac61137a1 tests/muc_native.rs
ac1caa62a3cd91e74bd7100a5e542c404e97aec61a34e9627900b458c2ee3806 tests/muc_recovery.rs
b5c2e179ee61287a8ec8b6bc593d8c960ca4f87cc71f2230e0c033fadd701ed3 tests/muc_restart_network.py
e89a1ec8bfd4608795f6457710622b12a1520628184bc3f033cc6062e01c25d4 tests/muc_restart_state.rs
13349e35ebaf65242cfb0bdbbccf0ea83acd80a1251312975141c2b74cccc1d7 tests/muc_state_native.rs
cd13d1481dba7725986c47b5e5eb606241c8bbc32ab05d53f536f4431d6f7a3d tests/pep_client_interop.rs
741cbcbf5552a8c3e5e7757a29de76ecd29da58f9d1184a35a075f1ed7aa5af9 tests/pep_client_network.py
dd68c50d7d7cfd7871f69331a2787e0336dcab73762a82c599cee2a39920ae95 tests/pep_diagnostics.rs
2dbcdf8887762f6977618c267bb9c880351f9927462b05321bbbfa651eb16ff5 tests/pep_discovery.rs
42b6c19d14e60b0c93193b4df473a0dd7cfcdb19250245ab94a7e1a237608395 tests/pep_item_order.rs
3e349f9219da20602a239a6c4ce71dc045faf9afb1c36599e2b41e90b2423508 tests/pep_notifications_network.py
83cea7164e5e6aadfc126b6b8349eb242bc113ba638385fa13c51ffda32aa57a tests/pep_order_network.py
6a078c3fbddff07131f3247d01fb1e13bc923888d93ea30175adda471cbece2f tests/preauth.rs
b4048d34620bd0726cfb79d4d1cca9635f27ca8e58c8ad61d619af63672a2e09 tests/preauth_native.rs
06a66caa73c179b9d3b239e6f4deac6fc876d8c8dfeafe302f043d85d9f4beb9 tests/preauth_network.py
fa1eae49717ca9fb8b118f40058dff0c068c8f28823ea1b0ac42fd0c3e935bda tests/pubsub_native.rs
359de6dd2d960e63296f1109617f139bed2eac40409e50f72ff745897ba943ac tests/pubsub_persistence.rs
6fb7475ca7359ad870a83d5f143a1994c7bd34e9b56e275f7496ba8da291ee17 tests/push.rs
b8dd71798f96931f7ab4489cdb1e258556f41411815ef38d3a03e80e4e8fbdfc tests/push_discovery.py
abf5e6a32ab542ccba5861eaaf7aed9a86b8306abfe2c329646d54e43176dc0c tests/reference/COPYING
1ecd0a5c122910cbd066922c95ff0c32e945a07e2c9b0a37a30e5f035b5ecea6 tests/reference/configmanager.lua
f407c6565fa73b6653e7e73204daa65ae1d87111e82c6b96154aea76497ad65d tests/reference_prosody.rs
5ab78e9319d6004d65d35cd4d04dbb99d4ea5ffd8da00473d874bb26000fce35 tests/resource_rebind.py
2e79de5ef8d3be81ac8f715bb96797b6e8e39cdcd61c13d8d873a96b53cb52e4 tests/resource_sessions.rs
cefd1001c9619456402223fa89e449f65599c4397f523860e965ca192a4fd915 tests/sasl2_bind.py
e14450fee2a25e5917682d9b71395adf76ef82c2a627060a4bb33aa839b6a280 tests/sasl2_cached_inline.py
198cfa72ece0124e5ac992e30dbabeb4b60df87bada33999ba66d62220082bc6 tests/sasl2_resume.py
ddd9d5b46dc943138a334c64477fb11970b3d45e4cfbeaafc7348754f1e5e29e tests/sasl_accounts.rs
a7d1519f4f44cc7bfad3d20bcfdf455e92abdd084feed493ffc9e0267a387740 tests/sasl_network.py
4748fa227743686f78a0fa0364735d2dda5995f8d70a79ad03c1aa1decb42978 tests/sasl_retry_network.py
d8882b8aabd6ff603c81fbbc259eefa68772afb2b3eec2e003ac29efd65d146b tests/sasl_web_network.py
72f2d60e47e5295b82d497289b78925a64a1d986c70c277015ae228d211d32bb tests/storage_accounts.rs
5c38afd5f77b5774552d12c461902ffaae21de11735560c6f0088e3dda8afa58 tests/storage_compat.rs
8724991fdf22471952cf1a0fac863abe837069c93d3c8d2fa751af4f6bbc3e38 tests/tls_binding.rs
5bea9b5546d3a6ae4fe78d17acbc3f6e6a1d5e1d13b32f2aa88d0e320892b7c5 tests/tls_plus_network.rs
e454204af26d5a356cb6aa838c3b46f4d13c552b5bd36d6b01bcd6f604821ff2 tests/wss_interop.py
+10
View File
@@ -0,0 +1,10 @@
The original Prosody configuration loader in tests/reference/configmanager.lua
is from commit cafd74b9c5ead46eb58910359eb266e1732b0aa1, supplied by the user.
It is used for differential testing only. Its copyright notices are preserved;
its MIT/X11 license is in tests/reference/COPYING.
Rust runtime code is a new implementation. Dependency licenses remain with
those dependencies; Cargo.lock records exact versions used.
API references consulted:
- https://docs.rs/mlua/0.12.2/mlua/struct.Lua.html
- https://docs.rs/serde_yaml_ng/0.10.0/serde_yaml_ng/
+68
View File
@@ -0,0 +1,68 @@
# Проверка 0.3.0
Проверено 2026-10-16, Linux x86_64, Rust 1.99.1
(`58cf8f9c3`, 2026-10-13). Использована чистая папка сборки, отключена
инкрементальная компиляция. Для тестовой сборки отключены debug symbols;
release собран с обычной оптимизацией Cargo. Исходники после проверки
больше не менялись.
| Проверка | Результат |
|---|---|
| `cargo test --locked` | 123 passed, 0 failed, 6 ignored |
| `cargo clippy --locked --all-targets -- -D warnings` | Успешно, без предупреждений |
| `cargo fmt --check` | Успешно |
| `cargo build --release --locked` | Успешно |
| Native storage/auth oracle | Успешно для SHA-1 и SHA-256, оба направления Rust ↔ настоящая Prosody |
| Native PEP oracle | Настоящие mod_pep/util.pubsub читают данные Rust, публикуют замену; Rust читает результат |
| Native MUC/MAM oracle | Настоящие mod_muc/mod_muc_mam восстанавливают комнату и affiliations, читают историю Rust, архивируют реальную native рассылку; Rust читает результат |
| Native CSI oracle | 15 решений о важности stanza совпадают с оригинальным mod_csi_simple |
| Большой архив, отдельный ignored test | Успешное потоковое чтение архива больше 128 MiB |
| `scripts/smoke.py` | TLS-сертификат, пароль и отказ неверному, независимый расчёт hash, bind, ping, сообщения, поддельный from, отказ входу без TLS |
| `scripts/integration_xmpp.py` | Roster/subscriptions, IQ routing, CSI/whitespace flush, MAM, блокировка, OMEMO PEP payload, MUC, offline, SM resume и корректное завершение по SIGTERM |
| `tests/sasl_network.py --spawn --hash sha1` | SASL1/SASL2, SCRAM, SSDP, подпись сервера, отказ неверному паролю |
| `tests/sasl_network.py --spawn --hash sha256` | То же для SHA-256; постоянный client_id, native push registration, max восстановления 259200 |
| `scripts/integration_http.py` | Реальные WSS и HTTPS BOSH, auth/bind, CSI, унаследованные namespace, roster/chat, upload IQ/PUT/GET и запрет повторного PUT |
| Federation TLS tests | Реальные взаимные TLS/CA/EXTERNAL, отказ подмене домена; 23 сообщения используют одно соединение, idle/EOF вызывают безопасное переподключение |
| `sh -n scripts/docker-entrypoint.sh` | Успешно |
| Docker image / Compose runtime | Не запускались: Docker в этой среде отсутствует |
| AF_UNIX admin socket test | Не запускался здесь: окружение запрещает Unix sockets. Протокол/команды отдельно проверены через in-memory duplex |
Таким образом, дополнительно к 123 обычным прошли **4 native oracle tests и
1 большой архивный тест**. Из шести отключённых по умолчанию тестов только
AF_UNIX остаётся непроверенным на настоящем сокете этой сборки.
Проверки формата не ограничены собственной копией парсера: oracle загружает
переданную оригинальную Prosody `cafd74b9c5ea`, её настоящий modulemanager,
storagemanager и скомпилированные native-библиотеки.
## Короткая нагрузочная проверка
`python3 scripts/load_smoke.py --clients 500`:
- 500 из 500 TLS-подключений авторизованы и получили разные ресурсы.
- 1500 ping: median 12.512 ms, p95 15.492 ms, max 19.709 ms.
- 500 из 500 направленных сообщений доставлены; ошибок нет.
- Создание подключений: 0.604 s при параллелизме 50.
- FD: 10 до нагрузки, 510 с подключениями, 10 после отключения.
- Измеренный peak RSS 24352 KiB; CPU процесса после нагрузки 1.3 s.
Это один аккаунт с 500 ресурсами на loopback, TLS+PLAIN, короткий прогон.
Это не тест 500 независимых пользователей, не нагрузка полного набора модулей,
не долговременный benchmark и не доказательство отсутствия утечек памяти.
Память allocator после отключения оставалась выделенной. Сырые измерения
доступны в `validation-results.json`.
## Что ещё не доказано
Нет проверки настоящими Monal/Conversations/Gajim, внешним push-шлюзом,
разнообразными публичными XMPP-серверами и полной копией рабочих данных.
Не проверены upload 10 GiB, длительная нагрузка, Docker UID/GID/TLS и откат
вашей рабочей установки. Это необходимые проверки перед утверждением
«полная замена без изменений». Функциональные отличия перечислены в
`COMPATIBILITY.md`.
Для повторения обычных проверок — команды из README. Для native oracle —
`scripts/prosody_compat/verify.sh`; для AF_UNIX на целевом Linux:
```bash
cargo test --locked --test admin_socket -- --ignored
```
+63
View File
@@ -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.
+39
View File
@@ -0,0 +1,39 @@
# Проверка 0.5.0
Проверено 2026-10-20, Linux x86_64, Rust 1.99.1. Машинный отчёт:
validation-results.json. Предыдущие версии отчётов сохранены отдельно.
| Проверка | Результат |
|---|---|
| cargo test --locked | 162 passed, 0 failed, 9 ignored |
| Clippy all-targets с -D warnings | Успешно |
| cargo fmt --check | Успешно |
| Release build --locked | Успешно |
| PEP discovery | Bare-account identity и полный набор feature predicates из Monal; leaf node echo/ACL/errors |
| Push discovery | Четыре комбинации PEP × cloud_notify, правильная область identity/features, реальные enable/options/disable |
| Pre-auth TLS | Command discovery, invitation URI/expiry, RFC preapproval, взаимная подписка, single-use replay denial и account isolation |
| Unknown preauth | Forwarding и replay из pending после offline; graceful manual fallback |
| Native invitation oracle | Настоящий mod_invites читает/использует Rust token, Rust использует native token; scoped token native не принимает |
| Остальные native oracles | storage/auth SHA-1/SHA-256, PEP, MUC/MAM, CSI, push body lookup |
| Federation | Двусторонний STARTTLS + SASL EXTERNAL с настоящей Prosody cafd74b9c5ea |
| TCP, WSS, HTTPS BOSH, upload | Повторены на release 0.5.0; также SCRAM/SSDP, SASL2/Bind2, offline/SM и SIGTERM |
| Нагрузка с MAM | 100 аккаунтов, 500 TLS-соединений, 5000 ping, 5000 доставок и ровно 10 000 архивных записей |
| Большой архив | Отдельный ignored test архива больше 128 MiB |
Восемь дополнительных ignored tests выполняются отдельно: шесть native
module/storage checks, native federation и большой архив. AF_UNIX admin
socket остаётся зависимым от разрешений среды; результат попытки сохранён
в validation-logs-0.5.0. In-memory admin protocol tests входят в обычный набор.
Полный запуск: bash scripts/verify-local.sh. Новые сценарии:
```bash
python3 tests/push_discovery.py target/release/rust-xmpp
python3 tests/preauth_network.py target/release/rust-xmpp
```
Native инструкции — scripts/prosody_compat/README.md. Проверено соответствие
тестируемым клиентским predicates по исходникам, но реальные Monal/Conversations
и APNs/FCM шлюзы не запускались. Docker, UID/GID/TLS целевого хоста и копия
рабочих данных не проверены. Короткий loopback load не является длительным
benchmark полного набора модулей. Полная замена Prosody пока не подтверждена.
+31
View File
@@ -0,0 +1,31 @@
# Проверка 0.6.0
Проверено 2026-10-20, Linux x86_64, Rust 1.99.1. Полный лог:
validation-logs-0.6.0/verify.txt. Машинный отчёт: validation-results.json.
Предыдущие отчёты сохранены отдельно.
| Проверка | Результат |
|---|---|
| cargo test --locked | 172 passed, 0 failed, 9 ignored |
| Clippy all-targets с -D warnings, fmt | Успешно |
| Release build --locked | Успешно |
| Resource conflict TLS | default/kick_old/kick_new/increment/random; live и hibernating SM; old cleanup isolation; старый token отзывается при замене |
| SM active takeover | Владелец/id/h проверяются до замены; partial replay и отдельное состояние старого транспорта |
| SASL2 inline resume | Full JID, replay после success, Bind2 suppression/fallback, неверная авторизация/owner/token/h и malformed requests |
| HTTP transport | 10 тестов BOSH/WS, включая async cleanup и graceful/abrupt disconnect |
| HTTPS BOSH + WSS | Настоящий engine, SM close и повторный вход с тем же resource под kick_new; chat, CSI, roster и upload |
| Остальные сетевые сценарии | TCP modules, offline/SM, SIGTERM, SCRAM SHA-1/SHA-256, SASL1/2/Bind2, PEP/push discovery и preauth |
| Native module oracles | 6 дополнительных ignored tests: auth/storage, PEP, MUC/MAM, CSI, push body lookup, invitation tokens |
| Native federation | Дополнительный ignored test: двусторонний STARTTLS + SASL EXTERNAL с Prosody cafd74b9c5ea |
| Нагрузка с MAM | 100 аккаунтов, 500 TLS-соединений, 5000 ping, 5000 сообщений, 10000 архивных записей; failures=[] |
Полный запуск: XMPP_LOAD_CHECK=1 bash scripts/verify-local.sh.
Для native проверок нужны переменные PROSODY_REFERENCE_SOURCE и
PROSODY_REFERENCE_LUA; инструкции в scripts/prosody_compat/README.md.
Большой архив проверен в 0.5.0 и в этом прогоне не повторялся.
AF_UNIX admin требует разрешений среды, ранее bind был запрещён.
Проверки проходят на изолированных временных данных. Настоящие Monal и
Conversations, APNs/FCM, рабочие данные, Docker/UID/TLS целевого хоста и
длительная эксплуатация не проверены. Полная замена Prosody не подтверждена;
оставшиеся функциональные различия перечислены в COMPATIBILITY.md.
+32
View File
@@ -0,0 +1,32 @@
# Проверка 0.6.1
Проверено 2026-10-20, Linux x86_64, Rust 1.99.1.
Полный лог: validation-logs-0.6.1/verify.txt.
Машинный отчёт: validation-results.json. Предыдущие отчёты сохранены отдельно.
| Проверка | Результат |
|---|---|
| cargo test --locked | 178 passed, 0 failed, 9 ignored |
| Clippy all-targets -D warnings; fmt; release build | Успешно |
| Android SASL | 32 сочетания TLS1.2/1.3 × SHA1/256 × SASL1/2 × SSDP on/off × valid/invalid binding |
| Настоящий TLS exporter/endpoint | 14 обменов: SASL1/2, exporter TLS1.3, endpoint TLS1.2/1.3, full SSDP lists, server signature, tampered binding и отключённый PLUS |
| WSS SCRAM | SASL1/2 с y,,, отсутствие CB/PLUS, правильный SSDP без пустого CB separator, server signature, bind и ping |
| Certificate digest | 4 теста с OpenSSL fixtures: weak-hash upgrade, SHA2, RSA-PSS, ECDSA, malformed/unsupported DER |
| Старый 0.6.0 | 4 Android TLS1.2 отказа воспроизведены; WSS SSDP mismatch воспроизведён отдельно |
| Остальная сеть | TCP modules, offline/SM, SIGTERM, SCRAM, Bind2, inline resume, PEP/push discovery, preauth, resource policies, HTTPS BOSH/WSS и upload — успешно |
| Native Prosody | 6 module/storage ignored tests + 1 двусторонний TLS EXTERNAL federation test — успешно |
| Нагрузка с MAM | 100 аккаунтов, 500 TLS-соединений, 5000 ping, 5000 сообщений, 10000 архивных записей; failures=[] |
Запуск: XMPP_LOAD_CHECK=1 bash scripts/verify-local.sh.
Native проверки требуют PROSODY_REFERENCE_SOURCE и PROSODY_REFERENCE_LUA;
инструкции в scripts/prosody_compat/README.md. Большой архив проверен в 0.5.0
и сейчас не повторялся; AF_UNIX admin требует разрешений целевого хоста.
Android selector в Python повторяет исследованный путь Conversations, а не
всё приложение. TLS1.3 exporter проверяется настоящим Rust/rustls клиентом;
Python на TLS1.3 использует endpoint binding, поскольку stdlib не даёт exporter.
У current monocles есть дополнительный fallback; детали в ANDROID-SASL.md.
Реальные Monal/Conversations/monocles на устройствах, APNs/FCM, production data,
Docker/UID/TLS целевого хоста и длительная эксплуатация не проверены. Остаточные
различия — COMPATIBILITY.md. Полная замена Prosody пока не подтверждена.
+28
View File
@@ -0,0 +1,28 @@
# Проверка 0.7.0
Проверено 2026-10-20, Linux x86_64, Rust 1.99.1.
Полный лог: validation-logs-0.7.0/verify.txt.
Машинный отчёт: validation-results.json. Предыдущие отчёты сохранены отдельно.
| Проверка | Результат |
|---|---|
| cargo test --locked | 187 passed, 0 failed, 9 ignored |
| Clippy all-targets -D warnings; fmt; release build | Успешно |
| Logger unit | 8 тестов: levels/maps/ranges/sets, append0600, JSON/plain, redaction/escaping, threads, rotate и failed-reopen atomicity |
| Logging network | 8 сценариев с настоящим TLS и JSON-файлом: корреляция, успешный вход, wrong password/proof/binding, client disconnect, unknown/corrupt account, SIGHUP reopen и повторный вход |
| Секреты в журнале | В тестовых записях нет отправленных паролей, SASL payload/proof и body сообщения |
| SASL normalization/retry | 20 TLS1.2/1.3 × SASL1/2 случаев canonical PLAIN/authz/bind, invalid authz, aborted retry и active restart |
| Предыдущие сетевые сценарии | SCRAM/PLUS/SSDP/Android, WSS, TCP/SM/offline, SIGTERM, Bind2/inline resume, discovery/preauth, resource policies, HTTPS BOSH/WSS/upload — успешно |
| Native Prosody | 6 module/storage checks + 1 двусторонний STARTTLS/SASL EXTERNAL federation — успешно |
| Нагрузка | 100 аккаунтов, 500 TLS-соединений, 5000 ping, 5000 сообщений, 10000 MAM записей, failures=[] |
Запуск: XMPP_LOAD_CHECK=1 bash scripts/verify-local.sh. Native инструкции:
scripts/prosody_compat/README.md; нужны PROSODY_REFERENCE_SOURCE и
PROSODY_REFERENCE_LUA. Большой архив проверен в0.5.0; AF_UNIX admin требует
разрешений целевого хоста, ранее среда запрещала bind.
Тесты используют временные fixtures. На устройствах Conversations/monocles
оставшийся отказ не воспроизведён; для следующей диагностики нужен server log
одной попытки по docs/LOGGING.md. Реальные APNs/FCM, production data, Docker/UID/TLS
целевого хоста и длительная эксплуатация не проверены. Полная замена Prosody
не подтверждена; остаточные различия — docs/COMPATIBILITY.md.
+30
View File
@@ -0,0 +1,30 @@
# Проверка 0.7.1
Проверено 2026-10-20, Linux x86_64, Rust 1.99.1.
Полный лог: validation-logs-0.7.1/verify.txt. Машинный отчёт: validation-results.json.
Предыдущие отчёты сохранены отдельно.
| Проверка | Результат |
|---|---|
| cargo test --locked | 196 passed, 0 failed, 9 ignored |
| Clippy all-targets -D warnings; fmt; release build | Успешно |
| Cached SASL2 inline | 6 конфигураций: SCRAM-SHA-1/PLAIN, good/wrong password, SSDP off/on, Bind2 on/off, SM disabled cached resume, legacy bind+ping |
| Auth baseline | Поведение0.7.0 воспроизводит отказ до SCRAM challenge;0.7.1 проходит fallback |
| Gajim TLS | 4 сочетания modules on/off × allow_registration on/off; domain/ownbare disco, два каталога @to, account/password GET/SET, создание и удаление с проверкой fresh logins |
| Label catalog | 6 unit tests: оба namespace, actual example policy schema, mapping, 15 malformed/unknown schema cases; no implicit ACL |
| Logger | Объединение одинаковых destinations, независимые файлы, console aliases; прежние escaping/redaction/rotation regressions проходят |
| Предыдущие сети | TLS/PLUS/SSDP/Android, logging+SIGHUP, normalization/retry, TCP/SM/offline, Bind2/resume, discovery/preauth, resource policies, HTTPS BOSH/WSS/upload — успешно |
| Native Prosody | 6 module/storage checks + 1 двусторонний STARTTLS/SASL EXTERNAL federation — успешно |
| Нагрузка | 100 аккаунтов, 500 TLS-соединений, 5000 ping, 5000 сообщений, 10000 MAM записей; failures=[] |
Запуск: XMPP_LOAD_CHECK=1 bash scripts/verify-local.sh. Native инструкции:
scripts/prosody_compat/README.md. Нужны PROSODY_REFERENCE_SOURCE и
PROSODY_REFERENCE_LUA. Большой архив последний раз проверен в0.5.0;
AF_UNIX admin ранее был запрещён средой и требует проверки на целевом хосте.
Проверки работают с временными данными. Исходники Conversations/monocles и
Gajim проверены, но сами приложения на устройствах не запускались. Runtime
metadata catalog adapter не реализует access-control enforcement. Production
data/deployment, APNs/FCM, Docker/UID/TLS целевого хоста и длительная
эксплуатация не проверены. Полная замена Prosody пока не подтверждена;
оставшиеся различия — COMPATIBILITY.md.
+36
View File
@@ -0,0 +1,36 @@
# Проверка 0.7.2
Проверено 2026-10-20, Linux x86_64, Rust 1.99.1.
Полный лог: validation-logs-0.7.2/verify.txt; машинный отчёт: validation-results.json.
| Проверка | Результат |
|---|---|
| cargo test --locked | 206 passed, 0 failed, 9 ignored |
| fmt, Clippy all-targets -D warnings, release build | Успешно |
| Baseline0.7.1 | Из исходников предыдущего ZIP воспроизведены неверное IQ error addressing, ложный конфликт notification defaults, отказ native whole-form config submit |
| PEP unit | 7 сценариев: first own missing bundle, no-to publish/read/caps, implicit defaults, native config roundtrip + stale type canonicalization, notification style, publisher visibility, open/subscriber models + outcast/blocklist |
| PEP STARTTLS | Fresh + migrated metadata, legacy/OMEMO2 item selectors, no-to publish, native form GET/SET/retry, restart persistence, owner restriction, INFO JSON protocol-only diagnostics |
| Предыдущие сети | TLS/PLUS/SSDP/Android SASL1/2, retry/normalization, logging/rotation, Bind2/resume, disco/push, IBR/seclabels, preauth, resource rebinding, HTTP/HTTPS BOSH/WSS/upload — успешно |
| Native Prosody | 6 module/storage tests + 1 двусторонняя STARTTLS/SASL EXTERNAL федерация — успешно |
| Нагрузка | 100 аккаунтов, 500 TLS-соединений, 5000 ping, 5000 сообщений, 10000 MAM записей; failures=[] |
| Публичный DNS | У wthome.ru не обнаружены DS/DNSKEY, AD=false. Google/Cloudflare read-only; production не менялся |
Запуск: XMPP_LOAD_CHECK=1 bash scripts/verify-local.sh; native checks требуют
PROSODY_REFERENCE_SOURCE и PROSODY_REFERENCE_LUA, см. scripts/prosody_compat/README.md.
Весь итоговый прогон сделан после изменений исходников; последующие изменения
касаются только отчётов и упаковки.
Первый baseline roundtrip проверяет ошибку wire name payload_type; повторный
baseline убирает только ранние assert имени поля, чтобы независимо показать
feature-not-implemented на whole-form SET. Остальные baseline тесты не менялись.
Лог содержит намеренно упавшие regression tests на0.7.1, а не ошибки0.7.2.
Предоставленный INFO0.7.1 журнал не содержит конкретных отказавших PubSub IQ;
причина именно пользовательского Android индикатора пока не доказана. Реальные
приложения не запускались; тестовые bundle bytes синтетические. Shared OMEMO2
multi-item test явно запрашивает max_items=max: это не утверждение, что клиент,
запрашивающий только open access, автоматически хранит все устройства при
native default max_items=1. Native-like metadata fixtures не заменяют полную
миграцию production. Крупный архив последний раз проверен0.5.0; AF_UNIX admin
нуждается в разрешённом хосте. Полная замена Prosody, APNs/FCM, целевое окружение
Docker/UID/TLS и длительная эксплуатация пока не подтверждены.
+39
View File
@@ -0,0 +1,39 @@
# Проверка 0.7.3
Проверено 2026-10-20, Linux x86_64, Rust 1.99.1.
Итоговый лог: validation-logs-0.7.3/verify.txt; validation-results.json.
| Проверка | Результат |
|---|---|
| cargo test --locked | 208 passed, 0 failed, 10 ignored |
| fmt, Clippy all-targets -D warnings, release build | Успешно |
| Baseline ZIP0.7.2 | Новый regression на исходниках предыдущего архива воспроизводит successful IQ old,current: первый список пуст, новый populated item второй |
| PEP порядок | All/recent2/recent1 читают current первым; старый item сохраняется |
| Android wire | Реальный STARTTLS, первый item как IqParser.getItem, no-to current replacement, повтор после restart; XML/ID не печатаются |
| Native порядок | Настоящий mod_pep читает те же файлы и подтверждает current,old |
| Диагностика | Unit + INFO JSON wire assertions: scope self-account, items2, first content omemo-devices, first devices2, отсутствие device IDs/raw node |
| Предыдущие проверки | SASL1/2, PLUS/SSDP, Bind2/resume, logging/rotation, Gajim discovery/register/labels, PEP/push/preauth, resource, CSI/MAM/MUC/offline, HTTP/HTTPS/BOSH/WSS/upload — успешно |
| Native Prosody | 7 module/storage/order tests +1 двусторонняя STARTTLS/SASL EXTERNAL федерация — успешно |
| Нагрузка | 100 аккаунтов, 500 TLS-соединений, 5000 ping, 5000 сообщений, 10000 MAM записей; failures=[] |
| DNSSEC | Повторный Google DS/DNSKEY read-only: NOERROR без Answer, AD=false. DNS не изменялся |
Запуск: XMPP_LOAD_CHECK=1 bash scripts/verify-local.sh; native checks требуют
PROSODY_REFERENCE_SOURCE и PROSODY_REFERENCE_LUA, инструкции
scripts/prosody_compat/README.md. Итоговый прогон выполнен после всех изменений
исходников; позже менялись только отчёты и упаковка.
В новом production журнале0.7.2: 9 auth-success, 126 PubSub IQ events,
41 OMEMO IQ и 0 OMEMO IQ errors. Это не доказывает корректное содержимое IQ.
Пользователь подтвердил полное завершение Android процессов. Мы не подменяем
диагностику рекомендацией просто переподключиться. Исправлен воспроизведённый
дефект, но реальные max_items/содержимое production узлов пока недоступны;
нельзя утверждать, что устранена единственная причина индикатора на устройстве.
Baseline log содержит намеренно упавший тест на0.7.2, а не ошибку0.7.3.
Native источник подтверждает payload-only archive, поэтому неподтверждённая
гипотеза двойного item wrapper отвергнута и не меняет данные. Синтетические
bundle bytes проверяют wire/storage, не криптографию. Native default retention1
и явные конфигурации не менялись. Реальные Android/Monal/Gajim, полная миграция,
production Docker/UID/TLS/APNs/FCM и длительная эксплуатация не проверены.
Большой архив последний раз проверен0.5.0; AF_UNIX admin требует разрешённого
хоста. Полная замена Prosody пока не подтверждена.
+40
View File
@@ -0,0 +1,40 @@
# Проверка0.7.4
Проверено2026-10-20, Linux x86_64, Rust1.99.1 (восстановлен exact toolchain).
Итоговый лог validation-logs-0.7.4/verify.txt; JSON validation-results.json.
| Проверка | Результат |
|---|---|
| cargo test --locked | 215 passed, 0 failed, 10 ignored |
| fmt, Clippy all-targets -D warnings, release | Успешно |
| Converse Origin | Исходная политика: wthome.ru101, actual conversejs.wthome.ru403; исправленная: actual101 |
| HTTPS binding | HTTPS-only startup, отдельные127.0.0.1 и::1 при global interfaces127.0.0.1; wildcard/override/fallback unit |
| WSS | Проверка CA/hostname, обязательный xmpp, browser headers, оба пути,403/400/404/101, preauth open/features/close, закрытие WebSocket |
| HTTP privacy | Фиксированные route/status/TLS outcomes, никакого request URL/query/Origin/header/body в журнале |
| PEP unit | 6 новых tests: invalid IDs, signed32/duplicates, legacy/OMEMO2, payloadless event, direct first-item, privacy |
| PEP wire | STARTTLS replay/live: valid1invalid1, suppression empty event + непустой IQ, diagnostic redaction |
| Предыдущие сети | SASL/PLUS/SSDP/retry, Bind2/resume, PEP order+config migration, Gajim IBR/labels, preauth/push, logging/rotation, resource, CSI/MAM/MUC/offline, BOSH/WSS/upload — успешно |
| Native | 7 storage/module/order tests +1 двусторонняя STARTTLS/SASL EXTERNAL федерация — успешно |
| Нагрузка | 100 аккаунтов,500 TLS-соединений,5000 ping,5000 сообщений,10000 MAM записей; failures=[] |
| Client log filter | Синтетический ввод с приватными маркерами выдаёт только фиксированные причины, без XML/ID/token |
| DNSSEC | Повторные DS/DNSKEY: NOERROR без Answer, AD=false; production DNS не менялся |
Итоговый прогон выполнен после изменений исходников; последующие изменения
касаются отчётов/упаковки. Scripts/*.sh сохранены executable в ZIP.
Native reference заново извлечён из supplied archive и собран с настоящими
Lua5.4.6/LuaSec/LuaSocket/ICU/OpenSSL модулями в private prefix. Запуск:
XMPP_LOAD_CHECK=1 bash scripts/verify-local.sh с PROSODY_REFERENCE_SOURCE,
PROSODY_REFERENCE_LUA и native prefix env из scripts/prosody_compat/README.md.
Серверный журнал0.7.3:12 own OMEMO IQ,0 own errors, XML device counts1/2/6.
Этот факт не доказывает валидность IDs/содержимое уведомлений и не устанавливает
причину Android pepBroken. Клиентского журнала у пользователя нет. Текущий патч
НЕ объявляет PEP проблему устранённой; добавлена необходимая безопасная диагностика.
Converse origin подтверждён пользователем; пример updated, рабочий YAML на
целевом сервере требует явного добавления Origin. Прямой read-only probe live
WSS не смог разрешить production DNS из этой среды. Браузерный UI не запускался.
No wildcard Origin/TLS bypass. Нельзя утверждать полную замену Prosody:
не проверены полная production миграция, настоящие приложения/APNs/FCM,
целевой Docker/UID/TLS и длительная эксплуатация. Большой архив последний раз
проверен0.5.0, AF_UNIX admin требует разрешённого хоста. COMPATIBILITY.md.
+32
View File
@@ -0,0 +1,32 @@
# Проверка0.7.5
Linux x86_64, Rust1.99.1,2026-10-20. Итоговый лог:
validation-logs-0.7.5/verify.txt; структурированный итог — validation-results.json.
| Проверка | Результат |
|---|---|
| cargo test --locked | 229 passed,0 failed,10 ignored |
| fmt / Clippy all-targets -D warnings / release | Успешно |
| HTTP config | Наследование путей по приложениям, $host, Host/fallback, внешний префикс/порт, literal pchars/percent, отказ конфликтам/невалидным путям |
| Proxy trust | IPv4/IPv6 CIDR, пустой Lua table, недоверенные заголовки, цепочки и malformed RFC7239, защита от повторного повышения secure после HTTP hop |
| Настоящий TLS proxy | Verified HTTPS→HTTP, переписывание публичного пути, WS и BOSH auth/restart/bind/ping, legacy и RFC7239; cached RID reply |
| Ограничения входа | Origin, старые пути404, insecure/spoofed/untrusted403, IPv6 когда доступен |
| Upload | Отдельный внутренний путь и публичный prefix в unit PUT/GET; integrated custom $host path IQ/PUT/GET/reuse |
| Прежние сетевые сценарии | SASL/PLUS/SSDP/retry/Bind2/resume, WSS, PEP/push/preauth, logging/resource/CSI/MAM/MUC/offline — успешно |
| Native | 7 storage/module/order +1 bidirectional TLS/SASL EXTERNAL federation — успешно |
| Нагрузка | 100 аккаунтов,500 TLS клиентов,5000 ping,5000 сообщений,10000 MAM; failures=[] |
Полный итоговый прогон выполнен после изменений кода с CARGO_INCREMENTAL=0;
предварительный Clippy выявил три замечания, исправленные перед этим прогоном.
Ранее устаревшие compiler artifacts были удалены cargo clean -p rust-xmpp.
Исходные данные production не изменялись. После проверки обновлены только
инструкция, отчёт и упаковка. Команда: XMPP_LOAD_CHECK=1 bash scripts/verify-local.sh
с native reference env согласно scripts/prosody_compat/README.md.
Прокси в сетевом тесте — отдельный настоящий TLS socket forwarder с переписыванием
пути и HTTP metadata. Nginx/production proxy и настоящий Converse UI не запускались.
Изменения рабочего YAML и proxy выполняет оператор; пример — HTTP-PROXY.md.
Новые возможности не устраняют непроверенные границы из COMPATIBILITY.md.
PEP Android и DNSSEC из предыдущего сообщения остаются отдельными нерешёнными
задачами; этот выпуск их исправленными не объявляет. Прежние проверки DNSSEC
и логи0.7.4 сохранены в историческом отчёте. Нельзя заявлять полную замену Prosody.
+37
View File
@@ -0,0 +1,37 @@
# Проверка0.7.6
Linux x86_64, Rust1.99.1,2026-10-20. Итоговый лог:
validation-logs-0.7.6/verify.txt; структурированный итог — validation-results.json.
| Проверка | Результат |
|---|---|
| cargo test --locked | 259 passed,0 failed,11 ignored |
| fmt / Clippy all-targets -D warnings / release | Успешно |
| MUC extension tests | PM policies, hats/identity privacy, presence role transitions, язык/config/disco, offline affiliates, optional flags, MAM ACL/all/presences/totals/purge |
| История | 10 tests: count/time/char constraints, combined limits, subject/hints, ordering/delay, last-message snapshot |
| Recovery | Native state filtering/roundtrip, exact resource, expiry, persisted deadline, changed config/password deny, no stale-role replay, explicit nick change, temporary-room retention |
| Bounds | Oversized4KiB/256KiB presence status omitted;20KiB last message does not prevent membership checkpoint |
| MUC wire restart | Настоящий SIGTERM с живыми STARTTLS sockets; temporary/persistent rooms, role/show/status, чужой account/resource отказ, nick theft отказ, groupchat после восстановления |
| Native occupant state | Настоящая Prosody восстанавливает Rust state с3 sessions/2 resources; native freeze меняет роль/status, Rust читает результат |
| Прежние сети | SASL/PLUS/SSDP/Bind2/resume, PEP/push/preauth, WSS/BOSH/proxy paths/upload, logging/resource/CSI/MAM/MUC/offline — успешно |
| Native total | 8 module/storage/MUC tests +1 bidirectional TLS/SASL EXTERNAL federation — успешно |
| Нагрузка | 100 аккаунтов,500 TLS клиентов,5000 ping,5000 сообщений,10000 MAM; failures=[] |
Итоговый прогон выполнен после заморозки исходников с CARGO_INCREMENTAL=0
и очисткой package artifacts. Предварительные проверки нашли исправленные
проблемы cleanup временных комнат, повторного использования checkpoint,
необязательных oversized полей и двух Clippy замечаний. Дополнительно проверен канонический отпечаток конфигурации,
независимый от порядка ключей Lua VM. Здесь сохранён только
полный успешный прогон. После него менялись отчёты и упаковка.
Команда: XMPP_LOAD_CHECK=1 bash scripts/verify-local.sh с native reference env
согласно scripts/prosody_compat/README.md. Native source cafd74b9c5ea используется
непосредственно с Lua5.4/LuaSec/LuaSocket и compiled ICU/OpenSSL модулями.
Не проверены production migration, реальные Monal/Conversations/Gajim, SIGKILL
crash recovery и все community-модули. Контроль штатного восстановления не
означает сохранение старых TCP-сокетов или SM между процессами. Условия300s /
полный JID / неизменный config описаны в MUC-RECOVERY.md. Нативное состояние без
Rust fingerprint не даёт автоматического разрешения на восстановление.
Предыдущие PEP/DNSSEC сообщения этот выпуск не объявляет исправленными.
Полная взаимозаменяемость сервера не подтверждена: COMPATIBILITY.md.
+31
View File
@@ -0,0 +1,31 @@
# Проверка0.7.7
Linux x86_64, Rust1.99.1,2026-10-20. Итоговый лог:
validation-logs-0.7.7/verify.txt; структурированный итог — validation-results.json.
| Проверка | Результат |
|---|---|
| cargo test --locked | 262 passed,0 failed,11 ignored |
| fmt / Clippy all-targets -D warnings / release | Успешно |
| Новый module unit | Link порядок/schemes, загруженные/disabled модули, flags, наследование custom paths/public prefix, неправильные типы и path collisions |
| http_altconnect wire | 10 изолированных конфигураций: настоящий HTTP и CA-verified HTTPS, XRD/JRD parity, MIME, CORS, HEAD/OPTIONS/405, query/JSONP, Host, custom mount/public prefix, HTTPS preference, HTTP fallback |
| Транспортная регрессия | WSS framing работает до и после отключения discovery; старые WS/BOSH/proxy paths/upload сценарии прошли |
| Остальные регрессии | SASL/PLUS/SSDP/Bind2/resume, PEP/push/preauth, logging/resource/CSI/MAM/MUC/offline, MUC restart — успешно |
| Native total | 8 module/storage tests +1 TLS/SASL EXTERNAL federation — успешно |
| Нагрузка | 100 аккаунтов,500 TLS клиентов,5000 ping,5000 сообщений,10000 MAM; failures=[] |
Итоговый прогон выполнен после исправления проверки Host с портом вне диапазона,
которую обнаружил новый сетевой тест. Все тесты запускают отдельные loopback
listeners и временные данные. После прогона менялись только отчёты и упаковка.
Native reference suite прежних модулей пройдена; непосредственно http_altconnect
проверен Rust unit/network и сопоставлением с supplied Lua source, без отдельного
native differential oracle этого модуля.
Команда: XMPP_LOAD_CHECK=1 bash scripts/verify-local.sh с native reference env
согласно scripts/prosody_compat/README.md. Точный скрипт включает новый wire test.
Рабочие конфиги/DNS/proxy/certificates production не изменялись; оператор должен
добавить http_altconnect и опубликовать HTTPS well-known. Инструкция:
HTTP-ALTCONNECT.md. Native HTTP/WS fallback сохранён; для строгого XEP0156 нужны
HTTPS/WSS URLs. Настоящие Converse/Monal/Conversations UI и полный production
rollout не проверены. Общие ограничения сервера — COMPATIBILITY.md.
+475
View File
@@ -0,0 +1,475 @@
{
"prosody_revision": "cafd74b9c5ea",
"community_revision_reported": "dddb6c34b964",
"note": "Literal dependency/source inventory for supplied revisions; status refers to implemented handlers, not complete module parity. See COMPATIBILITY.md and VALIDATION.md. Conditional dependencies and runtime load order not exhaustively resolved.",
"modules": [
{
"module": "admin_shell",
"rust_status": "implemented_with_limits_see_COMPATIBILITY",
"candidates": [
{
"source": "core",
"path": "prosody-cafd74b9c5ea/plugins/mod_admin_shell.lua",
"sha256": "e0a11e78a26a415f508e0487141a3d66086a408670e97d1363fd8f024fdd2160",
"literal_dependencies": [
"admin_socket"
]
}
]
},
{
"module": "auth_internal_hashed",
"rust_status": "implemented_with_limits_see_COMPATIBILITY",
"candidates": [
{
"source": "core",
"path": "prosody-cafd74b9c5ea/plugins/mod_auth_internal_hashed.lua",
"sha256": "c6bbaede99e34c838afbb514780fb7fd40be3102d364cd586fe8f05a3c7b368d",
"literal_dependencies": [
"tokenauth"
]
}
]
},
{
"module": "blocklist",
"rust_status": "implemented_with_limits_see_COMPATIBILITY",
"candidates": [
{
"source": "core",
"path": "prosody-cafd74b9c5ea/plugins/mod_blocklist.lua",
"sha256": "de7c95f1f988fc281560361a8eb14081e3efdeebebf89741fcb1bba25202931a",
"literal_dependencies": []
}
]
},
{
"module": "bookmarks",
"rust_status": "implemented_with_limits_see_COMPATIBILITY",
"candidates": [
{
"source": "core",
"path": "prosody-cafd74b9c5ea/plugins/mod_bookmarks.lua",
"sha256": "e08745b43a0b6d0b344aaca5cc1888e20022d4de9cec54135eecf36a573ab01d",
"literal_dependencies": [
"pep"
]
}
]
},
{
"module": "bosh",
"rust_status": "implemented_with_limits_see_COMPATIBILITY",
"candidates": [
{
"source": "core",
"path": "prosody-cafd74b9c5ea/plugins/mod_bosh.lua",
"sha256": "cc5cb45d49467465d65629e5da46be226abdb1a2012ef4792afdabc2243d7b0c",
"literal_dependencies": [
"c2s",
"http",
"http_altconnect"
]
}
]
},
{
"module": "carbons",
"rust_status": "implemented_with_limits_see_COMPATIBILITY",
"candidates": [
{
"source": "core",
"path": "prosody-cafd74b9c5ea/plugins/mod_carbons.lua",
"sha256": "0af69b32eb636bbd63757cdb5f0bf729d1304c4b5e527bb6baa2094872517db7",
"literal_dependencies": []
}
]
},
{
"module": "cloud_notify",
"rust_status": "implemented_with_limits_see_COMPATIBILITY",
"candidates": [
{
"source": "core",
"path": "prosody-cafd74b9c5ea/plugins/mod_cloud_notify.lua",
"sha256": "ffaaabc9e4a7a2e08f744937a85a91af61fa7043a41d6559e26209d49467eb46",
"literal_dependencies": []
}
]
},
{
"module": "csi_simple",
"rust_status": "implemented_with_limits_see_COMPATIBILITY",
"candidates": [
{
"source": "core",
"path": "prosody-cafd74b9c5ea/plugins/mod_csi_simple.lua",
"sha256": "170958270a8502fa92117daee20cb9f5b656d6098b4b8d2eb545ab4d723700bc",
"literal_dependencies": [
"csi"
]
}
]
},
{
"module": "disco",
"rust_status": "implemented_with_limits_see_COMPATIBILITY",
"candidates": [
{
"source": "core",
"path": "prosody-cafd74b9c5ea/plugins/mod_disco.lua",
"sha256": "4bb50c2552248f852ea7ba63bc535b81f7ae1ec2fc627645987a97c70c10be6f",
"literal_dependencies": []
}
]
},
{
"module": "http_file_share",
"rust_status": "implemented_with_limits_see_COMPATIBILITY",
"candidates": [
{
"source": "core",
"path": "prosody-cafd74b9c5ea/plugins/mod_http_file_share.lua",
"sha256": "f4bded677570e6d6fff2fd3278a222457278b0509d53bca2492495bd37eb806a",
"literal_dependencies": [
"disco",
"http"
]
}
]
},
{
"module": "mam",
"rust_status": "implemented_with_limits_see_COMPATIBILITY",
"candidates": [
{
"source": "core",
"path": "prosody-cafd74b9c5ea/plugins/mod_mam/mod_mam.lua",
"sha256": "fde9d1820b8fb10c8848089987c776a682d0972112b8a664fbaf8ab21489176b",
"literal_dependencies": [
"muc_mam"
]
}
]
},
{
"module": "muc",
"rust_status": "implemented_with_limits_see_COMPATIBILITY",
"candidates": [
{
"source": "core",
"path": "prosody-cafd74b9c5ea/plugins/muc/mod_muc.lua",
"sha256": "e808268c7af15f29501672adf77e9552397db89d0a5e25d6ce0b17455f3cd9ed",
"literal_dependencies": [
"adhoc",
"disco",
"muc_unique"
]
}
]
},
{
"module": "muc_mam",
"rust_status": "implemented_with_limits_see_COMPATIBILITY",
"candidates": [
{
"source": "core",
"path": "prosody-cafd74b9c5ea/plugins/mod_muc_mam.lua",
"sha256": "3d432674daa67babbcb836c12df6d3ca34f574fbbe084549f54f24de7034ee31",
"literal_dependencies": [
"muc"
]
}
]
},
{
"module": "pep",
"rust_status": "implemented_with_limits_see_COMPATIBILITY",
"candidates": [
{
"source": "core",
"path": "prosody-cafd74b9c5ea/plugins/mod_pep.lua",
"sha256": "b28ec7965480de6a62aecca3dd6ef48eae2a37b24bb288ae637c8d676a929919",
"literal_dependencies": []
}
]
},
{
"module": "pep_simple",
"rust_status": "empty_upstream_noop",
"candidates": [
{
"source": "core",
"path": "prosody-cafd74b9c5ea/plugins/mod_pep_simple.lua",
"sha256": "1d80b3e3d5dd37564847286272e0ee6323d58bb481bb366697fb2316411843b5",
"literal_dependencies": []
}
]
},
{
"module": "ping",
"rust_status": "implemented_with_limits_see_COMPATIBILITY",
"candidates": [
{
"source": "core",
"path": "prosody-cafd74b9c5ea/plugins/mod_ping.lua",
"sha256": "587f3b3791d453ea8538505aa0734474ff77686f18a76ff78253c957e6fd4673",
"literal_dependencies": []
}
]
},
{
"module": "private",
"rust_status": "implemented_with_limits_see_COMPATIBILITY",
"candidates": [
{
"source": "core",
"path": "prosody-cafd74b9c5ea/plugins/mod_private.lua",
"sha256": "257c8cc571e2ca5d1d9a726ffb9b8db73874dc2c7da4e2354a9198683c88c77a",
"literal_dependencies": []
}
]
},
{
"module": "pubsub",
"rust_status": "implemented_with_limits_see_COMPATIBILITY",
"candidates": [
{
"source": "core",
"path": "prosody-cafd74b9c5ea/plugins/mod_pubsub/mod_pubsub.lua",
"sha256": "e6a8de1d70bf4705953716f64388dec1df2b8617eb3fa7eababa2e24f735e335",
"literal_dependencies": [
"disco"
]
}
]
},
{
"module": "register",
"rust_status": "implemented_with_limits_see_COMPATIBILITY",
"candidates": [
{
"source": "core",
"path": "prosody-cafd74b9c5ea/plugins/mod_register.lua",
"sha256": "20e01f67dc69d0987071e24b3a0e49cf51bd0daa4682eb7209beb5a654e0155c",
"literal_dependencies": [
"register_ibr",
"user_account_management",
"watchregistrations"
]
}
]
},
{
"module": "roster",
"rust_status": "implemented_with_limits_see_COMPATIBILITY",
"candidates": [
{
"source": "core",
"path": "prosody-cafd74b9c5ea/plugins/mod_roster.lua",
"sha256": "8521a32488415481f4f06af714898f80767a87e992e1d185bbf711af4e63d030",
"literal_dependencies": []
}
]
},
{
"module": "s2s",
"rust_status": "implemented_with_limits_see_COMPATIBILITY",
"candidates": [
{
"source": "core",
"path": "prosody-cafd74b9c5ea/plugins/mod_s2s.lua",
"sha256": "ff5a322bf0e7e679a9b467c8c4af998856abdb49f0fa9e4dd2879e7ccdde369a",
"literal_dependencies": [
"s2s_auth_dane_in"
]
}
]
},
{
"module": "s2s_auth_certs",
"rust_status": "implemented_with_limits_see_COMPATIBILITY",
"candidates": [
{
"source": "core",
"path": "prosody-cafd74b9c5ea/plugins/mod_s2s_auth_certs.lua",
"sha256": "8e08b302687fac666cc74d188af79606304b67e42901125e7b5b1e0b7974bec0",
"literal_dependencies": []
}
]
},
{
"module": "sasl2",
"rust_status": "implemented_with_limits_see_COMPATIBILITY",
"candidates": [
{
"source": "community",
"path": "custom_plugins/mod_sasl2/mod_sasl2.lua",
"sha256": "825e967420cc59c7b943da62b5f22c8901121d858c88d359aed93fbe9efc2f36",
"literal_dependencies": []
}
]
},
{
"module": "sasl_ssdp",
"rust_status": "implemented_with_limits_see_COMPATIBILITY",
"candidates": [
{
"source": "community",
"path": "custom_plugins/mod_sasl_ssdp/mod_sasl_ssdp.lua",
"sha256": "a9340b988a4de73167aa166082d036d1ae44f33e5640c305c7a0279c1605b83f",
"literal_dependencies": []
},
{
"source": "community",
"path": "custom_plugins/share/lua/5.4/mod_sasl_ssdp.lua",
"sha256": "a9340b988a4de73167aa166082d036d1ae44f33e5640c305c7a0279c1605b83f",
"literal_dependencies": []
}
]
},
{
"module": "saslauth",
"rust_status": "implemented_with_limits_see_COMPATIBILITY",
"candidates": [
{
"source": "core",
"path": "prosody-cafd74b9c5ea/plugins/mod_saslauth.lua",
"sha256": "9c2403d7271fcd73cc1dea63fcf05b10059467f3ae3ebaf26a42e3b682c8e3ea",
"literal_dependencies": []
}
]
},
{
"module": "seclabels",
"rust_status": "implemented_with_limits_see_COMPATIBILITY",
"candidates": [
{
"source": "community",
"path": "custom_plugins/mod_seclabels/mod_seclabels.lua",
"sha256": "d6226f251edbab1e10371b655c4ab8ce0b6d2a40710a9b6f1c9e520c8f0a14d7",
"literal_dependencies": []
}
]
},
{
"module": "smacks",
"rust_status": "implemented_with_limits_see_COMPATIBILITY",
"candidates": [
{
"source": "core",
"path": "prosody-cafd74b9c5ea/plugins/mod_smacks.lua",
"sha256": "5c978b69b24a8a96042c2a52225995ada33956721083a925ff12bedea779f313",
"literal_dependencies": []
}
]
},
{
"module": "storage_internal",
"rust_status": "implemented_with_limits_see_COMPATIBILITY",
"candidates": [
{
"source": "core",
"path": "prosody-cafd74b9c5ea/plugins/mod_storage_internal.lua",
"sha256": "48daddc50dfbd310bf19c9ae04cdf47523a87ae3d7c66d6e5ba894e5135fe129",
"literal_dependencies": []
}
]
},
{
"module": "time",
"rust_status": "implemented_with_limits_see_COMPATIBILITY",
"candidates": [
{
"source": "core",
"path": "prosody-cafd74b9c5ea/plugins/mod_time.lua",
"sha256": "606571ee5960b98683f03a94bf693a010d76e505f12b77e1d222cb78beef5adf",
"literal_dependencies": []
}
]
},
{
"module": "tls",
"rust_status": "implemented_with_limits_see_COMPATIBILITY",
"candidates": [
{
"source": "core",
"path": "prosody-cafd74b9c5ea/plugins/mod_tls.lua",
"sha256": "c14fde3023f4080546c9f8a61f6e0b08dd0ee6854ddc9c685560987be548dd55",
"literal_dependencies": []
}
]
},
{
"module": "turn_external",
"rust_status": "implemented_with_limits_see_COMPATIBILITY",
"candidates": [
{
"source": "core",
"path": "prosody-cafd74b9c5ea/plugins/mod_turn_external.lua",
"sha256": "9ac80a1b85fcea9b43022293cd09127bb26c5f8ea96446ab97579abee995765f",
"literal_dependencies": [
"external_services"
]
}
]
},
{
"module": "uptime",
"rust_status": "implemented_with_limits_see_COMPATIBILITY",
"candidates": [
{
"source": "core",
"path": "prosody-cafd74b9c5ea/plugins/mod_uptime.lua",
"sha256": "d34df20d7e4e114060584667bdc80fd2f407921b4c78e1de1d150fb4c6730854",
"literal_dependencies": [
"adhoc"
]
}
]
},
{
"module": "vcard_legacy",
"rust_status": "implemented_with_limits_see_COMPATIBILITY",
"candidates": [
{
"source": "core",
"path": "prosody-cafd74b9c5ea/plugins/mod_vcard_legacy.lua",
"sha256": "7f4697723ce6803f58158390fc3b49428451336a61d9ab2a4b0035b681fa5baf",
"literal_dependencies": [
"pep"
]
}
]
},
{
"module": "version",
"rust_status": "implemented_with_limits_see_COMPATIBILITY",
"candidates": [
{
"source": "core",
"path": "prosody-cafd74b9c5ea/plugins/mod_version.lua",
"sha256": "7664626d35c3b6d0a0a872f6daaf66255aeeae80a65e1f560c17ac56e69b8db1",
"literal_dependencies": []
}
]
},
{
"module": "websocket",
"rust_status": "implemented_with_limits_see_COMPATIBILITY",
"candidates": [
{
"source": "core",
"path": "prosody-cafd74b9c5ea/plugins/mod_websocket.lua",
"sha256": "fc596425939d94a7843dbe5e188b8e4b9ee896822c88e43e4d34ee51b4cd6184",
"literal_dependencies": [
"c2s",
"http",
"http_altconnect"
]
}
]
}
],
"runtime_version": "0.3.0"
}
@@ -0,0 +1,2 @@
Checking rust-xmpp v0.4.0 (/workspace/scratch/362577cdf2e0/rust-xmpp)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 3.09s
@@ -0,0 +1,2 @@
Compiling rust-xmpp v0.4.0 (/workspace/scratch/362577cdf2e0/rust-xmpp)
Finished `release` profile [optimized] target(s) in 19.43s
@@ -0,0 +1,320 @@
Compiling rust-xmpp v0.4.0 (/workspace/scratch/362577cdf2e0/rust-xmpp)
Finished `test` profile [unoptimized + debuginfo] target(s) in 16.63s
Running unittests src/lib.rs (target/debug/deps/rust_xmpp-e35239525a452455)
running 24 tests
test federation::tests::federation_domains_are_dns_names_and_case_insensitive ... ok
test federation::tests::starttls_must_be_an_immediate_stream_feature ... ok
test federation::tests::external_must_be_in_the_advertised_mechanisms ... ok
test federation::tests::stream_restarts_compare_canonical_domains ... ok
test http_transport::tests::bosh_processing_capacity_is_bounded ... ok
test http_transport::tests::websocket_preserves_inherited_namespaces_and_spaced_declarations ... ok
test sasl::tests::reject_malformed_and_downgrade ... ok
test http_transport::tests::independent_framing ... ok
test sessions::push_timeout_tests::first_important_push_shortens_extended_hibernation_once ... ok
test sessions::tests::acknowledgement_wraps ... ok
test sessions::tests::graceful_disconnect_is_not_resumable ... ok
test sessions::tests::resume_replays_only_unacked_and_checks_owner ... ok
test wire::tests::arbitrary_prefix_and_inherited_namespaces ... ok
test wire::tests::cdata_and_comments_frame_without_counting_brackets ... ok
test wire::tests::declarations_rejected ... ok
test wire::tests::fragmented_and_pipelined ... ok
test wire::tests::invalid_namespace_and_declarations_rejected ... ok
test sasl::tests::rfc5802_sha1_vector ... ok
test http_service::tests::abandoned_slots_release_quota_without_pruning_existing_or_active_files ... ok
test sasl::tests::sha256_independent_python_vector ... ok
test sasl::tests::plus_channel_binding_and_ssdp_are_authenticated ... ok
test server::authorization_tests::upload_requires_registered_local_account_or_explicit_remote_access ... ok
test sasl::tests::wrong_proof_nonce_binding_and_duplicates ... ok
test admin::tests::real_admin_xml_protocol_over_duplex ... ok
test result: ok. 24 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.55s
Running unittests src/main.rs (target/debug/deps/rust_xmpp-2bce05be4db51fc4)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/admin_socket.rs (target/debug/deps/admin_socket-fab6f1412fe32176)
running 1 test
test prosody_wire_commands_password_prompt_and_safe_errors ... ignored, requires AF_UNIX socket permission; run on target host with --ignored
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/archive_mam.rs (target/debug/deps/archive_mam-28547367898e6a30)
running 14 tests
test archive_larger_than_128mib_streams ... ignored, large-file scalability regression; run explicitly
test mam_preferences_persist ... ok
test corrupt_archive_reports_server_error_and_namespace_stripping_is_precise ... ok
test legacy_records_binary_cache_and_roundtrip ... ok
test append_is_incremental_and_recovers_torn_tail ... ok
test archive_roundtrip_preserves_default_namespace_resets ... ok
test smart_enable_and_message_selection ... ok
test equal_cursors_and_normalized_query_jids ... ok
test real_archive_sid_and_sender_privacy ... ok
test muc_archive_filters_stanza_kind_instead_of_sender_jid ... ok
test zero_page_dates_and_invalid_forms ... ok
test mam_paging_filters_and_forbidden ... ok
test extended_ids_ranges_flip_and_metadata ... ok
test namespaces_expiry_and_concurrent_append ... ok
test result: ok. 13 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.05s
Running tests/auth.rs (target/debug/deps/auth-1f5f13ca9abe0947)
running 2 tests
test traversal_and_malicious_account_records_rejected ... ok
test create_and_read_hashed_accounts ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.69s
Running tests/cli.rs (target/debug/deps/cli-60b3380ae4ed4cfb)
running 2 tests
test server_cannot_be_mistaken_for_running_service ... ok
test conversion_preserves_source_and_refuses_overwrite ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running tests/config.rs (target/debug/deps/config-00f0036749bc58da)
running 12 tests
test component_can_explicitly_enable_global_modules ... ok
test include_has_own_global_scope_and_parent_scope_is_restored ... ok
test storage_paths_encode_like_prosody ... ok
test include_cycles_rejected ... ok
test declarations_and_overrides ... ok
test supplied_configuration_scopes_arithmetic_and_modules ... ok
test tables_cannot_recurse_forever ... ok
test supplied_config_matches_original_prosody_loader ... ok
test runtime_capabilities_are_unavailable ... ok
test all_formats_round_trip_actual_config ... ok
test malformed_values_rejected ... ok
test loops_are_bounded ... ok
test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
Running tests/csi.rs (target/debug/deps/csi-7423d59484b1f328)
running 2 tests
test bounded_queue_flush_delay_activity_and_grace ... ok
test native_importance_rules ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/csi_native.rs (target/debug/deps/csi_native-295ef60d9761ac35)
running 1 test
test native_prosody_csi_importance_matches ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/data_lock.rs (target/debug/deps/data_lock-06c96afda506be83)
running 2 tests
test child_process_probe ... ok
test excludes_another_process_and_releases_on_drop ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running tests/debug_legacy.rs (target/debug/deps/debug_legacy-51387f71e0080e24)
running 1 test
test debug_empty_legacy_bind ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.09s
Running tests/federation_tls.rs (target/debug/deps/federation_tls-8eaeecccd4759bb4)
running 3 tests
test native_prosody_tls_external_bidirectional ... ignored, requires native Prosody cafd74b9c5ea and Lua TLS dependencies
test mutual_tls_external_delivery_and_certificate_identity_rejection ... ok
test reuses_connections_serializes_writes_and_retires_idle_or_closed_peers ... ok
test result: ok. 2 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 1.15s
Running tests/http_transport.rs (target/debug/deps/http_transport-fb9e1bc0b9cc3c07)
running 7 tests
test configured_origin_is_enforced ... ok
test bosh_preserves_namespace_inherited_from_body ... ok
test transport_paths_and_cors_preflight_match_prosody ... ok
test bosh_session_retries_restart_termination ... ok
test bosh_reorders_two_requests_without_replaying_stanzas ... ok
test websocket_frames_are_independent_xml ... ok
test bosh_retry_survives_aborted_http_request_without_replaying_stanzas ... ok
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s
Running tests/http_upload.rs (target/debug/deps/http_upload-826d9cdb6f07c106)
running 5 tests
test https_endpoint_uses_real_tls ... ok
test percent_escape_case_and_equivalent_url_spelling ... ok
test persisted_prosody_archive_and_hs256_slot_survive_without_sidecar ... ok
test expired_upload_releases_quota ... ok
test upload_authorization_streaming_ranges_and_restart ... ok
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s
Running tests/message_routing.rs (target/debug/deps/message_routing-300d1f16a0279559)
running 2 tests
test headline_uses_all_nonnegative_available_resources_and_errors_never_fallback ... ok
test unknown_resource_falls_back_to_available_bare_jid ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/muc_access.rs (target/debug/deps/muc_access-6094a40d7e4e9fd4)
running 3 tests
test moderators_cannot_kick_or_demote_other_moderators ... ok
test nested_affiliations_do_not_fall_back_to_obsolete_flat_entries ... ok
test binary_occupant_id_salt_survives_saves_and_restarts ... ok
test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running tests/muc_domain_bans.rs (target/debug/deps/muc_domain_bans-f7d401e9bdda6874)
running 2 tests
test applying_domain_ban_removes_remote_occupants_and_blocks_rejoin ... ok
test native_domain_bans_block_remote_users_but_allow_explicit_members ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/muc_flow.rs (target/debug/deps/muc_flow-c3519d804f557b73)
running 18 tests
test configured_lock_timeout_expires_without_owner_submission ... ok
test authorization_and_conflict ... ok
test iq_response_requires_expected_sender ... ok
test join_lock_chat_leave ... ok
test nick_invite_destroy_and_local_creation ... ok
test multiple_resources_share_nick_and_private_delivery ... ok
test occupant_id_is_stable_and_spoofed_ids_removed ... ok
test persistence_roundtrip ... ok
test restored_temporary_room_is_deleted_after_last_disconnect ... ok
test room_vcard_owner_only_and_avatar_presence ... ok
test switching_to_members_only_removes_unaffiliated_users ... ok
test visitor_voice_request_cannot_spoof_identity_or_grant_itself_voice ... ok
test preserves_unknown_binary_mixed_room_fields ... ok
test persistent_destroy_creates_prosody_tombstone ... ok
test archive_history_and_permissions ... ok
test reserved_nickname_blocks_other_users ... ok
test native_muc_archive_type_and_anonymity_are_preserved ... ok
test maintenance_expires_idle_archives_and_tombstones ... ok
test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
Running tests/muc_native.rs (target/debug/deps/muc_native-5a83afb0c392f358)
running 1 test
test actual_prosody_muc_mam_reads_rust_and_writes_native_archive ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/pubsub_native.rs (target/debug/deps/pubsub_native-452af5a83e8c375b)
running 1 test
test native_prosody_pep_reads_rust_and_rust_reads_native ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/pubsub_persistence.rs (target/debug/deps/pubsub_persistence-d9aa4e5ae21f08f0)
running 18 tests
test native_string_max_items_satisfies_numeric_publish_precondition ... ok
test modern_bookmarks_notify_legacy_capability ... ok
test configurable_limits_component_creation_and_publisher ... ok
test capability_discovery_replays_and_filters_notifications ... ok
test configure_requires_owner ... ok
test nonpersistent_items_stay_in_memory_and_can_be_made_persistent ... ok
test open_model_and_notifications ... ok
test reads_prosody_legacy_fixture ... ok
test full_jid_block_applies_to_reads_subscription_replays_and_events ... ok
test publish_options_conflict_is_recoverable_and_preserves_item ... ok
test pep_persists_namespaces_and_enforces_owner ... ok
test remote_unavailable_is_scoped_to_addressed_owner_and_cancels_pending ... ok
test roster_presence_access_and_foreign_subscription_denied ... ok
test remote_caps_replay_and_open_node_privacy_revoke ... ok
test payload_policy_applies_to_subscription_and_caps_replays ... ok
test subscription_options_disable_events_and_require_subscriber ... ok
test native_notification_fields_and_retract_policy_are_independent ... ok
test component_default_retention_matches_prosody_twenty_items ... ok
test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.31s
Running tests/push.rs (target/debug/deps/push-50e169110c02e394)
running 7 tests
test native_push_body_lookup_excludes_extensions ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test foreign_account_cannot_register ... ok
test push_summary_never_copies_foreign_namespace_body ... ok
test queue_coalesces_and_importance_matches_native ... ok
test stable_client_registration_and_targeted_notification ... ok
test reenable_cancels_old_errors_and_failure_counts_are_per_account ... ok
test registrations_notifications_and_authenticated_errors ... ok
test result: ok. 6 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.09s
Running tests/reference_prosody.rs (target/debug/deps/reference_prosody-84c92c3ddfcfccb6)
running 1 test
test real_prosody_storage_and_auth_roundtrip ... ignored, requires native supplied Prosody source; run scripts/prosody_compat/verify.sh
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/sasl_accounts.rs (target/debug/deps/sasl_accounts-3f676750cb5e4878)
running 1 test
test disabled_legacy_and_unicode_accounts ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.58s
Running tests/storage_accounts.rs (target/debug/deps/storage_accounts-c4b373401915ee8a)
running 20 tests
test broken_roster_is_not_overwritten ... ok
test inbound_subscription_requires_pending_to_grant_to ... ok
test account_purge_refuses_symlink_store_without_touching_other_files ... ok
test domain_roster_and_block_jid_normalization ... ok
test malformed_roster_iq_never_mutates ... ok
test blocklist_enforcement_api ... ok
test malformed_legacy_vcard_and_private_bookmarks_rejected ... ok
test private_and_vcard_authorization ... ok
test privacy_migration_only_default_deny_jids ... ok
test reads_timestamp_blocklist_and_keeps_metadata ... ok
test roster_empty_name_and_foreign_group_ignored ... ok
test roster_preserves_subscription_and_metadata ... ok
test purge_account_exact_files_preserves_others_and_extras ... ok
test bookmarks_private_pep_bidirectional_and_private ... ok
test subscription_handshake_and_cancel ... ok
test legacy_bookmarks_respect_host_limit_and_read_over_256 ... ok
test legacy_migration_clears_source_after_success ... ok
test vcard_pep_conversion_and_avatar ... ok
test password_change_after_purge_never_recreates_account ... ok
test creation_and_purge_are_serialized ... ok
test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.27s
Running tests/storage_compat.rs (target/debug/deps/storage_compat-4e29b17b141e97a4)
running 6 tests
test empty_namespace_preserved ... ok
test mixed_binary_roundtrip ... ok
test stanza_roundtrip ... ok
test path_and_atomic_update ... ok
test concurrent_updates_do_not_lose_entries ... ok
test rejects_cycles_code_and_bad_files ... ok
test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
Doc-tests rust_xmpp
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
@@ -0,0 +1,24 @@
Finished `test` profile [unoptimized + debuginfo] target(s) in 0.06s
Running tests/admin_socket.rs (target/debug/deps/admin_socket-fab6f1412fe32176)
running 1 test
test prosody_wire_commands_password_prompt_and_safe_errors ... FAILED
failures:
---- prosody_wire_commands_password_prompt_and_safe_errors stdout ----
thread 'prosody_wire_commands_password_prompt_and_safe_errors' (29) panicked at tests/admin_socket.rs:25:62:
called `Result::unwrap()` on an `Err` value: create admin Unix socket
Caused by:
Operation not permitted (os error 1)
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
failures:
prosody_wire_commands_password_prompt_and_safe_errors
test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
error: test failed, to rerun pass `--test admin_socket`
@@ -0,0 +1 @@
PASS: SASL2 Bind2 TLS flow, inline SM/CSI/Carbons, private random resource, malformed requests, authentication failure and fallback
+1
View File
@@ -0,0 +1 @@
PASS: integrated WSS + HTTPS BOSH SASL/bind, CSI, inherited BOSH namespaces, roster, bidirectional chat, upload IQ/PUT/GET/reuse
@@ -0,0 +1,12 @@
Blocking waiting for file lock on package cache
Blocking waiting for file lock on package cache
Blocking waiting for file lock on package cache
Blocking waiting for file lock on build directory
Finished `test` profile [unoptimized + debuginfo] target(s) in 0.12s
Running tests/archive_mam.rs (target/debug/deps/archive_mam-28547367898e6a30)
running 1 test
test archive_larger_than_128mib_streams ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 13 filtered out; finished in 0.86s
@@ -0,0 +1,8 @@
Finished `test` profile [unoptimized + debuginfo] target(s) in 0.08s
Running tests/federation_tls.rs (target/debug/deps/federation_tls-8eaeecccd4759bb4)
running 1 test
test native_prosody_tls_external_bidirectional ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 2 filtered out; finished in 0.74s
@@ -0,0 +1,43 @@
Blocking waiting for file lock on package cache
Blocking waiting for file lock on package cache
Blocking waiting for file lock on package cache
Finished `test` profile [unoptimized + debuginfo] target(s) in 0.12s
Running tests/csi_native.rs (target/debug/deps/csi_native-295ef60d9761ac35)
running 1 test
test native_prosody_csi_importance_matches ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
Running tests/muc_native.rs (target/debug/deps/muc_native-5a83afb0c392f358)
running 1 test
test actual_prosody_muc_mam_reads_rust_and_writes_native_archive ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
Running tests/pubsub_native.rs (target/debug/deps/pubsub_native-452af5a83e8c375b)
running 1 test
test native_prosody_pep_reads_rust_and_rust_reads_native ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s
Running tests/push.rs (target/debug/deps/push-50e169110c02e394)
running 1 test
test native_push_body_lookup_excludes_extensions ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 6 filtered out; finished in 0.01s
Running tests/reference_prosody.rs (target/debug/deps/reference_prosody-84c92c3ddfcfccb6)
running 1 test
PROSODY_NATIVE_ROUNDTRIP_OK SHA-1
PROSODY_NATIVE_FINAL_OK SHA-1
PROSODY_NATIVE_ROUNDTRIP_OK SHA-256
PROSODY_NATIVE_FINAL_OK SHA-256
test real_prosody_storage_and_auth_roundtrip ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.22s
@@ -0,0 +1,2 @@
PASS: integrated TCP roster/subscriptions, client IQ routing, CSI buffering/keepalive flush, MAM, blocking, OMEMO PEP, MUC, offline replay and SM resumption
PASS: graceful SIGTERM shutdown
@@ -0,0 +1 @@
PASS: independent SCRAM-SHA-1 over TLS, SASL1/SASL2, SSDP verification, server signatures and wrong-password rejection
@@ -0,0 +1 @@
PASS: independent SCRAM-SHA-256 over TLS, SASL1/SASL2, SSDP verification, server signatures and wrong-password rejection
+25
View File
@@ -0,0 +1,25 @@
Compiling rust-xmpp v0.5.0 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `test` profile [unoptimized + debuginfo] target(s) in 1.82s
Running tests/admin_socket.rs (target/debug/deps/admin_socket-572bc055bcf12a3a)
running 1 test
test prosody_wire_commands_password_prompt_and_safe_errors ... FAILED
failures:
---- prosody_wire_commands_password_prompt_and_safe_errors stdout ----
thread 'prosody_wire_commands_password_prompt_and_safe_errors' (996) panicked at tests/admin_socket.rs:25:62:
called `Result::unwrap()` on an `Err` value: create admin Unix socket
Caused by:
Operation not permitted (os error 1)
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
failures:
prosody_wire_commands_password_prompt_and_safe_errors
test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
error: test failed, to rerun pass `--test admin_socket`
+1
View File
@@ -0,0 +1 @@
PASS: SASL2 Bind2 TLS flow, inline SM/CSI/Carbons, private random resource, malformed requests, authentication failure and fallback
+2
View File
@@ -0,0 +1,2 @@
Checking rust-xmpp v0.5.0 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 2.01s
@@ -0,0 +1,9 @@
Compiling rust-xmpp v0.5.0 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `test` profile [unoptimized + debuginfo] target(s) in 2.09s
Running tests/federation_tls.rs (target/debug/deps/federation_tls-1d17c1cfea5f4714)
running 1 test
test native_prosody_tls_external_bidirectional ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 2 filtered out; finished in 1.65s
+1
View File
@@ -0,0 +1 @@
PASS: integrated WSS + HTTPS BOSH SASL/bind, CSI, inherited BOSH namespaces, roster, bidirectional chat, upload IQ/PUT/GET/reuse
+9
View File
@@ -0,0 +1,9 @@
Compiling rust-xmpp v0.5.0 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `test` profile [unoptimized + debuginfo] target(s) in 1.79s
Running tests/archive_mam.rs (target/debug/deps/archive_mam-973755ec43c22385)
running 1 test
test archive_larger_than_128mib_streams ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 13 filtered out; finished in 0.86s
@@ -0,0 +1,9 @@
Compiling rust-xmpp v0.5.0 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `test` profile [unoptimized + debuginfo] target(s) in 3.12s
Running tests/preauth_native.rs (target/debug/deps/preauth_native-ccb4b485a667f0f8)
running 1 test
test native_prosody_invitation_tokens_roundtrip ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.27s
+49
View File
@@ -0,0 +1,49 @@
Blocking waiting for file lock on build directory
Compiling rust-xmpp v0.5.0 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `test` profile [unoptimized + debuginfo] target(s) in 11.11s
Running tests/csi_native.rs (target/debug/deps/csi_native-eba98d9cb4d5f495)
running 1 test
test native_prosody_csi_importance_matches ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
Running tests/muc_native.rs (target/debug/deps/muc_native-addf0f4a2dc96ddd)
running 1 test
test actual_prosody_muc_mam_reads_rust_and_writes_native_archive ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s
Running tests/preauth_native.rs (target/debug/deps/preauth_native-ccb4b485a667f0f8)
running 1 test
test native_prosody_invitation_tokens_roundtrip ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s
Running tests/pubsub_native.rs (target/debug/deps/pubsub_native-28e6095e22e2420b)
running 1 test
test native_prosody_pep_reads_rust_and_rust_reads_native ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s
Running tests/push.rs (target/debug/deps/push-99eb4de72a25a307)
running 1 test
test native_push_body_lookup_excludes_extensions ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 6 filtered out; finished in 0.01s
Running tests/reference_prosody.rs (target/debug/deps/reference_prosody-1275958eb2356dc6)
running 1 test
PROSODY_NATIVE_ROUNDTRIP_OK SHA-1
PROSODY_NATIVE_FINAL_OK SHA-1
PROSODY_NATIVE_ROUNDTRIP_OK SHA-256
PROSODY_NATIVE_FINAL_OK SHA-256
test real_prosody_storage_and_auth_roundtrip ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.09s
@@ -0,0 +1 @@
PASS: TLS invitation command discovery, preapproval, single-use mutual roster, replay denial, unknown preauth forwarding/offline pending, account isolation
@@ -0,0 +1 @@
PASS: TLS account/domain discovery with PEP and push enabled/disabled; real push enable, publish options, per-node and service-wide disable
+2
View File
@@ -0,0 +1,2 @@
Compiling rust-xmpp v0.5.0 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `release` profile [optimized] target(s) in 21.78s
+1
View File
@@ -0,0 +1 @@
PASS: independent SCRAM-SHA-1 over TLS, SASL1/SASL2, SSDP verification, server signatures and wrong-password rejection
+1
View File
@@ -0,0 +1 @@
PASS: independent SCRAM-SHA-256 over TLS, SASL1/SASL2, SSDP verification, server signatures and wrong-password rejection
+2
View File
@@ -0,0 +1,2 @@
PASS: integrated TCP roster/subscriptions, client IQ routing, CSI buffering/keepalive flush, MAM, blocking, OMEMO PEP, MUC, offline replay and SM resumption
PASS: graceful SIGTERM shutdown
+353
View File
@@ -0,0 +1,353 @@
Compiling rust-xmpp v0.5.0 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `test` profile [unoptimized + debuginfo] target(s) in 9.46s
Running unittests src/lib.rs (target/debug/deps/rust_xmpp-587bbb396e7c5a05)
running 24 tests
test federation::tests::external_must_be_in_the_advertised_mechanisms ... ok
test federation::tests::federation_domains_are_dns_names_and_case_insensitive ... ok
test federation::tests::starttls_must_be_an_immediate_stream_feature ... ok
test federation::tests::stream_restarts_compare_canonical_domains ... ok
test http_transport::tests::bosh_processing_capacity_is_bounded ... ok
test http_transport::tests::independent_framing ... ok
test sasl::tests::reject_malformed_and_downgrade ... ok
test http_transport::tests::websocket_preserves_inherited_namespaces_and_spaced_declarations ... ok
test sessions::push_timeout_tests::first_important_push_shortens_extended_hibernation_once ... ok
test sessions::tests::acknowledgement_wraps ... ok
test sessions::tests::graceful_disconnect_is_not_resumable ... ok
test sessions::tests::resume_replays_only_unacked_and_checks_owner ... ok
test wire::tests::arbitrary_prefix_and_inherited_namespaces ... ok
test wire::tests::cdata_and_comments_frame_without_counting_brackets ... ok
test wire::tests::declarations_rejected ... ok
test wire::tests::fragmented_and_pipelined ... ok
test wire::tests::invalid_namespace_and_declarations_rejected ... ok
test sasl::tests::rfc5802_sha1_vector ... ok
test http_service::tests::abandoned_slots_release_quota_without_pruning_existing_or_active_files ... ok
test sasl::tests::sha256_independent_python_vector ... ok
test sasl::tests::plus_channel_binding_and_ssdp_are_authenticated ... ok
test server::authorization_tests::upload_requires_registered_local_account_or_explicit_remote_access ... ok
test sasl::tests::wrong_proof_nonce_binding_and_duplicates ... ok
test admin::tests::real_admin_xml_protocol_over_duplex ... ok
test result: ok. 24 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.61s
Running unittests src/main.rs (target/debug/deps/rust_xmpp-43dc57ea24368ad6)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/admin_socket.rs (target/debug/deps/admin_socket-572bc055bcf12a3a)
running 1 test
test prosody_wire_commands_password_prompt_and_safe_errors ... ignored, requires AF_UNIX socket permission; run on target host with --ignored
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/archive_mam.rs (target/debug/deps/archive_mam-973755ec43c22385)
running 14 tests
test archive_larger_than_128mib_streams ... ignored, large-file scalability regression; run explicitly
test mam_preferences_persist ... ok
test corrupt_archive_reports_server_error_and_namespace_stripping_is_precise ... ok
test legacy_records_binary_cache_and_roundtrip ... ok
test append_is_incremental_and_recovers_torn_tail ... ok
test smart_enable_and_message_selection ... ok
test archive_roundtrip_preserves_default_namespace_resets ... ok
test equal_cursors_and_normalized_query_jids ... ok
test real_archive_sid_and_sender_privacy ... ok
test muc_archive_filters_stanza_kind_instead_of_sender_jid ... ok
test zero_page_dates_and_invalid_forms ... ok
test mam_paging_filters_and_forbidden ... ok
test extended_ids_ranges_flip_and_metadata ... ok
test namespaces_expiry_and_concurrent_append ... ok
test result: ok. 13 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.04s
Running tests/auth.rs (target/debug/deps/auth-bd49e01cf4c2f281)
running 2 tests
test traversal_and_malicious_account_records_rejected ... ok
test create_and_read_hashed_accounts ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.72s
Running tests/cli.rs (target/debug/deps/cli-b896cdfe001bea67)
running 2 tests
test server_cannot_be_mistaken_for_running_service ... ok
test conversion_preserves_source_and_refuses_overwrite ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
Running tests/config.rs (target/debug/deps/config-1478d42081f7ab0f)
running 12 tests
test component_can_explicitly_enable_global_modules ... ok
test include_has_own_global_scope_and_parent_scope_is_restored ... ok
test declarations_and_overrides ... ok
test storage_paths_encode_like_prosody ... ok
test supplied_configuration_scopes_arithmetic_and_modules ... ok
test include_cycles_rejected ... ok
test tables_cannot_recurse_forever ... ok
test runtime_capabilities_are_unavailable ... ok
test all_formats_round_trip_actual_config ... ok
test supplied_config_matches_original_prosody_loader ... ok
test malformed_values_rejected ... ok
test loops_are_bounded ... ok
test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
Running tests/csi.rs (target/debug/deps/csi-72cb213d3dbb7d6c)
running 2 tests
test bounded_queue_flush_delay_activity_and_grace ... ok
test native_importance_rules ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/csi_native.rs (target/debug/deps/csi_native-eba98d9cb4d5f495)
running 1 test
test native_prosody_csi_importance_matches ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/data_lock.rs (target/debug/deps/data_lock-c5d9714de0c98247)
running 2 tests
test child_process_probe ... ok
test excludes_another_process_and_releases_on_drop ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running tests/debug_legacy.rs (target/debug/deps/debug_legacy-ff48fac0b9f28fda)
running 1 test
test debug_empty_legacy_bind ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.23s
Running tests/federation_tls.rs (target/debug/deps/federation_tls-1d17c1cfea5f4714)
running 3 tests
test native_prosody_tls_external_bidirectional ... ignored, requires native Prosody cafd74b9c5ea and Lua TLS dependencies
test mutual_tls_external_delivery_and_certificate_identity_rejection ... ok
test reuses_connections_serializes_writes_and_retires_idle_or_closed_peers ... ok
test result: ok. 2 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 1.61s
Running tests/http_transport.rs (target/debug/deps/http_transport-c4d9ba6090cac490)
running 7 tests
test configured_origin_is_enforced ... ok
test bosh_preserves_namespace_inherited_from_body ... ok
test transport_paths_and_cors_preflight_match_prosody ... ok
test bosh_session_retries_restart_termination ... ok
test bosh_reorders_two_requests_without_replaying_stanzas ... ok
test websocket_frames_are_independent_xml ... ok
test bosh_retry_survives_aborted_http_request_without_replaying_stanzas ... ok
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s
Running tests/http_upload.rs (target/debug/deps/http_upload-a7eb3b455efd4574)
running 5 tests
test https_endpoint_uses_real_tls ... ok
test percent_escape_case_and_equivalent_url_spelling ... ok
test persisted_prosody_archive_and_hs256_slot_survive_without_sidecar ... ok
test expired_upload_releases_quota ... ok
test upload_authorization_streaming_ranges_and_restart ... ok
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s
Running tests/message_routing.rs (target/debug/deps/message_routing-f782bf5ad5366e9d)
running 2 tests
test unknown_resource_falls_back_to_available_bare_jid ... ok
test headline_uses_all_nonnegative_available_resources_and_errors_never_fallback ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/muc_access.rs (target/debug/deps/muc_access-aeab2ef041578295)
running 3 tests
test moderators_cannot_kick_or_demote_other_moderators ... ok
test nested_affiliations_do_not_fall_back_to_obsolete_flat_entries ... ok
test binary_occupant_id_salt_survives_saves_and_restarts ... ok
test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running tests/muc_domain_bans.rs (target/debug/deps/muc_domain_bans-2cf55e8d47991b19)
running 2 tests
test applying_domain_ban_removes_remote_occupants_and_blocks_rejoin ... ok
test native_domain_bans_block_remote_users_but_allow_explicit_members ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running tests/muc_flow.rs (target/debug/deps/muc_flow-a4be20068ea0d649)
running 18 tests
test configured_lock_timeout_expires_without_owner_submission ... ok
test join_lock_chat_leave ... ok
test authorization_and_conflict ... ok
test iq_response_requires_expected_sender ... ok
test multiple_resources_share_nick_and_private_delivery ... ok
test occupant_id_is_stable_and_spoofed_ids_removed ... ok
test nick_invite_destroy_and_local_creation ... ok
test restored_temporary_room_is_deleted_after_last_disconnect ... ok
test persistence_roundtrip ... ok
test switching_to_members_only_removes_unaffiliated_users ... ok
test visitor_voice_request_cannot_spoof_identity_or_grant_itself_voice ... ok
test preserves_unknown_binary_mixed_room_fields ... ok
test room_vcard_owner_only_and_avatar_presence ... ok
test persistent_destroy_creates_prosody_tombstone ... ok
test reserved_nickname_blocks_other_users ... ok
test archive_history_and_permissions ... ok
test maintenance_expires_idle_archives_and_tombstones ... ok
test native_muc_archive_type_and_anonymity_are_preserved ... ok
test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
Running tests/muc_native.rs (target/debug/deps/muc_native-addf0f4a2dc96ddd)
running 1 test
test actual_prosody_muc_mam_reads_rust_and_writes_native_archive ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/pep_discovery.rs (target/debug/deps/pep_discovery-e81fd010a9642251)
running 4 tests
test standalone_component_does_not_claim_pep_automatic_subscriptions ... ok
test account_disco_advertises_pep_without_requiring_a_node ... ok
test node_discovery_keeps_node_identity_errors_and_access_checks ... ok
test account_discovery_does_not_intercept_server_or_resource_caps ... ok
test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s
Running tests/preauth.rs (target/debug/deps/preauth-0088370dd8976061)
running 10 tests
test duplicate_or_wrong_namespace_tokens_do_not_qualify ... ok
test unknown_tokens_do_not_create_invite_stores_and_disabled_accounts_cannot_issue ... ok
test standard_adhoc_command_returns_contact_uri ... ok
test prosody_numeric_expiry_is_consumed_and_other_entries_preserved ... ok
test unknown_client_token_is_preserved_on_remote_and_pending_delivery ... ok
test concurrent_redemption_has_exactly_one_winner ... ok
test valid_token_autoapproves_and_sends_reciprocal_request ... ok
test identity_scope_does_not_burn_on_wrong_sender_or_leak_to_prosody ... ok
test invitations_expire_are_single_use_and_owner_scoped ... ok
test local_invitation_updates_both_rosters_without_granting_reverse_subscription ... ok
test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
Running tests/preauth_native.rs (target/debug/deps/preauth_native-ccb4b485a667f0f8)
running 1 test
test native_prosody_invitation_tokens_roundtrip ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/pubsub_native.rs (target/debug/deps/pubsub_native-28e6095e22e2420b)
running 1 test
test native_prosody_pep_reads_rust_and_rust_reads_native ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/pubsub_persistence.rs (target/debug/deps/pubsub_persistence-102bbd30c0a0e29d)
running 18 tests
test modern_bookmarks_notify_legacy_capability ... ok
test native_string_max_items_satisfies_numeric_publish_precondition ... ok
test configurable_limits_component_creation_and_publisher ... ok
test capability_discovery_replays_and_filters_notifications ... ok
test configure_requires_owner ... ok
test nonpersistent_items_stay_in_memory_and_can_be_made_persistent ... ok
test full_jid_block_applies_to_reads_subscription_replays_and_events ... ok
test open_model_and_notifications ... ok
test reads_prosody_legacy_fixture ... ok
test pep_persists_namespaces_and_enforces_owner ... ok
test publish_options_conflict_is_recoverable_and_preserves_item ... ok
test remote_unavailable_is_scoped_to_addressed_owner_and_cancels_pending ... ok
test roster_presence_access_and_foreign_subscription_denied ... ok
test remote_caps_replay_and_open_node_privacy_revoke ... ok
test subscription_options_disable_events_and_require_subscriber ... ok
test payload_policy_applies_to_subscription_and_caps_replays ... ok
test native_notification_fields_and_retract_policy_are_independent ... ok
test component_default_retention_matches_prosody_twenty_items ... ok
test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.31s
Running tests/push.rs (target/debug/deps/push-99eb4de72a25a307)
running 7 tests
test native_push_body_lookup_excludes_extensions ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test foreign_account_cannot_register ... ok
test push_summary_never_copies_foreign_namespace_body ... ok
test queue_coalesces_and_importance_matches_native ... ok
test reenable_cancels_old_errors_and_failure_counts_are_per_account ... ok
test stable_client_registration_and_targeted_notification ... ok
test registrations_notifications_and_authenticated_errors ... ok
test result: ok. 6 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.09s
Running tests/reference_prosody.rs (target/debug/deps/reference_prosody-1275958eb2356dc6)
running 1 test
test real_prosody_storage_and_auth_roundtrip ... ignored, requires native supplied Prosody source; run scripts/prosody_compat/verify.sh
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/sasl_accounts.rs (target/debug/deps/sasl_accounts-c5837c508cc81fd7)
running 1 test
test disabled_legacy_and_unicode_accounts ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.63s
Running tests/storage_accounts.rs (target/debug/deps/storage_accounts-8a7eb307d9ed32f8)
running 20 tests
test broken_roster_is_not_overwritten ... ok
test account_purge_refuses_symlink_store_without_touching_other_files ... ok
test inbound_subscription_requires_pending_to_grant_to ... ok
test blocklist_enforcement_api ... ok
test malformed_legacy_vcard_and_private_bookmarks_rejected ... ok
test malformed_roster_iq_never_mutates ... ok
test domain_roster_and_block_jid_normalization ... ok
test private_and_vcard_authorization ... ok
test privacy_migration_only_default_deny_jids ... ok
test roster_empty_name_and_foreign_group_ignored ... ok
test reads_timestamp_blocklist_and_keeps_metadata ... ok
test roster_preserves_subscription_and_metadata ... ok
test purge_account_exact_files_preserves_others_and_extras ... ok
test subscription_handshake_and_cancel ... ok
test legacy_bookmarks_respect_host_limit_and_read_over_256 ... ok
test bookmarks_private_pep_bidirectional_and_private ... ok
test legacy_migration_clears_source_after_success ... ok
test vcard_pep_conversion_and_avatar ... ok
test password_change_after_purge_never_recreates_account ... ok
test creation_and_purge_are_serialized ... ok
test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.43s
Running tests/storage_compat.rs (target/debug/deps/storage_compat-1e1d2b48f1bf84f1)
running 6 tests
test empty_namespace_preserved ... ok
test stanza_roundtrip ... ok
test mixed_binary_roundtrip ... ok
test path_and_atomic_update ... ok
test rejects_cycles_code_and_bad_files ... ok
test concurrent_updates_do_not_lose_entries ... ok
test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
Doc-tests rust_xmpp
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
+54
View File
@@ -0,0 +1,54 @@
{
"total_load_wall_seconds": 7.117,
"requested_resources": 500,
"authenticated_bound_resources": 500,
"connection_setup_concurrency": 50,
"setup_wall_seconds": 0.599,
"setup_latency": {
"samples": 500,
"median_ms": 54.78,
"p95_ms": 73.082,
"max_ms": 85.834
},
"ping_rounds": 10,
"ping_round_trip": {
"samples": 5000,
"median_ms": 12.17,
"p95_ms": 24.847,
"max_ms": 28.831
},
"accounts": 100,
"message_rounds": 10,
"messages_sent": 5000,
"messages_received": 5000,
"message_batch_seconds": 4.239,
"metrics_before": {
"rss_kib": 6804,
"cpu_seconds": 0.0,
"fd_count": 11
},
"metrics_connected": {
"rss_kib": 24808,
"cpu_seconds": 1.02,
"fd_count": 511
},
"metrics_after_workload": {
"rss_kib": 25508,
"cpu_seconds": 8.02,
"fd_count": 511
},
"metrics_two_seconds_after_disconnect": {
"rss_kib": 25636,
"cpu_seconds": 8.04,
"fd_count": 11
},
"sampled_peak_rss_kib": 25636,
"fd_delta_after_disconnect": 0,
"failures": [],
"scope": "One loopback host, 100 accounts with distinct resources, TLS+PLAIN, ping and directed messages; not a production benchmark or proof of no memory leaks.",
"mam": {
"archive_files": 100,
"records": 10000,
"expected_records": 10000
}
}
+498
View File
@@ -0,0 +1,498 @@
Compiling rust-xmpp v0.6.0 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `test` profile [unoptimized + debuginfo] target(s) in 7.38s
Running unittests src/lib.rs (target/debug/deps/rust_xmpp-8e6956f919afb7dd)
running 24 tests
test http_transport::tests::bosh_processing_capacity_is_bounded ... ok
test federation::tests::starttls_must_be_an_immediate_stream_feature ... ok
test http_transport::tests::independent_framing ... ok
test federation::tests::external_must_be_in_the_advertised_mechanisms ... ok
test federation::tests::federation_domains_are_dns_names_and_case_insensitive ... ok
test http_transport::tests::websocket_preserves_inherited_namespaces_and_spaced_declarations ... ok
test federation::tests::stream_restarts_compare_canonical_domains ... ok
test sasl::tests::reject_malformed_and_downgrade ... ok
test sessions::push_timeout_tests::first_important_push_shortens_extended_hibernation_once ... ok
test sessions::tests::acknowledgement_wraps ... ok
test sessions::tests::graceful_disconnect_is_not_resumable ... ok
test sessions::tests::resume_replays_only_unacked_and_checks_owner ... ok
test wire::tests::arbitrary_prefix_and_inherited_namespaces ... ok
test wire::tests::cdata_and_comments_frame_without_counting_brackets ... ok
test wire::tests::declarations_rejected ... ok
test wire::tests::fragmented_and_pipelined ... ok
test wire::tests::invalid_namespace_and_declarations_rejected ... ok
test sasl::tests::rfc5802_sha1_vector ... ok
test http_service::tests::abandoned_slots_release_quota_without_pruning_existing_or_active_files ... ok
test sasl::tests::sha256_independent_python_vector ... ok
test sasl::tests::plus_channel_binding_and_ssdp_are_authenticated ... ok
test server::authorization_tests::upload_requires_registered_local_account_or_explicit_remote_access ... ok
test sasl::tests::wrong_proof_nonce_binding_and_duplicates ... ok
test admin::tests::real_admin_xml_protocol_over_duplex ... ok
test result: ok. 24 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.59s
Running unittests src/main.rs (target/debug/deps/rust_xmpp-3e14cc5e7aa0895f)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/admin_socket.rs (target/debug/deps/admin_socket-8c2b01cbac1302f6)
running 1 test
test prosody_wire_commands_password_prompt_and_safe_errors ... ignored, requires AF_UNIX socket permission; run on target host with --ignored
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/archive_mam.rs (target/debug/deps/archive_mam-fa7aa68472eca402)
running 14 tests
test archive_larger_than_128mib_streams ... ignored, large-file scalability regression; run explicitly
test mam_preferences_persist ... ok
test legacy_records_binary_cache_and_roundtrip ... ok
test corrupt_archive_reports_server_error_and_namespace_stripping_is_precise ... ok
test append_is_incremental_and_recovers_torn_tail ... ok
test smart_enable_and_message_selection ... ok
test real_archive_sid_and_sender_privacy ... ok
test archive_roundtrip_preserves_default_namespace_resets ... ok
test muc_archive_filters_stanza_kind_instead_of_sender_jid ... ok
test zero_page_dates_and_invalid_forms ... ok
test equal_cursors_and_normalized_query_jids ... ok
test mam_paging_filters_and_forbidden ... ok
test extended_ids_ranges_flip_and_metadata ... ok
test namespaces_expiry_and_concurrent_append ... ok
test result: ok. 13 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.06s
Running tests/auth.rs (target/debug/deps/auth-eebaaafbf6ac0386)
running 2 tests
test traversal_and_malicious_account_records_rejected ... ok
test create_and_read_hashed_accounts ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.74s
Running tests/cli.rs (target/debug/deps/cli-21d91f9b255982aa)
running 2 tests
test server_cannot_be_mistaken_for_running_service ... ok
test conversion_preserves_source_and_refuses_overwrite ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
Running tests/config.rs (target/debug/deps/config-91531c799cda7652)
running 12 tests
test include_cycles_rejected ... ok
test declarations_and_overrides ... ok
test component_can_explicitly_enable_global_modules ... ok
test include_has_own_global_scope_and_parent_scope_is_restored ... ok
test storage_paths_encode_like_prosody ... ok
test tables_cannot_recurse_forever ... ok
test runtime_capabilities_are_unavailable ... ok
test supplied_configuration_scopes_arithmetic_and_modules ... ok
test malformed_values_rejected ... ok
test all_formats_round_trip_actual_config ... ok
test supplied_config_matches_original_prosody_loader ... ok
test loops_are_bounded ... ok
test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
Running tests/csi.rs (target/debug/deps/csi-69485b32335fb875)
running 2 tests
test bounded_queue_flush_delay_activity_and_grace ... ok
test native_importance_rules ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/csi_native.rs (target/debug/deps/csi_native-10dd4e4347920cda)
running 1 test
test native_prosody_csi_importance_matches ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/data_lock.rs (target/debug/deps/data_lock-ec340cd291ffc214)
running 2 tests
test child_process_probe ... ok
test excludes_another_process_and_releases_on_drop ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/debug_legacy.rs (target/debug/deps/debug_legacy-8473fc8f96b99004)
running 1 test
test debug_empty_legacy_bind ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.09s
Running tests/federation_tls.rs (target/debug/deps/federation_tls-3893c914190e6790)
running 3 tests
test native_prosody_tls_external_bidirectional ... ignored, requires native Prosody cafd74b9c5ea and Lua TLS dependencies
test mutual_tls_external_delivery_and_certificate_identity_rejection ... ok
test reuses_connections_serializes_writes_and_retires_idle_or_closed_peers ... ok
test result: ok. 2 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 1.41s
Running tests/http_transport.rs (target/debug/deps/http_transport-52d4995a1a8bfae2)
running 10 tests
test configured_origin_is_enforced ... ok
test bosh_preserves_namespace_inherited_from_body ... ok
test transport_paths_and_cors_preflight_match_prosody ... ok
test bosh_session_retries_restart_termination ... ok
test bosh_termination_waits_for_graceful_cleanup_before_reconnect ... ok
test bosh_reorders_two_requests_without_replaying_stanzas ... ok
test websocket_frames_are_independent_xml ... ok
test websocket_close_allows_graceful_engine_cleanup ... ok
test websocket_disconnect_delivers_eof_without_graceful_close ... ok
test bosh_retry_survives_aborted_http_request_without_replaying_stanzas ... ok
test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s
Running tests/http_upload.rs (target/debug/deps/http_upload-10d3b973882378f6)
running 5 tests
test https_endpoint_uses_real_tls ... ok
test percent_escape_case_and_equivalent_url_spelling ... ok
test expired_upload_releases_quota ... ok
test persisted_prosody_archive_and_hs256_slot_survive_without_sidecar ... ok
test upload_authorization_streaming_ranges_and_restart ... ok
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s
Running tests/message_routing.rs (target/debug/deps/message_routing-633d3d5413f5f3ab)
running 2 tests
test headline_uses_all_nonnegative_available_resources_and_errors_never_fallback ... ok
test unknown_resource_falls_back_to_available_bare_jid ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/muc_access.rs (target/debug/deps/muc_access-5acc3b2816c611e4)
running 3 tests
test moderators_cannot_kick_or_demote_other_moderators ... ok
test binary_occupant_id_salt_survives_saves_and_restarts ... ok
test nested_affiliations_do_not_fall_back_to_obsolete_flat_entries ... ok
test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running tests/muc_domain_bans.rs (target/debug/deps/muc_domain_bans-5ec5d23a3e219c75)
running 2 tests
test applying_domain_ban_removes_remote_occupants_and_blocks_rejoin ... ok
test native_domain_bans_block_remote_users_but_allow_explicit_members ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running tests/muc_flow.rs (target/debug/deps/muc_flow-d851ccc84dafeffd)
running 18 tests
test join_lock_chat_leave ... ok
test configured_lock_timeout_expires_without_owner_submission ... ok
test multiple_resources_share_nick_and_private_delivery ... ok
test iq_response_requires_expected_sender ... ok
test authorization_and_conflict ... ok
test occupant_id_is_stable_and_spoofed_ids_removed ... ok
test nick_invite_destroy_and_local_creation ... ok
test persistence_roundtrip ... ok
test restored_temporary_room_is_deleted_after_last_disconnect ... ok
test switching_to_members_only_removes_unaffiliated_users ... ok
test visitor_voice_request_cannot_spoof_identity_or_grant_itself_voice ... ok
test persistent_destroy_creates_prosody_tombstone ... ok
test preserves_unknown_binary_mixed_room_fields ... ok
test room_vcard_owner_only_and_avatar_presence ... ok
test reserved_nickname_blocks_other_users ... ok
test maintenance_expires_idle_archives_and_tombstones ... ok
test native_muc_archive_type_and_anonymity_are_preserved ... ok
test archive_history_and_permissions ... ok
test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
Running tests/muc_native.rs (target/debug/deps/muc_native-aa6750b2ebee43c8)
running 1 test
test actual_prosody_muc_mam_reads_rust_and_writes_native_archive ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/pep_discovery.rs (target/debug/deps/pep_discovery-3104ee43a0080af3)
running 4 tests
test standalone_component_does_not_claim_pep_automatic_subscriptions ... ok
test account_disco_advertises_pep_without_requiring_a_node ... ok
test node_discovery_keeps_node_identity_errors_and_access_checks ... ok
test account_discovery_does_not_intercept_server_or_resource_caps ... ok
test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.10s
Running tests/preauth.rs (target/debug/deps/preauth-3aa913bdaa6593d6)
running 10 tests
test duplicate_or_wrong_namespace_tokens_do_not_qualify ... ok
test unknown_client_token_is_preserved_on_remote_and_pending_delivery ... ok
test unknown_tokens_do_not_create_invite_stores_and_disabled_accounts_cannot_issue ... ok
test prosody_numeric_expiry_is_consumed_and_other_entries_preserved ... ok
test concurrent_redemption_has_exactly_one_winner ... ok
test standard_adhoc_command_returns_contact_uri ... ok
test identity_scope_does_not_burn_on_wrong_sender_or_leak_to_prosody ... ok
test valid_token_autoapproves_and_sends_reciprocal_request ... ok
test local_invitation_updates_both_rosters_without_granting_reverse_subscription ... ok
test invitations_expire_are_single_use_and_owner_scoped ... ok
test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
Running tests/preauth_native.rs (target/debug/deps/preauth_native-23e5663ef0756bc1)
running 1 test
test native_prosody_invitation_tokens_roundtrip ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/pubsub_native.rs (target/debug/deps/pubsub_native-a4cb06be28318f35)
running 1 test
test native_prosody_pep_reads_rust_and_rust_reads_native ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/pubsub_persistence.rs (target/debug/deps/pubsub_persistence-3639e617b2b52513)
running 18 tests
test configure_requires_owner ... ok
test modern_bookmarks_notify_legacy_capability ... ok
test configurable_limits_component_creation_and_publisher ... ok
test native_string_max_items_satisfies_numeric_publish_precondition ... ok
test capability_discovery_replays_and_filters_notifications ... ok
test open_model_and_notifications ... ok
test nonpersistent_items_stay_in_memory_and_can_be_made_persistent ... ok
test pep_persists_namespaces_and_enforces_owner ... ok
test reads_prosody_legacy_fixture ... ok
test publish_options_conflict_is_recoverable_and_preserves_item ... ok
test full_jid_block_applies_to_reads_subscription_replays_and_events ... ok
test remote_unavailable_is_scoped_to_addressed_owner_and_cancels_pending ... ok
test roster_presence_access_and_foreign_subscription_denied ... ok
test subscription_options_disable_events_and_require_subscriber ... ok
test remote_caps_replay_and_open_node_privacy_revoke ... ok
test native_notification_fields_and_retract_policy_are_independent ... ok
test payload_policy_applies_to_subscription_and_caps_replays ... ok
test component_default_retention_matches_prosody_twenty_items ... ok
test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.25s
Running tests/push.rs (target/debug/deps/push-ec027616ed738bd1)
running 7 tests
test native_push_body_lookup_excludes_extensions ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test foreign_account_cannot_register ... ok
test push_summary_never_copies_foreign_namespace_body ... ok
test queue_coalesces_and_importance_matches_native ... ok
test reenable_cancels_old_errors_and_failure_counts_are_per_account ... ok
test stable_client_registration_and_targeted_notification ... ok
test registrations_notifications_and_authenticated_errors ... ok
test result: ok. 6 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.09s
Running tests/reference_prosody.rs (target/debug/deps/reference_prosody-f61d2cf0ed75c5f6)
running 1 test
test real_prosody_storage_and_auth_roundtrip ... ignored, requires native supplied Prosody source; run scripts/prosody_compat/verify.sh
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/resource_sessions.rs (target/debug/deps/resource_sessions-741d9a64d370399a)
running 7 tests
test increment_skips_occupied_suffixes_and_preserves_sessions ... ok
test invalid_resume_owner_or_ack_does_not_evict_active_session ... ok
test random_conflicts_get_distinct_resources_for_same_owner ... ok
test replacement_revokes_hibernating_resume_and_survives_old_cleanup ... ok
test kick_new_leaves_existing_session_unchanged ... ok
test concurrent_default_binds_replace_atomically ... ok
test active_resume_preserves_state_and_replaces_transport_notifier ... ok
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running tests/sasl_accounts.rs (target/debug/deps/sasl_accounts-009861adf6f23d85)
running 1 test
test disabled_legacy_and_unicode_accounts ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.62s
Running tests/storage_accounts.rs (target/debug/deps/storage_accounts-5f102e29d7d67bfc)
running 20 tests
test broken_roster_is_not_overwritten ... ok
test account_purge_refuses_symlink_store_without_touching_other_files ... ok
test inbound_subscription_requires_pending_to_grant_to ... ok
test malformed_legacy_vcard_and_private_bookmarks_rejected ... ok
test domain_roster_and_block_jid_normalization ... ok
test malformed_roster_iq_never_mutates ... ok
test blocklist_enforcement_api ... ok
test private_and_vcard_authorization ... ok
test privacy_migration_only_default_deny_jids ... ok
test reads_timestamp_blocklist_and_keeps_metadata ... ok
test roster_empty_name_and_foreign_group_ignored ... ok
test roster_preserves_subscription_and_metadata ... ok
test purge_account_exact_files_preserves_others_and_extras ... ok
test subscription_handshake_and_cancel ... ok
test legacy_bookmarks_respect_host_limit_and_read_over_256 ... ok
test bookmarks_private_pep_bidirectional_and_private ... ok
test legacy_migration_clears_source_after_success ... ok
test vcard_pep_conversion_and_avatar ... ok
test password_change_after_purge_never_recreates_account ... ok
test creation_and_purge_are_serialized ... ok
test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.42s
Running tests/storage_compat.rs (target/debug/deps/storage_compat-27729d166567a13d)
running 6 tests
test empty_namespace_preserved ... ok
test stanza_roundtrip ... ok
test mixed_binary_roundtrip ... ok
test path_and_atomic_update ... ok
test concurrent_updates_do_not_lose_entries ... ok
test rejects_cycles_code_and_bad_files ... ok
test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
Doc-tests rust_xmpp
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Checking rust-xmpp v0.6.0 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 4.46s
Compiling rust-xmpp v0.6.0 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `release` profile [optimized] target(s) in 21.75s
PASS: integrated TCP roster/subscriptions, client IQ routing, CSI buffering/keepalive flush, MAM, blocking, OMEMO PEP, MUC, offline replay and SM resumption
PASS: graceful SIGTERM shutdown
PASS: independent SCRAM-SHA-1 over TLS, SASL1/SASL2, SSDP verification, server signatures and wrong-password rejection
PASS: independent SCRAM-SHA-256 over TLS, SASL1/SASL2, SSDP verification, server signatures and wrong-password rejection
PASS: SASL2 Bind2 TLS flow, inline SM/CSI/Carbons, private random resource, malformed requests, authentication failure and fallback
PASS: SASL2 inline SM active/EOF resume, authenticated owner/id/h checks, replay ordering, full JID, Bind2 fallback and malformed requests
PASS: TLS account/domain discovery with PEP and push enabled/disabled; real push enable, publish options, per-node and service-wide disable
PASS: TLS invitation command discovery, preapproval, single-use mutual roster, replay denial, unknown preauth forwarding/offline pending, account isolation
PASS: TLS conflict_resolve=default, live and hibernating SM resources
PASS: TLS conflict_resolve=kick_old, live and hibernating SM resources
PASS: TLS conflict_resolve=kick_new, live and hibernating SM resources
PASS: TLS conflict_resolve=increment, live and hibernating SM resources
PASS: TLS conflict_resolve=random, live and hibernating SM resources
PASS: integrated WSS + HTTPS BOSH SASL/bind, CSI, inherited BOSH namespaces, roster, bidirectional chat, upload IQ/PUT/GET/reuse, graceful SM close and same-resource relogin under kick_new
{
"total_load_wall_seconds": 7.117,
"requested_resources": 500,
"authenticated_bound_resources": 500,
"connection_setup_concurrency": 50,
"setup_wall_seconds": 0.599,
"setup_latency": {
"samples": 500,
"median_ms": 54.78,
"p95_ms": 73.082,
"max_ms": 85.834
},
"ping_rounds": 10,
"ping_round_trip": {
"samples": 5000,
"median_ms": 12.17,
"p95_ms": 24.847,
"max_ms": 28.831
},
"accounts": 100,
"message_rounds": 10,
"messages_sent": 5000,
"messages_received": 5000,
"message_batch_seconds": 4.239,
"metrics_before": {
"rss_kib": 6804,
"cpu_seconds": 0.0,
"fd_count": 11
},
"metrics_connected": {
"rss_kib": 24808,
"cpu_seconds": 1.02,
"fd_count": 511
},
"metrics_after_workload": {
"rss_kib": 25508,
"cpu_seconds": 8.02,
"fd_count": 511
},
"metrics_two_seconds_after_disconnect": {
"rss_kib": 25636,
"cpu_seconds": 8.04,
"fd_count": 11
},
"sampled_peak_rss_kib": 25636,
"fd_delta_after_disconnect": 0,
"failures": [],
"scope": "One loopback host, 100 accounts with distinct resources, TLS+PLAIN, ping and directed messages; not a production benchmark or proof of no memory leaks.",
"mam": {
"archive_files": 100,
"records": 10000,
"expected_records": 10000
}
}
Compiling rust-xmpp v0.6.0 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `test` profile [unoptimized + debuginfo] target(s) in 2.49s
Running tests/csi_native.rs (target/debug/deps/csi_native-10dd4e4347920cda)
running 1 test
test native_prosody_csi_importance_matches ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
Running tests/muc_native.rs (target/debug/deps/muc_native-aa6750b2ebee43c8)
running 1 test
test actual_prosody_muc_mam_reads_rust_and_writes_native_archive ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
Running tests/preauth_native.rs (target/debug/deps/preauth_native-23e5663ef0756bc1)
running 1 test
test native_prosody_invitation_tokens_roundtrip ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s
Running tests/pubsub_native.rs (target/debug/deps/pubsub_native-a4cb06be28318f35)
running 1 test
test native_prosody_pep_reads_rust_and_rust_reads_native ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s
Running tests/push.rs (target/debug/deps/push-ec027616ed738bd1)
running 1 test
test native_push_body_lookup_excludes_extensions ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 6 filtered out; finished in 0.00s
Running tests/reference_prosody.rs (target/debug/deps/reference_prosody-f61d2cf0ed75c5f6)
running 1 test
PROSODY_NATIVE_ROUNDTRIP_OK SHA-1
PROSODY_NATIVE_FINAL_OK SHA-1
PROSODY_NATIVE_ROUNDTRIP_OK SHA-256
PROSODY_NATIVE_FINAL_OK SHA-256
test real_prosody_storage_and_auth_roundtrip ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.97s
Compiling rust-xmpp v0.6.0 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `test` profile [unoptimized + debuginfo] target(s) in 2.15s
Running tests/federation_tls.rs (target/debug/deps/federation_tls-3893c914190e6790)
running 1 test
test native_prosody_tls_external_bidirectional ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 2 filtered out; finished in 1.05s
+54
View File
@@ -0,0 +1,54 @@
{
"total_load_wall_seconds": 6.467,
"requested_resources": 500,
"authenticated_bound_resources": 500,
"connection_setup_concurrency": 50,
"setup_wall_seconds": 0.617,
"setup_latency": {
"samples": 500,
"median_ms": 55.521,
"p95_ms": 80.465,
"max_ms": 104.211
},
"ping_rounds": 10,
"ping_round_trip": {
"samples": 5000,
"median_ms": 12.434,
"p95_ms": 21.835,
"max_ms": 28.842
},
"accounts": 100,
"message_rounds": 10,
"messages_sent": 5000,
"messages_received": 5000,
"message_batch_seconds": 3.583,
"metrics_before": {
"rss_kib": 6984,
"cpu_seconds": 0.0,
"fd_count": 11
},
"metrics_connected": {
"rss_kib": 24764,
"cpu_seconds": 1.15,
"fd_count": 511
},
"metrics_after_workload": {
"rss_kib": 25300,
"cpu_seconds": 7.55,
"fd_count": 511
},
"metrics_two_seconds_after_disconnect": {
"rss_kib": 25364,
"cpu_seconds": 7.57,
"fd_count": 11
},
"sampled_peak_rss_kib": 25364,
"fd_delta_after_disconnect": 0,
"failures": [],
"scope": "One loopback host, 100 accounts with distinct resources, TLS+PLAIN, ping and directed messages; not a production benchmark or proof of no memory leaks.",
"mam": {
"archive_files": 100,
"records": 10000,
"expected_records": 10000
}
}
@@ -0,0 +1 @@
PASS: reproduced 0.6.0 TLS1.2 Android y,, rejection
@@ -0,0 +1,23 @@
SERVER LOG:
Rust XMPP experimental: localhost; configured listeners started
Traceback (most recent call last):
File "/workspace/scratch/362577cdf2e0/rust-xmpp-next/tests/sasl_web_network.py", line 172, in <module>
main()
File "/workspace/scratch/362577cdf2e0/rust-xmpp-next/tests/sasl_web_network.py", line 155, in main
asyncio.run(exercise(https_port, ssl.create_default_context(cafile=str(cert))))
File "/opt/codex/runtimes/codex-primary-runtime/dependencies/python/lib/python3.12/asyncio/runners.py", line 195, in run
return runner.run(main)
^^^^^^^^^^^^^^^^
File "/opt/codex/runtimes/codex-primary-runtime/dependencies/python/lib/python3.12/asyncio/runners.py", line 118, in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/opt/codex/runtimes/codex-primary-runtime/dependencies/python/lib/python3.12/asyncio/base_events.py", line 691, in run_until_complete
return future.result()
^^^^^^^^^^^^^^^
File "/workspace/scratch/362577cdf2e0/rust-xmpp-next/tests/sasl_web_network.py", line 118, in exercise
await authenticate(ws, sasl2)
File "/workspace/scratch/362577cdf2e0/rust-xmpp-next/tests/sasl_web_network.py", line 82, in authenticate
assert attrs.get('h') == expected_ssdp, (attrs.get('h'), expected_ssdp)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
AssertionError: ('UzQajgapjuoNRETKCNV1g1zapAbBiaY9mIhExQJWVpQ=', 'Rgy1OtqF8B/re2ip4rVzs2herVHnECfKbsLqKQgUMgo=')
+518
View File
@@ -0,0 +1,518 @@
Compiling rust-xmpp v0.6.1 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `test` profile [unoptimized + debuginfo] target(s) in 6.46s
Running unittests src/lib.rs (target/debug/deps/rust_xmpp-0d50b3846665d98d)
running 24 tests
test federation::tests::external_must_be_in_the_advertised_mechanisms ... ok
test federation::tests::starttls_must_be_an_immediate_stream_feature ... ok
test federation::tests::federation_domains_are_dns_names_and_case_insensitive ... ok
test federation::tests::stream_restarts_compare_canonical_domains ... ok
test http_transport::tests::bosh_processing_capacity_is_bounded ... ok
test http_transport::tests::independent_framing ... ok
test http_transport::tests::websocket_preserves_inherited_namespaces_and_spaced_declarations ... ok
test sasl::tests::reject_malformed_and_downgrade ... ok
test sessions::push_timeout_tests::first_important_push_shortens_extended_hibernation_once ... ok
test sessions::tests::acknowledgement_wraps ... ok
test sessions::tests::graceful_disconnect_is_not_resumable ... ok
test sessions::tests::resume_replays_only_unacked_and_checks_owner ... ok
test wire::tests::arbitrary_prefix_and_inherited_namespaces ... ok
test wire::tests::cdata_and_comments_frame_without_counting_brackets ... ok
test wire::tests::declarations_rejected ... ok
test wire::tests::fragmented_and_pipelined ... ok
test wire::tests::invalid_namespace_and_declarations_rejected ... ok
test sasl::tests::rfc5802_sha1_vector ... ok
test http_service::tests::abandoned_slots_release_quota_without_pruning_existing_or_active_files ... ok
test sasl::tests::sha256_independent_python_vector ... ok
test sasl::tests::plus_channel_binding_and_ssdp_are_authenticated ... ok
test server::authorization_tests::upload_requires_registered_local_account_or_explicit_remote_access ... ok
test sasl::tests::wrong_proof_nonce_binding_and_duplicates ... ok
test admin::tests::real_admin_xml_protocol_over_duplex ... ok
test result: ok. 24 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.59s
Running unittests src/main.rs (target/debug/deps/rust_xmpp-8259f7125d6ef3c7)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/admin_socket.rs (target/debug/deps/admin_socket-d604f5168a5bd15e)
running 1 test
test prosody_wire_commands_password_prompt_and_safe_errors ... ignored, requires AF_UNIX socket permission; run on target host with --ignored
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/archive_mam.rs (target/debug/deps/archive_mam-3e1178e10bc00cb9)
running 14 tests
test archive_larger_than_128mib_streams ... ignored, large-file scalability regression; run explicitly
test mam_preferences_persist ... ok
test append_is_incremental_and_recovers_torn_tail ... ok
test corrupt_archive_reports_server_error_and_namespace_stripping_is_precise ... ok
test legacy_records_binary_cache_and_roundtrip ... ok
test archive_roundtrip_preserves_default_namespace_resets ... ok
test smart_enable_and_message_selection ... ok
test equal_cursors_and_normalized_query_jids ... ok
test real_archive_sid_and_sender_privacy ... ok
test zero_page_dates_and_invalid_forms ... ok
test muc_archive_filters_stanza_kind_instead_of_sender_jid ... ok
test mam_paging_filters_and_forbidden ... ok
test extended_ids_ranges_flip_and_metadata ... ok
test namespaces_expiry_and_concurrent_append ... ok
test result: ok. 13 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.04s
Running tests/auth.rs (target/debug/deps/auth-793ffbaabad50035)
running 2 tests
test traversal_and_malicious_account_records_rejected ... ok
test create_and_read_hashed_accounts ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.84s
Running tests/cli.rs (target/debug/deps/cli-873bc4e47b8a4c2f)
running 2 tests
test server_cannot_be_mistaken_for_running_service ... ok
test conversion_preserves_source_and_refuses_overwrite ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running tests/config.rs (target/debug/deps/config-c02c199093267002)
running 12 tests
test include_cycles_rejected ... ok
test include_has_own_global_scope_and_parent_scope_is_restored ... ok
test component_can_explicitly_enable_global_modules ... ok
test declarations_and_overrides ... ok
test storage_paths_encode_like_prosody ... ok
test tables_cannot_recurse_forever ... ok
test supplied_configuration_scopes_arithmetic_and_modules ... ok
test runtime_capabilities_are_unavailable ... ok
test supplied_config_matches_original_prosody_loader ... ok
test malformed_values_rejected ... ok
test all_formats_round_trip_actual_config ... ok
test loops_are_bounded ... ok
test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
Running tests/csi.rs (target/debug/deps/csi-1437a4fce5b30727)
running 2 tests
test bounded_queue_flush_delay_activity_and_grace ... ok
test native_importance_rules ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/csi_native.rs (target/debug/deps/csi_native-eefc40693c54ec61)
running 1 test
test native_prosody_csi_importance_matches ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/data_lock.rs (target/debug/deps/data_lock-a22a1a0222784e58)
running 2 tests
test child_process_probe ... ok
test excludes_another_process_and_releases_on_drop ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/debug_legacy.rs (target/debug/deps/debug_legacy-b301f540f3b4b403)
running 1 test
test debug_empty_legacy_bind ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.11s
Running tests/federation_tls.rs (target/debug/deps/federation_tls-9cdad036fb137095)
running 3 tests
test native_prosody_tls_external_bidirectional ... ignored, requires native Prosody cafd74b9c5ea and Lua TLS dependencies
test mutual_tls_external_delivery_and_certificate_identity_rejection ... ok
test reuses_connections_serializes_writes_and_retires_idle_or_closed_peers ... ok
test result: ok. 2 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 1.85s
Running tests/http_transport.rs (target/debug/deps/http_transport-b487f7015d7f989c)
running 10 tests
test configured_origin_is_enforced ... ok
test bosh_preserves_namespace_inherited_from_body ... ok
test transport_paths_and_cors_preflight_match_prosody ... ok
test bosh_session_retries_restart_termination ... ok
test bosh_termination_waits_for_graceful_cleanup_before_reconnect ... ok
test bosh_reorders_two_requests_without_replaying_stanzas ... ok
test websocket_frames_are_independent_xml ... ok
test websocket_disconnect_delivers_eof_without_graceful_close ... ok
test websocket_close_allows_graceful_engine_cleanup ... ok
test bosh_retry_survives_aborted_http_request_without_replaying_stanzas ... ok
test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s
Running tests/http_upload.rs (target/debug/deps/http_upload-455ac757029487d1)
running 5 tests
test https_endpoint_uses_real_tls ... ok
test percent_escape_case_and_equivalent_url_spelling ... ok
test persisted_prosody_archive_and_hs256_slot_survive_without_sidecar ... ok
test expired_upload_releases_quota ... ok
test upload_authorization_streaming_ranges_and_restart ... ok
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s
Running tests/message_routing.rs (target/debug/deps/message_routing-2f6634bf8501e870)
running 2 tests
test unknown_resource_falls_back_to_available_bare_jid ... ok
test headline_uses_all_nonnegative_available_resources_and_errors_never_fallback ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/muc_access.rs (target/debug/deps/muc_access-68237955d6a9d6c6)
running 3 tests
test moderators_cannot_kick_or_demote_other_moderators ... ok
test nested_affiliations_do_not_fall_back_to_obsolete_flat_entries ... ok
test binary_occupant_id_salt_survives_saves_and_restarts ... ok
test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running tests/muc_domain_bans.rs (target/debug/deps/muc_domain_bans-19bc3fcc28c85e9a)
running 2 tests
test applying_domain_ban_removes_remote_occupants_and_blocks_rejoin ... ok
test native_domain_bans_block_remote_users_but_allow_explicit_members ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running tests/muc_flow.rs (target/debug/deps/muc_flow-75175b044a10141c)
running 18 tests
test configured_lock_timeout_expires_without_owner_submission ... ok
test authorization_and_conflict ... ok
test iq_response_requires_expected_sender ... ok
test join_lock_chat_leave ... ok
test multiple_resources_share_nick_and_private_delivery ... ok
test nick_invite_destroy_and_local_creation ... ok
test occupant_id_is_stable_and_spoofed_ids_removed ... ok
test restored_temporary_room_is_deleted_after_last_disconnect ... ok
test persistence_roundtrip ... ok
test switching_to_members_only_removes_unaffiliated_users ... ok
test visitor_voice_request_cannot_spoof_identity_or_grant_itself_voice ... ok
test preserves_unknown_binary_mixed_room_fields ... ok
test persistent_destroy_creates_prosody_tombstone ... ok
test room_vcard_owner_only_and_avatar_presence ... ok
test reserved_nickname_blocks_other_users ... ok
test archive_history_and_permissions ... ok
test maintenance_expires_idle_archives_and_tombstones ... ok
test native_muc_archive_type_and_anonymity_are_preserved ... ok
test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
Running tests/muc_native.rs (target/debug/deps/muc_native-dd2a34b938a462e6)
running 1 test
test actual_prosody_muc_mam_reads_rust_and_writes_native_archive ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/pep_discovery.rs (target/debug/deps/pep_discovery-20c6d4b031101804)
running 4 tests
test standalone_component_does_not_claim_pep_automatic_subscriptions ... ok
test account_discovery_does_not_intercept_server_or_resource_caps ... ok
test node_discovery_keeps_node_identity_errors_and_access_checks ... ok
test account_disco_advertises_pep_without_requiring_a_node ... ok
test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s
Running tests/preauth.rs (target/debug/deps/preauth-1adba20c5e7bdc71)
running 10 tests
test duplicate_or_wrong_namespace_tokens_do_not_qualify ... ok
test unknown_tokens_do_not_create_invite_stores_and_disabled_accounts_cannot_issue ... ok
test standard_adhoc_command_returns_contact_uri ... ok
test prosody_numeric_expiry_is_consumed_and_other_entries_preserved ... ok
test unknown_client_token_is_preserved_on_remote_and_pending_delivery ... ok
test concurrent_redemption_has_exactly_one_winner ... ok
test identity_scope_does_not_burn_on_wrong_sender_or_leak_to_prosody ... ok
test invitations_expire_are_single_use_and_owner_scoped ... ok
test valid_token_autoapproves_and_sends_reciprocal_request ... ok
test local_invitation_updates_both_rosters_without_granting_reverse_subscription ... ok
test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s
Running tests/preauth_native.rs (target/debug/deps/preauth_native-6cf664c184a325ba)
running 1 test
test native_prosody_invitation_tokens_roundtrip ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/pubsub_native.rs (target/debug/deps/pubsub_native-fe86a689c0fe3e49)
running 1 test
test native_prosody_pep_reads_rust_and_rust_reads_native ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/pubsub_persistence.rs (target/debug/deps/pubsub_persistence-2d16475df2cbcbf9)
running 18 tests
test modern_bookmarks_notify_legacy_capability ... ok
test native_string_max_items_satisfies_numeric_publish_precondition ... ok
test configurable_limits_component_creation_and_publisher ... ok
test capability_discovery_replays_and_filters_notifications ... ok
test nonpersistent_items_stay_in_memory_and_can_be_made_persistent ... ok
test configure_requires_owner ... ok
test open_model_and_notifications ... ok
test publish_options_conflict_is_recoverable_and_preserves_item ... ok
test reads_prosody_legacy_fixture ... ok
test full_jid_block_applies_to_reads_subscription_replays_and_events ... ok
test pep_persists_namespaces_and_enforces_owner ... ok
test roster_presence_access_and_foreign_subscription_denied ... ok
test remote_unavailable_is_scoped_to_addressed_owner_and_cancels_pending ... ok
test remote_caps_replay_and_open_node_privacy_revoke ... ok
test subscription_options_disable_events_and_require_subscriber ... ok
test payload_policy_applies_to_subscription_and_caps_replays ... ok
test native_notification_fields_and_retract_policy_are_independent ... ok
test component_default_retention_matches_prosody_twenty_items ... ok
test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.35s
Running tests/push.rs (target/debug/deps/push-4696fd1434eda878)
running 7 tests
test native_push_body_lookup_excludes_extensions ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test foreign_account_cannot_register ... ok
test push_summary_never_copies_foreign_namespace_body ... ok
test queue_coalesces_and_importance_matches_native ... ok
test reenable_cancels_old_errors_and_failure_counts_are_per_account ... ok
test stable_client_registration_and_targeted_notification ... ok
test registrations_notifications_and_authenticated_errors ... ok
test result: ok. 6 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.09s
Running tests/reference_prosody.rs (target/debug/deps/reference_prosody-819c2ec87bfa7698)
running 1 test
test real_prosody_storage_and_auth_roundtrip ... ignored, requires native supplied Prosody source; run scripts/prosody_compat/verify.sh
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/resource_sessions.rs (target/debug/deps/resource_sessions-307ed03439280c4e)
running 7 tests
test increment_skips_occupied_suffixes_and_preserves_sessions ... ok
test kick_new_leaves_existing_session_unchanged ... ok
test invalid_resume_owner_or_ack_does_not_evict_active_session ... ok
test replacement_revokes_hibernating_resume_and_survives_old_cleanup ... ok
test random_conflicts_get_distinct_resources_for_same_owner ... ok
test concurrent_default_binds_replace_atomically ... ok
test active_resume_preserves_state_and_replaces_transport_notifier ... ok
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running tests/sasl_accounts.rs (target/debug/deps/sasl_accounts-977514f680e30a4e)
running 1 test
test disabled_legacy_and_unicode_accounts ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.63s
Running tests/storage_accounts.rs (target/debug/deps/storage_accounts-b74657400e2100a6)
running 20 tests
test broken_roster_is_not_overwritten ... ok
test inbound_subscription_requires_pending_to_grant_to ... ok
test account_purge_refuses_symlink_store_without_touching_other_files ... ok
test blocklist_enforcement_api ... ok
test malformed_legacy_vcard_and_private_bookmarks_rejected ... ok
test malformed_roster_iq_never_mutates ... ok
test domain_roster_and_block_jid_normalization ... ok
test private_and_vcard_authorization ... ok
test privacy_migration_only_default_deny_jids ... ok
test reads_timestamp_blocklist_and_keeps_metadata ... ok
test purge_account_exact_files_preserves_others_and_extras ... ok
test roster_empty_name_and_foreign_group_ignored ... ok
test roster_preserves_subscription_and_metadata ... ok
test subscription_handshake_and_cancel ... ok
test bookmarks_private_pep_bidirectional_and_private ... ok
test legacy_bookmarks_respect_host_limit_and_read_over_256 ... ok
test password_change_after_purge_never_recreates_account ... ok
test legacy_migration_clears_source_after_success ... ok
test vcard_pep_conversion_and_avatar ... ok
test creation_and_purge_are_serialized ... ok
test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.40s
Running tests/storage_compat.rs (target/debug/deps/storage_compat-954181747a0c2595)
running 6 tests
test empty_namespace_preserved ... ok
test stanza_roundtrip ... ok
test mixed_binary_roundtrip ... ok
test path_and_atomic_update ... ok
test rejects_cycles_code_and_bad_files ... ok
test concurrent_updates_do_not_lose_entries ... ok
test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
Running tests/tls_binding.rs (target/debug/deps/tls_binding-a4012b293cfa1d84)
running 4 tests
test unknown_and_eddsa_algorithms_fail_closed ... ok
test malformed_der_and_pss_parameters_fail_closed ... ok
test ecdsa_uses_certificate_signature_hash ... ok
test rsa_signature_digest_and_weak_hash_upgrade ... ok
test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.37s
Running tests/tls_plus_network.rs (target/debug/deps/tls_plus_network-4fd51f9ace6103de)
running 2 tests
test disabling_plus_hides_bindings_and_accepts_scram_y_with_mechanisms_only_ssdp ... ok
test starttls_scram_plus_binds_real_tls_and_authenticates_ssdp_sasl1_and_sasl2 ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.55s
Doc-tests rust_xmpp
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Checking rust-xmpp v0.6.1 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 3.80s
Compiling rust-xmpp v0.6.1 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `release` profile [optimized] target(s) in 23.08s
PASS: integrated TCP roster/subscriptions, client IQ routing, CSI buffering/keepalive flush, MAM, blocking, OMEMO PEP, MUC, offline replay and SM resumption
PASS: graceful SIGTERM shutdown
PASS: independent SCRAM-SHA-1 over TLS, SASL1/SASL2, SSDP verification, server signatures and wrong-password rejection
PASS: independent SCRAM-SHA-256 over TLS, SASL1/SASL2, SSDP verification, server signatures and wrong-password rejection
PASS: Android TLS1.2 selector, TLS1.2/1.3 SCRAM SHA1/256 PLUS, SASL1/2, SSDP on/off and invalid binding rejection
PASS: WSS SCRAM-SHA-256 SASL1/SASL2 with GS2 y, absent CB/PLUS, SSDP without CB separator, server signatures, bind and ping
PASS: SASL2 Bind2 TLS flow, inline SM/CSI/Carbons, private random resource, malformed requests, authentication failure and fallback
PASS: SASL2 inline SM active/EOF resume, authenticated owner/id/h checks, replay ordering, full JID, Bind2 fallback and malformed requests
PASS: TLS account/domain discovery with PEP and push enabled/disabled; real push enable, publish options, per-node and service-wide disable
PASS: TLS invitation command discovery, preapproval, single-use mutual roster, replay denial, unknown preauth forwarding/offline pending, account isolation
PASS: TLS conflict_resolve=default, live and hibernating SM resources
PASS: TLS conflict_resolve=kick_old, live and hibernating SM resources
PASS: TLS conflict_resolve=kick_new, live and hibernating SM resources
PASS: TLS conflict_resolve=increment, live and hibernating SM resources
PASS: TLS conflict_resolve=random, live and hibernating SM resources
PASS: integrated WSS + HTTPS BOSH SASL/bind, CSI, inherited BOSH namespaces, roster, bidirectional chat, upload IQ/PUT/GET/reuse, graceful SM close and same-resource relogin under kick_new
{
"total_load_wall_seconds": 6.467,
"requested_resources": 500,
"authenticated_bound_resources": 500,
"connection_setup_concurrency": 50,
"setup_wall_seconds": 0.617,
"setup_latency": {
"samples": 500,
"median_ms": 55.521,
"p95_ms": 80.465,
"max_ms": 104.211
},
"ping_rounds": 10,
"ping_round_trip": {
"samples": 5000,
"median_ms": 12.434,
"p95_ms": 21.835,
"max_ms": 28.842
},
"accounts": 100,
"message_rounds": 10,
"messages_sent": 5000,
"messages_received": 5000,
"message_batch_seconds": 3.583,
"metrics_before": {
"rss_kib": 6984,
"cpu_seconds": 0.0,
"fd_count": 11
},
"metrics_connected": {
"rss_kib": 24764,
"cpu_seconds": 1.15,
"fd_count": 511
},
"metrics_after_workload": {
"rss_kib": 25300,
"cpu_seconds": 7.55,
"fd_count": 511
},
"metrics_two_seconds_after_disconnect": {
"rss_kib": 25364,
"cpu_seconds": 7.57,
"fd_count": 11
},
"sampled_peak_rss_kib": 25364,
"fd_delta_after_disconnect": 0,
"failures": [],
"scope": "One loopback host, 100 accounts with distinct resources, TLS+PLAIN, ping and directed messages; not a production benchmark or proof of no memory leaks.",
"mam": {
"archive_files": 100,
"records": 10000,
"expected_records": 10000
}
}
Compiling rust-xmpp v0.6.1 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `test` profile [unoptimized + debuginfo] target(s) in 2.46s
Running tests/csi_native.rs (target/debug/deps/csi_native-eefc40693c54ec61)
running 1 test
test native_prosody_csi_importance_matches ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
Running tests/muc_native.rs (target/debug/deps/muc_native-dd2a34b938a462e6)
running 1 test
test actual_prosody_muc_mam_reads_rust_and_writes_native_archive ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
Running tests/preauth_native.rs (target/debug/deps/preauth_native-6cf664c184a325ba)
running 1 test
test native_prosody_invitation_tokens_roundtrip ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s
Running tests/pubsub_native.rs (target/debug/deps/pubsub_native-fe86a689c0fe3e49)
running 1 test
test native_prosody_pep_reads_rust_and_rust_reads_native ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s
Running tests/push.rs (target/debug/deps/push-4696fd1434eda878)
running 1 test
test native_push_body_lookup_excludes_extensions ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 6 filtered out; finished in 0.01s
Running tests/reference_prosody.rs (target/debug/deps/reference_prosody-819c2ec87bfa7698)
running 1 test
PROSODY_NATIVE_ROUNDTRIP_OK SHA-1
PROSODY_NATIVE_FINAL_OK SHA-1
PROSODY_NATIVE_ROUNDTRIP_OK SHA-256
PROSODY_NATIVE_FINAL_OK SHA-256
test real_prosody_storage_and_auth_roundtrip ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.04s
Compiling rust-xmpp v0.6.1 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `test` profile [unoptimized + debuginfo] target(s) in 1.98s
Running tests/federation_tls.rs (target/debug/deps/federation_tls-9cdad036fb137095)
running 1 test
test native_prosody_tls_external_bidirectional ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 2 filtered out; finished in 1.07s
+54
View File
@@ -0,0 +1,54 @@
{
"total_load_wall_seconds": 7.064,
"requested_resources": 500,
"authenticated_bound_resources": 500,
"connection_setup_concurrency": 50,
"setup_wall_seconds": 0.696,
"setup_latency": {
"samples": 500,
"median_ms": 66.672,
"p95_ms": 83.122,
"max_ms": 91.585
},
"ping_rounds": 10,
"ping_round_trip": {
"samples": 5000,
"median_ms": 14.572,
"p95_ms": 23.767,
"max_ms": 26.397
},
"accounts": 100,
"message_rounds": 10,
"messages_sent": 5000,
"messages_received": 5000,
"message_batch_seconds": 4.058,
"metrics_before": {
"rss_kib": 7508,
"cpu_seconds": 0.0,
"fd_count": 11
},
"metrics_connected": {
"rss_kib": 25632,
"cpu_seconds": 1.22,
"fd_count": 511
},
"metrics_after_workload": {
"rss_kib": 26264,
"cpu_seconds": 7.95,
"fd_count": 511
},
"metrics_two_seconds_after_disconnect": {
"rss_kib": 26328,
"cpu_seconds": 7.98,
"fd_count": 11
},
"sampled_peak_rss_kib": 26328,
"fd_delta_after_disconnect": 0,
"failures": [],
"scope": "One loopback host, 100 accounts with distinct resources, TLS+PLAIN, ping and directed messages; not a production benchmark or proof of no memory leaks.",
"mam": {
"archive_files": 100,
"records": 10000,
"expected_records": 10000
}
}
+535
View File
@@ -0,0 +1,535 @@
Compiling rust-xmpp v0.7.0 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `test` profile [unoptimized + debuginfo] target(s) in 19.66s
Running unittests src/lib.rs (target/debug/deps/rust_xmpp-94408acd7a0ac611)
running 24 tests
test federation::tests::federation_domains_are_dns_names_and_case_insensitive ... ok
test federation::tests::starttls_must_be_an_immediate_stream_feature ... ok
test federation::tests::external_must_be_in_the_advertised_mechanisms ... ok
test http_transport::tests::independent_framing ... ok
test http_transport::tests::websocket_preserves_inherited_namespaces_and_spaced_declarations ... ok
test federation::tests::stream_restarts_compare_canonical_domains ... ok
test http_transport::tests::bosh_processing_capacity_is_bounded ... ok
test sasl::tests::reject_malformed_and_downgrade ... ok
test sessions::push_timeout_tests::first_important_push_shortens_extended_hibernation_once ... ok
test sessions::tests::acknowledgement_wraps ... ok
test sessions::tests::graceful_disconnect_is_not_resumable ... ok
test sessions::tests::resume_replays_only_unacked_and_checks_owner ... ok
test wire::tests::arbitrary_prefix_and_inherited_namespaces ... ok
test wire::tests::cdata_and_comments_frame_without_counting_brackets ... ok
test wire::tests::declarations_rejected ... ok
test wire::tests::fragmented_and_pipelined ... ok
test wire::tests::invalid_namespace_and_declarations_rejected ... ok
test sasl::tests::rfc5802_sha1_vector ... ok
test sasl::tests::sha256_independent_python_vector ... ok
test http_service::tests::abandoned_slots_release_quota_without_pruning_existing_or_active_files ... ok
test sasl::tests::plus_channel_binding_and_ssdp_are_authenticated ... ok
test server::authorization_tests::upload_requires_registered_local_account_or_explicit_remote_access ... ok
test sasl::tests::wrong_proof_nonce_binding_and_duplicates ... ok
test admin::tests::real_admin_xml_protocol_over_duplex ... ok
test result: ok. 24 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.62s
Running unittests src/main.rs (target/debug/deps/rust_xmpp-5eaae65862e46c47)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/admin_socket.rs (target/debug/deps/admin_socket-1c75663c5ae506f4)
running 1 test
test prosody_wire_commands_password_prompt_and_safe_errors ... ignored, requires AF_UNIX socket permission; run on target host with --ignored
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/archive_mam.rs (target/debug/deps/archive_mam-035bbe3cb222446b)
running 14 tests
test archive_larger_than_128mib_streams ... ignored, large-file scalability regression; run explicitly
test corrupt_archive_reports_server_error_and_namespace_stripping_is_precise ... ok
test append_is_incremental_and_recovers_torn_tail ... ok
test mam_preferences_persist ... ok
test legacy_records_binary_cache_and_roundtrip ... ok
test archive_roundtrip_preserves_default_namespace_resets ... ok
test equal_cursors_and_normalized_query_jids ... ok
test mam_paging_filters_and_forbidden ... ok
test real_archive_sid_and_sender_privacy ... ok
test muc_archive_filters_stanza_kind_instead_of_sender_jid ... ok
test zero_page_dates_and_invalid_forms ... ok
test smart_enable_and_message_selection ... ok
test extended_ids_ranges_flip_and_metadata ... ok
test namespaces_expiry_and_concurrent_append ... ok
test result: ok. 13 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.05s
Running tests/auth.rs (target/debug/deps/auth-07519da82829159b)
running 3 tests
test traversal_and_malicious_account_records_rejected ... ok
test create_and_read_hashed_accounts ... ok
test authentication_prepares_names_without_relaxing_account_management ... ok
test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.14s
Running tests/cli.rs (target/debug/deps/cli-940750580900fbea)
running 2 tests
test server_cannot_be_mistaken_for_running_service ... ok
test conversion_preserves_source_and_refuses_overwrite ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
Running tests/config.rs (target/debug/deps/config-82b0e76391ea092f)
running 12 tests
test component_can_explicitly_enable_global_modules ... ok
test declarations_and_overrides ... ok
test storage_paths_encode_like_prosody ... ok
test include_cycles_rejected ... ok
test include_has_own_global_scope_and_parent_scope_is_restored ... ok
test supplied_configuration_scopes_arithmetic_and_modules ... ok
test tables_cannot_recurse_forever ... ok
test runtime_capabilities_are_unavailable ... ok
test malformed_values_rejected ... ok
test supplied_config_matches_original_prosody_loader ... ok
test all_formats_round_trip_actual_config ... ok
test loops_are_bounded ... ok
test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
Running tests/csi.rs (target/debug/deps/csi-dd5889487f938bdb)
running 2 tests
test bounded_queue_flush_delay_activity_and_grace ... ok
test native_importance_rules ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/csi_native.rs (target/debug/deps/csi_native-3f1ca0e0fdaf0c90)
running 1 test
test native_prosody_csi_importance_matches ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/data_lock.rs (target/debug/deps/data_lock-66fa553d6f7053c7)
running 2 tests
test child_process_probe ... ok
test excludes_another_process_and_releases_on_drop ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running tests/debug_legacy.rs (target/debug/deps/debug_legacy-d8e65d6e85abde37)
running 1 test
test debug_empty_legacy_bind ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s
Running tests/federation_tls.rs (target/debug/deps/federation_tls-5961140cd6f418c0)
running 3 tests
test native_prosody_tls_external_bidirectional ... ignored, requires native Prosody cafd74b9c5ea and Lua TLS dependencies
test mutual_tls_external_delivery_and_certificate_identity_rejection ... ok
test reuses_connections_serializes_writes_and_retires_idle_or_closed_peers ... ok
test result: ok. 2 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 1.48s
Running tests/http_transport.rs (target/debug/deps/http_transport-3aa1f7eba52556d6)
running 10 tests
test configured_origin_is_enforced ... ok
test bosh_preserves_namespace_inherited_from_body ... ok
test transport_paths_and_cors_preflight_match_prosody ... ok
test bosh_session_retries_restart_termination ... ok
test bosh_termination_waits_for_graceful_cleanup_before_reconnect ... ok
test bosh_reorders_two_requests_without_replaying_stanzas ... ok
test websocket_frames_are_independent_xml ... ok
test websocket_disconnect_delivers_eof_without_graceful_close ... ok
test websocket_close_allows_graceful_engine_cleanup ... ok
test bosh_retry_survives_aborted_http_request_without_replaying_stanzas ... ok
test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s
Running tests/http_upload.rs (target/debug/deps/http_upload-a48ab84ef35b8806)
running 5 tests
test https_endpoint_uses_real_tls ... ok
test percent_escape_case_and_equivalent_url_spelling ... ok
test persisted_prosody_archive_and_hs256_slot_survive_without_sidecar ... ok
test expired_upload_releases_quota ... ok
test upload_authorization_streaming_ranges_and_restart ... ok
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
Running tests/logging.rs (target/debug/deps/logging-47d7193857972196)
running 8 tests
test rejects_malformed_configuration ... ok
test filters_appends_escapes_and_redacts ... ok
test reopen_rotated_files_updates_clones ... ok
test explicit_sink_levels_select_exactly_and_deduplicate ... ok
test failed_reopen_keeps_all_original_handles ... ok
test native_console_shorthands_are_accepted ... ok
test json_records_and_bounded_ranges ... ok
test cloned_loggers_serialize_records ... ok
test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
Running tests/message_routing.rs (target/debug/deps/message_routing-f9d46600407b3493)
running 2 tests
test unknown_resource_falls_back_to_available_bare_jid ... ok
test headline_uses_all_nonnegative_available_resources_and_errors_never_fallback ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/muc_access.rs (target/debug/deps/muc_access-1eb80572b618c9db)
running 3 tests
test moderators_cannot_kick_or_demote_other_moderators ... ok
test nested_affiliations_do_not_fall_back_to_obsolete_flat_entries ... ok
test binary_occupant_id_salt_survives_saves_and_restarts ... ok
test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running tests/muc_domain_bans.rs (target/debug/deps/muc_domain_bans-8e86b3b767458721)
running 2 tests
test applying_domain_ban_removes_remote_occupants_and_blocks_rejoin ... ok
test native_domain_bans_block_remote_users_but_allow_explicit_members ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running tests/muc_flow.rs (target/debug/deps/muc_flow-d860f607a708653f)
running 18 tests
test iq_response_requires_expected_sender ... ok
test configured_lock_timeout_expires_without_owner_submission ... ok
test join_lock_chat_leave ... ok
test multiple_resources_share_nick_and_private_delivery ... ok
test authorization_and_conflict ... ok
test occupant_id_is_stable_and_spoofed_ids_removed ... ok
test nick_invite_destroy_and_local_creation ... ok
test restored_temporary_room_is_deleted_after_last_disconnect ... ok
test persistence_roundtrip ... ok
test preserves_unknown_binary_mixed_room_fields ... ok
test switching_to_members_only_removes_unaffiliated_users ... ok
test visitor_voice_request_cannot_spoof_identity_or_grant_itself_voice ... ok
test room_vcard_owner_only_and_avatar_presence ... ok
test persistent_destroy_creates_prosody_tombstone ... ok
test reserved_nickname_blocks_other_users ... ok
test archive_history_and_permissions ... ok
test maintenance_expires_idle_archives_and_tombstones ... ok
test native_muc_archive_type_and_anonymity_are_preserved ... ok
test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
Running tests/muc_native.rs (target/debug/deps/muc_native-11459f1318ad17b6)
running 1 test
test actual_prosody_muc_mam_reads_rust_and_writes_native_archive ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/pep_discovery.rs (target/debug/deps/pep_discovery-cd58b8684a06459f)
running 4 tests
test standalone_component_does_not_claim_pep_automatic_subscriptions ... ok
test account_disco_advertises_pep_without_requiring_a_node ... ok
test account_discovery_does_not_intercept_server_or_resource_caps ... ok
test node_discovery_keeps_node_identity_errors_and_access_checks ... ok
test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s
Running tests/preauth.rs (target/debug/deps/preauth-8c162eaae149f65c)
running 10 tests
test duplicate_or_wrong_namespace_tokens_do_not_qualify ... ok
test unknown_tokens_do_not_create_invite_stores_and_disabled_accounts_cannot_issue ... ok
test standard_adhoc_command_returns_contact_uri ... ok
test prosody_numeric_expiry_is_consumed_and_other_entries_preserved ... ok
test concurrent_redemption_has_exactly_one_winner ... ok
test identity_scope_does_not_burn_on_wrong_sender_or_leak_to_prosody ... ok
test unknown_client_token_is_preserved_on_remote_and_pending_delivery ... ok
test invitations_expire_are_single_use_and_owner_scoped ... ok
test valid_token_autoapproves_and_sends_reciprocal_request ... ok
test local_invitation_updates_both_rosters_without_granting_reverse_subscription ... ok
test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
Running tests/preauth_native.rs (target/debug/deps/preauth_native-2d454afd474bb9c6)
running 1 test
test native_prosody_invitation_tokens_roundtrip ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/pubsub_native.rs (target/debug/deps/pubsub_native-5344fbb8f3e05c43)
running 1 test
test native_prosody_pep_reads_rust_and_rust_reads_native ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/pubsub_persistence.rs (target/debug/deps/pubsub_persistence-b3edae88ed37aae5)
running 18 tests
test modern_bookmarks_notify_legacy_capability ... ok
test native_string_max_items_satisfies_numeric_publish_precondition ... ok
test configure_requires_owner ... ok
test configurable_limits_component_creation_and_publisher ... ok
test capability_discovery_replays_and_filters_notifications ... ok
test nonpersistent_items_stay_in_memory_and_can_be_made_persistent ... ok
test pep_persists_namespaces_and_enforces_owner ... ok
test open_model_and_notifications ... ok
test full_jid_block_applies_to_reads_subscription_replays_and_events ... ok
test reads_prosody_legacy_fixture ... ok
test publish_options_conflict_is_recoverable_and_preserves_item ... ok
test roster_presence_access_and_foreign_subscription_denied ... ok
test remote_unavailable_is_scoped_to_addressed_owner_and_cancels_pending ... ok
test remote_caps_replay_and_open_node_privacy_revoke ... ok
test subscription_options_disable_events_and_require_subscriber ... ok
test native_notification_fields_and_retract_policy_are_independent ... ok
test payload_policy_applies_to_subscription_and_caps_replays ... ok
test component_default_retention_matches_prosody_twenty_items ... ok
test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.25s
Running tests/push.rs (target/debug/deps/push-f4ff9c794e3ba53f)
running 7 tests
test native_push_body_lookup_excludes_extensions ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test foreign_account_cannot_register ... ok
test queue_coalesces_and_importance_matches_native ... ok
test push_summary_never_copies_foreign_namespace_body ... ok
test stable_client_registration_and_targeted_notification ... ok
test reenable_cancels_old_errors_and_failure_counts_are_per_account ... ok
test registrations_notifications_and_authenticated_errors ... ok
test result: ok. 6 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.09s
Running tests/reference_prosody.rs (target/debug/deps/reference_prosody-496913b1642f9356)
running 1 test
test real_prosody_storage_and_auth_roundtrip ... ignored, requires native supplied Prosody source; run scripts/prosody_compat/verify.sh
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/resource_sessions.rs (target/debug/deps/resource_sessions-17de9192f8a764f2)
running 7 tests
test increment_skips_occupied_suffixes_and_preserves_sessions ... ok
test invalid_resume_owner_or_ack_does_not_evict_active_session ... ok
test kick_new_leaves_existing_session_unchanged ... ok
test replacement_revokes_hibernating_resume_and_survives_old_cleanup ... ok
test random_conflicts_get_distinct_resources_for_same_owner ... ok
test concurrent_default_binds_replace_atomically ... ok
test active_resume_preserves_state_and_replaces_transport_notifier ... ok
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running tests/sasl_accounts.rs (target/debug/deps/sasl_accounts-32232f5f8fb067d5)
running 1 test
test disabled_legacy_and_unicode_accounts ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.61s
Running tests/storage_accounts.rs (target/debug/deps/storage_accounts-5f62739bd7c74ebb)
running 20 tests
test broken_roster_is_not_overwritten ... ok
test account_purge_refuses_symlink_store_without_touching_other_files ... ok
test inbound_subscription_requires_pending_to_grant_to ... ok
test malformed_legacy_vcard_and_private_bookmarks_rejected ... ok
test malformed_roster_iq_never_mutates ... ok
test blocklist_enforcement_api ... ok
test domain_roster_and_block_jid_normalization ... ok
test private_and_vcard_authorization ... ok
test privacy_migration_only_default_deny_jids ... ok
test purge_account_exact_files_preserves_others_and_extras ... ok
test reads_timestamp_blocklist_and_keeps_metadata ... ok
test roster_empty_name_and_foreign_group_ignored ... ok
test roster_preserves_subscription_and_metadata ... ok
test subscription_handshake_and_cancel ... ok
test legacy_bookmarks_respect_host_limit_and_read_over_256 ... ok
test bookmarks_private_pep_bidirectional_and_private ... ok
test legacy_migration_clears_source_after_success ... ok
test vcard_pep_conversion_and_avatar ... ok
test password_change_after_purge_never_recreates_account ... ok
test creation_and_purge_are_serialized ... ok
test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.35s
Running tests/storage_compat.rs (target/debug/deps/storage_compat-935fba296da8d62f)
running 6 tests
test empty_namespace_preserved ... ok
test stanza_roundtrip ... ok
test mixed_binary_roundtrip ... ok
test path_and_atomic_update ... ok
test rejects_cycles_code_and_bad_files ... ok
test concurrent_updates_do_not_lose_entries ... ok
test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
Running tests/tls_binding.rs (target/debug/deps/tls_binding-80687cc90f5936fc)
running 4 tests
test unknown_and_eddsa_algorithms_fail_closed ... ok
test malformed_der_and_pss_parameters_fail_closed ... ok
test ecdsa_uses_certificate_signature_hash ... ok
test rsa_signature_digest_and_weak_hash_upgrade ... ok
test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.16s
Running tests/tls_plus_network.rs (target/debug/deps/tls_plus_network-ca5afdc80bbf006f)
running 2 tests
test disabling_plus_hides_bindings_and_accepts_scram_y_with_mechanisms_only_ssdp ... ok
test starttls_scram_plus_binds_real_tls_and_authenticates_ssdp_sasl1_and_sasl2 ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.18s
Doc-tests rust_xmpp
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Checking rust-xmpp v0.7.0 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 5.18s
Compiling rust-xmpp v0.7.0 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `release` profile [optimized] target(s) in 25.05s
PASS: integrated TCP roster/subscriptions, client IQ routing, CSI buffering/keepalive flush, MAM, blocking, OMEMO PEP, MUC, offline replay and SM resumption
PASS: graceful SIGTERM shutdown
PASS: independent SCRAM-SHA-1 over TLS, SASL1/SASL2, SSDP verification, server signatures and wrong-password rejection
PASS: independent SCRAM-SHA-256 over TLS, SASL1/SASL2, SSDP verification, server signatures and wrong-password rejection
PASS: Android TLS1.2 selector, TLS1.2/1.3 SCRAM SHA1/256 PLUS, SASL1/2, SSDP on/off and invalid binding rejection
PASS: JSON file logging, TLS/auth/bind correlation, rejection reasons, secret redaction and SIGHUP rotation
PASS: 20 TLS1.2/1.3 SASL1/2 cases: prepared PLAIN identities and canonical binds, invalid authz rejection, SCRAM abort/retry and active exchange restart
PASS: WSS SCRAM-SHA-256 SASL1/SASL2 with GS2 y, absent CB/PLUS, SSDP without CB separator, server signatures, bind and ping
PASS: SASL2 Bind2 TLS flow, inline SM/CSI/Carbons, private random resource, malformed requests, authentication failure and fallback
PASS: SASL2 inline SM active/EOF resume, authenticated owner/id/h checks, replay ordering, full JID, Bind2 fallback and malformed requests
PASS: TLS account/domain discovery with PEP and push enabled/disabled; real push enable, publish options, per-node and service-wide disable
PASS: TLS invitation command discovery, preapproval, single-use mutual roster, replay denial, unknown preauth forwarding/offline pending, account isolation
PASS: TLS conflict_resolve=default, live and hibernating SM resources
PASS: TLS conflict_resolve=kick_old, live and hibernating SM resources
PASS: TLS conflict_resolve=kick_new, live and hibernating SM resources
PASS: TLS conflict_resolve=increment, live and hibernating SM resources
PASS: TLS conflict_resolve=random, live and hibernating SM resources
PASS: integrated WSS + HTTPS BOSH SASL/bind, CSI, inherited BOSH namespaces, roster, bidirectional chat, upload IQ/PUT/GET/reuse, graceful SM close and same-resource relogin under kick_new
{
"total_load_wall_seconds": 7.064,
"requested_resources": 500,
"authenticated_bound_resources": 500,
"connection_setup_concurrency": 50,
"setup_wall_seconds": 0.696,
"setup_latency": {
"samples": 500,
"median_ms": 66.672,
"p95_ms": 83.122,
"max_ms": 91.585
},
"ping_rounds": 10,
"ping_round_trip": {
"samples": 5000,
"median_ms": 14.572,
"p95_ms": 23.767,
"max_ms": 26.397
},
"accounts": 100,
"message_rounds": 10,
"messages_sent": 5000,
"messages_received": 5000,
"message_batch_seconds": 4.058,
"metrics_before": {
"rss_kib": 7508,
"cpu_seconds": 0.0,
"fd_count": 11
},
"metrics_connected": {
"rss_kib": 25632,
"cpu_seconds": 1.22,
"fd_count": 511
},
"metrics_after_workload": {
"rss_kib": 26264,
"cpu_seconds": 7.95,
"fd_count": 511
},
"metrics_two_seconds_after_disconnect": {
"rss_kib": 26328,
"cpu_seconds": 7.98,
"fd_count": 11
},
"sampled_peak_rss_kib": 26328,
"fd_delta_after_disconnect": 0,
"failures": [],
"scope": "One loopback host, 100 accounts with distinct resources, TLS+PLAIN, ping and directed messages; not a production benchmark or proof of no memory leaks.",
"mam": {
"archive_files": 100,
"records": 10000,
"expected_records": 10000
}
}
Compiling rust-xmpp v0.7.0 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `test` profile [unoptimized + debuginfo] target(s) in 3.57s
Running tests/csi_native.rs (target/debug/deps/csi_native-3f1ca0e0fdaf0c90)
running 1 test
test native_prosody_csi_importance_matches ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
Running tests/muc_native.rs (target/debug/deps/muc_native-11459f1318ad17b6)
running 1 test
test actual_prosody_muc_mam_reads_rust_and_writes_native_archive ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
Running tests/preauth_native.rs (target/debug/deps/preauth_native-2d454afd474bb9c6)
running 1 test
test native_prosody_invitation_tokens_roundtrip ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s
Running tests/pubsub_native.rs (target/debug/deps/pubsub_native-5344fbb8f3e05c43)
running 1 test
test native_prosody_pep_reads_rust_and_rust_reads_native ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.11s
Running tests/push.rs (target/debug/deps/push-f4ff9c794e3ba53f)
running 1 test
test native_push_body_lookup_excludes_extensions ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 6 filtered out; finished in 0.01s
Running tests/reference_prosody.rs (target/debug/deps/reference_prosody-496913b1642f9356)
running 1 test
PROSODY_NATIVE_ROUNDTRIP_OK SHA-1
PROSODY_NATIVE_FINAL_OK SHA-1
PROSODY_NATIVE_ROUNDTRIP_OK SHA-256
PROSODY_NATIVE_FINAL_OK SHA-256
test real_prosody_storage_and_auth_roundtrip ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.13s
Compiling rust-xmpp v0.7.0 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `test` profile [unoptimized + debuginfo] target(s) in 2.29s
Running tests/federation_tls.rs (target/debug/deps/federation_tls-5961140cd6f418c0)
running 1 test
test native_prosody_tls_external_bidirectional ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 2 filtered out; finished in 0.77s
@@ -0,0 +1 @@
PASS: reproduced 0.7.0 cached Bind2 rejection before SASL
@@ -0,0 +1,6 @@
PASS: bind2-disabled, SSDP=False, SCRAM-SHA-1/PLAIN success and wrong-password rejection
PASS: bind2-disabled, SSDP=True, SCRAM-SHA-1/PLAIN success and wrong-password rejection
PASS: bind2-enabled, SSDP=False, SCRAM-SHA-1/PLAIN success and wrong-password rejection
PASS: bind2-enabled, SSDP=True, SCRAM-SHA-1/PLAIN success and wrong-password rejection
PASS: sm-disabled, SSDP=False, SCRAM-SHA-1/PLAIN success and wrong-password rejection
PASS: sm-disabled, SSDP=True, SCRAM-SHA-1/PLAIN success and wrong-password rejection
+5
View File
@@ -0,0 +1,5 @@
PASS: enabled-False-registration-False
PASS: enabled-False-registration-True
PASS: enabled-True-registration-False
PASS: enabled-True-registration-True
PASS: Gajim domain/account discovery, both label catalogs, authenticated password changes, IBR registration gates and fresh logins
+54
View File
@@ -0,0 +1,54 @@
{
"total_load_wall_seconds": 7.969,
"requested_resources": 500,
"authenticated_bound_resources": 500,
"connection_setup_concurrency": 50,
"setup_wall_seconds": 0.842,
"setup_latency": {
"samples": 500,
"median_ms": 72.641,
"p95_ms": 134.723,
"max_ms": 156.502
},
"ping_rounds": 10,
"ping_round_trip": {
"samples": 5000,
"median_ms": 13.945,
"p95_ms": 22.704,
"max_ms": 26.79
},
"accounts": 100,
"message_rounds": 10,
"messages_sent": 5000,
"messages_received": 5000,
"message_batch_seconds": 4.825,
"metrics_before": {
"rss_kib": 7284,
"cpu_seconds": 0.0,
"fd_count": 11
},
"metrics_connected": {
"rss_kib": 25952,
"cpu_seconds": 1.09,
"fd_count": 511
},
"metrics_after_workload": {
"rss_kib": 26672,
"cpu_seconds": 8.34,
"fd_count": 511
},
"metrics_two_seconds_after_disconnect": {
"rss_kib": 26736,
"cpu_seconds": 8.38,
"fd_count": 11
},
"sampled_peak_rss_kib": 26736,
"fd_delta_after_disconnect": 0,
"failures": [],
"scope": "One loopback host, 100 accounts with distinct resources, TLS+PLAIN, ping and directed messages; not a production benchmark or proof of no memory leaks.",
"mam": {
"archive_files": 100,
"records": 10000,
"expected_records": 10000
}
}
+561
View File
@@ -0,0 +1,561 @@
Compiling rust-xmpp v0.7.1 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `test` profile [unoptimized + debuginfo] target(s) in 21.93s
Running unittests src/lib.rs (target/debug/deps/rust_xmpp-cb3b5faf47b90be4)
running 25 tests
test federation::tests::federation_domains_are_dns_names_and_case_insensitive ... ok
test federation::tests::external_must_be_in_the_advertised_mechanisms ... ok
test federation::tests::starttls_must_be_an_immediate_stream_feature ... ok
test http_transport::tests::bosh_processing_capacity_is_bounded ... ok
test federation::tests::stream_restarts_compare_canonical_domains ... ok
test logging::tests::console_aliases_share_one_sink_with_combined_levels ... ok
test http_transport::tests::independent_framing ... ok
test sasl::tests::reject_malformed_and_downgrade ... ok
test http_transport::tests::websocket_preserves_inherited_namespaces_and_spaced_declarations ... ok
test sessions::push_timeout_tests::first_important_push_shortens_extended_hibernation_once ... ok
test sessions::tests::acknowledgement_wraps ... ok
test sessions::tests::graceful_disconnect_is_not_resumable ... ok
test sessions::tests::resume_replays_only_unacked_and_checks_owner ... ok
test wire::tests::arbitrary_prefix_and_inherited_namespaces ... ok
test wire::tests::cdata_and_comments_frame_without_counting_brackets ... ok
test wire::tests::declarations_rejected ... ok
test wire::tests::fragmented_and_pipelined ... ok
test wire::tests::invalid_namespace_and_declarations_rejected ... ok
test sasl::tests::rfc5802_sha1_vector ... ok
test sasl::tests::sha256_independent_python_vector ... ok
test http_service::tests::abandoned_slots_release_quota_without_pruning_existing_or_active_files ... ok
test sasl::tests::plus_channel_binding_and_ssdp_are_authenticated ... ok
test server::authorization_tests::upload_requires_registered_local_account_or_explicit_remote_access ... ok
test sasl::tests::wrong_proof_nonce_binding_and_duplicates ... ok
test admin::tests::real_admin_xml_protocol_over_duplex ... ok
test result: ok. 25 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.74s
Running unittests src/main.rs (target/debug/deps/rust_xmpp-04dd784ebbdc6a22)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/admin_socket.rs (target/debug/deps/admin_socket-270a654d656f20bc)
running 1 test
test prosody_wire_commands_password_prompt_and_safe_errors ... ignored, requires AF_UNIX socket permission; run on target host with --ignored
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/archive_mam.rs (target/debug/deps/archive_mam-74c0c3a2d787e108)
running 14 tests
test archive_larger_than_128mib_streams ... ignored, large-file scalability regression; run explicitly
test mam_preferences_persist ... ok
test legacy_records_binary_cache_and_roundtrip ... ok
test corrupt_archive_reports_server_error_and_namespace_stripping_is_precise ... ok
test append_is_incremental_and_recovers_torn_tail ... ok
test smart_enable_and_message_selection ... ok
test archive_roundtrip_preserves_default_namespace_resets ... ok
test equal_cursors_and_normalized_query_jids ... ok
test muc_archive_filters_stanza_kind_instead_of_sender_jid ... ok
test real_archive_sid_and_sender_privacy ... ok
test zero_page_dates_and_invalid_forms ... ok
test mam_paging_filters_and_forbidden ... ok
test extended_ids_ranges_flip_and_metadata ... ok
test namespaces_expiry_and_concurrent_append ... ok
test result: ok. 13 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.05s
Running tests/auth.rs (target/debug/deps/auth-15bdf52311e4d125)
running 3 tests
test traversal_and_malicious_account_records_rejected ... ok
test create_and_read_hashed_accounts ... ok
test authentication_prepares_names_without_relaxing_account_management ... ok
test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.18s
Running tests/cli.rs (target/debug/deps/cli-bd3db818e79c9ba7)
running 2 tests
test server_cannot_be_mistaken_for_running_service ... ok
test conversion_preserves_source_and_refuses_overwrite ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running tests/config.rs (target/debug/deps/config-3d3b807f59da864b)
running 12 tests
test declarations_and_overrides ... ok
test storage_paths_encode_like_prosody ... ok
test component_can_explicitly_enable_global_modules ... ok
test include_cycles_rejected ... ok
test include_has_own_global_scope_and_parent_scope_is_restored ... ok
test tables_cannot_recurse_forever ... ok
test supplied_configuration_scopes_arithmetic_and_modules ... ok
test runtime_capabilities_are_unavailable ... ok
test supplied_config_matches_original_prosody_loader ... ok
test malformed_values_rejected ... ok
test all_formats_round_trip_actual_config ... ok
test loops_are_bounded ... ok
test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
Running tests/csi.rs (target/debug/deps/csi-4621faf9c6106e3c)
running 2 tests
test bounded_queue_flush_delay_activity_and_grace ... ok
test native_importance_rules ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/csi_native.rs (target/debug/deps/csi_native-bd792c168a73fc16)
running 1 test
test native_prosody_csi_importance_matches ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/data_lock.rs (target/debug/deps/data_lock-9ea0a5b322af4953)
running 2 tests
test child_process_probe ... ok
test excludes_another_process_and_releases_on_drop ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running tests/debug_legacy.rs (target/debug/deps/debug_legacy-82313e923ea22366)
running 1 test
test debug_empty_legacy_bind ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.10s
Running tests/federation_tls.rs (target/debug/deps/federation_tls-a0331520383db8c9)
running 3 tests
test native_prosody_tls_external_bidirectional ... ignored, requires native Prosody cafd74b9c5ea and Lua TLS dependencies
test mutual_tls_external_delivery_and_certificate_identity_rejection ... ok
test reuses_connections_serializes_writes_and_retires_idle_or_closed_peers ... ok
test result: ok. 2 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 1.45s
Running tests/gajim_features.rs (target/debug/deps/gajim_features-4a809f0acb5472cf)
running 6 tests
test unsupported_security_policy_configuration_returns_explicit_error ... ok
test policy_catalog_selects_default_policy_and_maps_display_and_explicit_label ... ok
test security_catalog_default_is_a_real_label_and_module_can_be_disabled ... ok
test security_catalogs_serve_both_versions_and_preserve_requested_target ... ok
test actual_example_policy_configuration_exposes_classifications_as_catalog_labels ... ok
test malformed_or_unknown_policy_catalog_schemas_are_rejected ... ok
test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/http_transport.rs (target/debug/deps/http_transport-bb64b91ad4c22400)
running 10 tests
test configured_origin_is_enforced ... ok
test bosh_preserves_namespace_inherited_from_body ... ok
test transport_paths_and_cors_preflight_match_prosody ... ok
test bosh_session_retries_restart_termination ... ok
test bosh_termination_waits_for_graceful_cleanup_before_reconnect ... ok
test bosh_reorders_two_requests_without_replaying_stanzas ... ok
test websocket_frames_are_independent_xml ... ok
test websocket_disconnect_delivers_eof_without_graceful_close ... ok
test websocket_close_allows_graceful_engine_cleanup ... ok
test bosh_retry_survives_aborted_http_request_without_replaying_stanzas ... ok
test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s
Running tests/http_upload.rs (target/debug/deps/http_upload-0d7ad267ae1d5e2c)
running 5 tests
test https_endpoint_uses_real_tls ... ok
test percent_escape_case_and_equivalent_url_spelling ... ok
test persisted_prosody_archive_and_hs256_slot_survive_without_sidecar ... ok
test expired_upload_releases_quota ... ok
test upload_authorization_streaming_ranges_and_restart ... ok
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
Running tests/logging.rs (target/debug/deps/logging-ad40995f295543fc)
running 10 tests
test json_records_and_bounded_ranges ... ok
test explicit_sink_levels_select_exactly_and_deduplicate ... ok
test filters_appends_escapes_and_redacts ... ok
test failed_reopen_keeps_all_original_handles ... ok
test native_console_shorthands_are_accepted ... ok
test overlapping_shorthand_destinations_receive_each_record_once ... ok
test rejects_malformed_configuration ... ok
test reopen_rotated_files_updates_clones ... ok
test shared_sink_unions_levels_and_preserves_distinct_destinations ... ok
test cloned_loggers_serialize_records ... ok
test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
Running tests/message_routing.rs (target/debug/deps/message_routing-0093c2e215e8e639)
running 2 tests
test unknown_resource_falls_back_to_available_bare_jid ... ok
test headline_uses_all_nonnegative_available_resources_and_errors_never_fallback ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/muc_access.rs (target/debug/deps/muc_access-2bb809ce73d21bce)
running 3 tests
test moderators_cannot_kick_or_demote_other_moderators ... ok
test nested_affiliations_do_not_fall_back_to_obsolete_flat_entries ... ok
test binary_occupant_id_salt_survives_saves_and_restarts ... ok
test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running tests/muc_domain_bans.rs (target/debug/deps/muc_domain_bans-e3eb4bb6fd095840)
running 2 tests
test applying_domain_ban_removes_remote_occupants_and_blocks_rejoin ... ok
test native_domain_bans_block_remote_users_but_allow_explicit_members ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/muc_flow.rs (target/debug/deps/muc_flow-d6a4356d70f79304)
running 18 tests
test configured_lock_timeout_expires_without_owner_submission ... ok
test authorization_and_conflict ... ok
test iq_response_requires_expected_sender ... ok
test nick_invite_destroy_and_local_creation ... ok
test multiple_resources_share_nick_and_private_delivery ... ok
test join_lock_chat_leave ... ok
test occupant_id_is_stable_and_spoofed_ids_removed ... ok
test persistence_roundtrip ... ok
test restored_temporary_room_is_deleted_after_last_disconnect ... ok
test switching_to_members_only_removes_unaffiliated_users ... ok
test preserves_unknown_binary_mixed_room_fields ... ok
test visitor_voice_request_cannot_spoof_identity_or_grant_itself_voice ... ok
test room_vcard_owner_only_and_avatar_presence ... ok
test persistent_destroy_creates_prosody_tombstone ... ok
test reserved_nickname_blocks_other_users ... ok
test archive_history_and_permissions ... ok
test maintenance_expires_idle_archives_and_tombstones ... ok
test native_muc_archive_type_and_anonymity_are_preserved ... ok
test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
Running tests/muc_native.rs (target/debug/deps/muc_native-6501fca139d4ea41)
running 1 test
test actual_prosody_muc_mam_reads_rust_and_writes_native_archive ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/pep_discovery.rs (target/debug/deps/pep_discovery-8efde2f8f7390fd3)
running 4 tests
test standalone_component_does_not_claim_pep_automatic_subscriptions ... ok
test account_discovery_does_not_intercept_server_or_resource_caps ... ok
test node_discovery_keeps_node_identity_errors_and_access_checks ... ok
test account_disco_advertises_pep_without_requiring_a_node ... ok
test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.10s
Running tests/preauth.rs (target/debug/deps/preauth-c5a32fecffd69807)
running 10 tests
test duplicate_or_wrong_namespace_tokens_do_not_qualify ... ok
test unknown_client_token_is_preserved_on_remote_and_pending_delivery ... ok
test standard_adhoc_command_returns_contact_uri ... ok
test prosody_numeric_expiry_is_consumed_and_other_entries_preserved ... ok
test concurrent_redemption_has_exactly_one_winner ... ok
test unknown_tokens_do_not_create_invite_stores_and_disabled_accounts_cannot_issue ... ok
test identity_scope_does_not_burn_on_wrong_sender_or_leak_to_prosody ... ok
test invitations_expire_are_single_use_and_owner_scoped ... ok
test valid_token_autoapproves_and_sends_reciprocal_request ... ok
test local_invitation_updates_both_rosters_without_granting_reverse_subscription ... ok
test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
Running tests/preauth_native.rs (target/debug/deps/preauth_native-abc0cfe2a0307998)
running 1 test
test native_prosody_invitation_tokens_roundtrip ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/pubsub_native.rs (target/debug/deps/pubsub_native-e221f58aa7e06c7c)
running 1 test
test native_prosody_pep_reads_rust_and_rust_reads_native ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/pubsub_persistence.rs (target/debug/deps/pubsub_persistence-80f3b89ef1cc628e)
running 18 tests
test configurable_limits_component_creation_and_publisher ... ok
test native_string_max_items_satisfies_numeric_publish_precondition ... ok
test configure_requires_owner ... ok
test modern_bookmarks_notify_legacy_capability ... ok
test nonpersistent_items_stay_in_memory_and_can_be_made_persistent ... ok
test capability_discovery_replays_and_filters_notifications ... ok
test open_model_and_notifications ... ok
test publish_options_conflict_is_recoverable_and_preserves_item ... ok
test pep_persists_namespaces_and_enforces_owner ... ok
test full_jid_block_applies_to_reads_subscription_replays_and_events ... ok
test reads_prosody_legacy_fixture ... ok
test remote_unavailable_is_scoped_to_addressed_owner_and_cancels_pending ... ok
test roster_presence_access_and_foreign_subscription_denied ... ok
test remote_caps_replay_and_open_node_privacy_revoke ... ok
test subscription_options_disable_events_and_require_subscriber ... ok
test payload_policy_applies_to_subscription_and_caps_replays ... ok
test native_notification_fields_and_retract_policy_are_independent ... ok
test component_default_retention_matches_prosody_twenty_items ... ok
test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.28s
Running tests/push.rs (target/debug/deps/push-213e567bc780ee4f)
running 7 tests
test native_push_body_lookup_excludes_extensions ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test foreign_account_cannot_register ... ok
test queue_coalesces_and_importance_matches_native ... ok
test push_summary_never_copies_foreign_namespace_body ... ok
test reenable_cancels_old_errors_and_failure_counts_are_per_account ... ok
test stable_client_registration_and_targeted_notification ... ok
test registrations_notifications_and_authenticated_errors ... ok
test result: ok. 6 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.11s
Running tests/reference_prosody.rs (target/debug/deps/reference_prosody-78881b51cbfb907f)
running 1 test
test real_prosody_storage_and_auth_roundtrip ... ignored, requires native supplied Prosody source; run scripts/prosody_compat/verify.sh
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/resource_sessions.rs (target/debug/deps/resource_sessions-2bb513cbfef8c6db)
running 7 tests
test increment_skips_occupied_suffixes_and_preserves_sessions ... ok
test invalid_resume_owner_or_ack_does_not_evict_active_session ... ok
test replacement_revokes_hibernating_resume_and_survives_old_cleanup ... ok
test random_conflicts_get_distinct_resources_for_same_owner ... ok
test kick_new_leaves_existing_session_unchanged ... ok
test concurrent_default_binds_replace_atomically ... ok
test active_resume_preserves_state_and_replaces_transport_notifier ... ok
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running tests/sasl_accounts.rs (target/debug/deps/sasl_accounts-aeaf27d25390f848)
running 1 test
test disabled_legacy_and_unicode_accounts ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.71s
Running tests/storage_accounts.rs (target/debug/deps/storage_accounts-71820de6fca29c8b)
running 20 tests
test broken_roster_is_not_overwritten ... ok
test account_purge_refuses_symlink_store_without_touching_other_files ... ok
test inbound_subscription_requires_pending_to_grant_to ... ok
test blocklist_enforcement_api ... ok
test malformed_legacy_vcard_and_private_bookmarks_rejected ... ok
test malformed_roster_iq_never_mutates ... ok
test domain_roster_and_block_jid_normalization ... ok
test private_and_vcard_authorization ... ok
test privacy_migration_only_default_deny_jids ... ok
test reads_timestamp_blocklist_and_keeps_metadata ... ok
test purge_account_exact_files_preserves_others_and_extras ... ok
test roster_empty_name_and_foreign_group_ignored ... ok
test roster_preserves_subscription_and_metadata ... ok
test subscription_handshake_and_cancel ... ok
test legacy_bookmarks_respect_host_limit_and_read_over_256 ... ok
test bookmarks_private_pep_bidirectional_and_private ... ok
test legacy_migration_clears_source_after_success ... ok
test vcard_pep_conversion_and_avatar ... ok
test password_change_after_purge_never_recreates_account ... ok
test creation_and_purge_are_serialized ... ok
test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.58s
Running tests/storage_compat.rs (target/debug/deps/storage_compat-d2ac6ecb752b8632)
running 6 tests
test empty_namespace_preserved ... ok
test mixed_binary_roundtrip ... ok
test stanza_roundtrip ... ok
test path_and_atomic_update ... ok
test rejects_cycles_code_and_bad_files ... ok
test concurrent_updates_do_not_lose_entries ... ok
test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
Running tests/tls_binding.rs (target/debug/deps/tls_binding-b49894c170e72ed4)
running 4 tests
test unknown_and_eddsa_algorithms_fail_closed ... ok
test malformed_der_and_pss_parameters_fail_closed ... ok
test ecdsa_uses_certificate_signature_hash ... ok
test rsa_signature_digest_and_weak_hash_upgrade ... ok
test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.42s
Running tests/tls_plus_network.rs (target/debug/deps/tls_plus_network-7561eb91fa3ea268)
running 2 tests
test disabling_plus_hides_bindings_and_accepts_scram_y_with_mechanisms_only_ssdp ... ok
test starttls_scram_plus_binds_real_tls_and_authenticates_ssdp_sasl1_and_sasl2 ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.31s
Doc-tests rust_xmpp
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Checking rust-xmpp v0.7.1 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 4.87s
Compiling rust-xmpp v0.7.1 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `release` profile [optimized] target(s) in 25.73s
PASS: integrated TCP roster/subscriptions, client IQ routing, CSI buffering/keepalive flush, MAM, blocking, OMEMO PEP, MUC, offline replay and SM resumption
PASS: graceful SIGTERM shutdown
PASS: independent SCRAM-SHA-1 over TLS, SASL1/SASL2, SSDP verification, server signatures and wrong-password rejection
PASS: independent SCRAM-SHA-256 over TLS, SASL1/SASL2, SSDP verification, server signatures and wrong-password rejection
PASS: Android TLS1.2 selector, TLS1.2/1.3 SCRAM SHA1/256 PLUS, SASL1/2, SSDP on/off and invalid binding rejection
PASS: JSON file logging, TLS/auth/bind correlation, rejection reasons, secret redaction and SIGHUP rotation
PASS: 20 TLS1.2/1.3 SASL1/2 cases: prepared PLAIN identities and canonical binds, invalid authz rejection, SCRAM abort/retry and active exchange restart
PASS: WSS SCRAM-SHA-256 SASL1/SASL2 with GS2 y, absent CB/PLUS, SSDP without CB separator, server signatures, bind and ping
PASS: SASL2 Bind2 TLS flow, inline SM/CSI/Carbons, private random resource, malformed requests, authentication failure and fallback
PASS: bind2-disabled, SSDP=False, SCRAM-SHA-1/PLAIN success and wrong-password rejection
PASS: bind2-disabled, SSDP=True, SCRAM-SHA-1/PLAIN success and wrong-password rejection
PASS: bind2-enabled, SSDP=False, SCRAM-SHA-1/PLAIN success and wrong-password rejection
PASS: bind2-enabled, SSDP=True, SCRAM-SHA-1/PLAIN success and wrong-password rejection
PASS: sm-disabled, SSDP=False, SCRAM-SHA-1/PLAIN success and wrong-password rejection
PASS: sm-disabled, SSDP=True, SCRAM-SHA-1/PLAIN success and wrong-password rejection
PASS: enabled-False-registration-False
PASS: enabled-False-registration-True
PASS: enabled-True-registration-False
PASS: enabled-True-registration-True
PASS: Gajim domain/account discovery, both label catalogs, authenticated password changes, IBR registration gates and fresh logins
PASS: SASL2 inline SM active/EOF resume, authenticated owner/id/h checks, replay ordering, full JID, Bind2 fallback and malformed requests
PASS: TLS account/domain discovery with PEP and push enabled/disabled; real push enable, publish options, per-node and service-wide disable
PASS: TLS invitation command discovery, preapproval, single-use mutual roster, replay denial, unknown preauth forwarding/offline pending, account isolation
PASS: TLS conflict_resolve=default, live and hibernating SM resources
PASS: TLS conflict_resolve=kick_old, live and hibernating SM resources
PASS: TLS conflict_resolve=kick_new, live and hibernating SM resources
PASS: TLS conflict_resolve=increment, live and hibernating SM resources
PASS: TLS conflict_resolve=random, live and hibernating SM resources
PASS: integrated WSS + HTTPS BOSH SASL/bind, CSI, inherited BOSH namespaces, roster, bidirectional chat, upload IQ/PUT/GET/reuse, graceful SM close and same-resource relogin under kick_new
{
"total_load_wall_seconds": 7.969,
"requested_resources": 500,
"authenticated_bound_resources": 500,
"connection_setup_concurrency": 50,
"setup_wall_seconds": 0.842,
"setup_latency": {
"samples": 500,
"median_ms": 72.641,
"p95_ms": 134.723,
"max_ms": 156.502
},
"ping_rounds": 10,
"ping_round_trip": {
"samples": 5000,
"median_ms": 13.945,
"p95_ms": 22.704,
"max_ms": 26.79
},
"accounts": 100,
"message_rounds": 10,
"messages_sent": 5000,
"messages_received": 5000,
"message_batch_seconds": 4.825,
"metrics_before": {
"rss_kib": 7284,
"cpu_seconds": 0.0,
"fd_count": 11
},
"metrics_connected": {
"rss_kib": 25952,
"cpu_seconds": 1.09,
"fd_count": 511
},
"metrics_after_workload": {
"rss_kib": 26672,
"cpu_seconds": 8.34,
"fd_count": 511
},
"metrics_two_seconds_after_disconnect": {
"rss_kib": 26736,
"cpu_seconds": 8.38,
"fd_count": 11
},
"sampled_peak_rss_kib": 26736,
"fd_delta_after_disconnect": 0,
"failures": [],
"scope": "One loopback host, 100 accounts with distinct resources, TLS+PLAIN, ping and directed messages; not a production benchmark or proof of no memory leaks.",
"mam": {
"archive_files": 100,
"records": 10000,
"expected_records": 10000
}
}
Compiling rust-xmpp v0.7.1 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `test` profile [unoptimized + debuginfo] target(s) in 2.66s
Running tests/csi_native.rs (target/debug/deps/csi_native-bd792c168a73fc16)
running 1 test
test native_prosody_csi_importance_matches ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
Running tests/muc_native.rs (target/debug/deps/muc_native-6501fca139d4ea41)
running 1 test
test actual_prosody_muc_mam_reads_rust_and_writes_native_archive ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s
Running tests/preauth_native.rs (target/debug/deps/preauth_native-abc0cfe2a0307998)
running 1 test
test native_prosody_invitation_tokens_roundtrip ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s
Running tests/pubsub_native.rs (target/debug/deps/pubsub_native-e221f58aa7e06c7c)
running 1 test
test native_prosody_pep_reads_rust_and_rust_reads_native ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s
Running tests/push.rs (target/debug/deps/push-213e567bc780ee4f)
running 1 test
test native_push_body_lookup_excludes_extensions ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 6 filtered out; finished in 0.00s
Running tests/reference_prosody.rs (target/debug/deps/reference_prosody-78881b51cbfb907f)
running 1 test
PROSODY_NATIVE_ROUNDTRIP_OK SHA-1
PROSODY_NATIVE_FINAL_OK SHA-1
PROSODY_NATIVE_ROUNDTRIP_OK SHA-256
PROSODY_NATIVE_FINAL_OK SHA-256
test real_prosody_storage_and_auth_roundtrip ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.00s
Compiling rust-xmpp v0.7.1 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `test` profile [unoptimized + debuginfo] target(s) in 2.38s
Running tests/federation_tls.rs (target/debug/deps/federation_tls-a0331520383db8c9)
running 1 test
test native_prosody_tls_external_bidirectional ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 2 filtered out; finished in 1.07s
@@ -0,0 +1,101 @@
Compiling rust-xmpp v0.7.1 (/tmp/xmpp071-authbaseline)
Finished `test` profile [unoptimized + debuginfo] target(s) in 13.63s
Running tests/iq_errors.rs (target/debug/deps/iq_errors-9f3d8fea07105697)
running 2 tests
test server_errors_without_target_remain_unaddressed_and_escape_attributes ... FAILED
test pep_errors_identify_the_account_and_echo_the_request ... FAILED
failures:
---- server_errors_without_target_remain_unaddressed_and_escape_attributes stdout ----
thread 'server_errors_without_target_remain_unaddressed_and_escape_attributes' (519) panicked at tests/iq_errors.rs:29:9:
assertion `left == right` failed
left: None
right: Some("alice&bob@example.test")
---- pep_errors_identify_the_account_and_echo_the_request stdout ----
thread 'pep_errors_identify_the_account_and_echo_the_request' (518) panicked at tests/iq_errors.rs:9:5:
assertion `left == right` failed
left: None
right: Some("alice@example.test")
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
failures:
pep_errors_identify_the_account_and_echo_the_request
server_errors_without_target_remain_unaddressed_and_escape_attributes
test result: FAILED. 0 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
error: test failed, to rerun pass `--test iq_errors`
Blocking waiting for file lock on build directory
Finished `test` profile [unoptimized + debuginfo] target(s) in 7.24s
Running tests/pep_client_interop.rs (target/debug/deps/pep_client_interop-56e0c80e02b9bca7)
running 3 tests
test publish_options_match_implicit_notification_defaults_on_old_nodes ... FAILED
test missing_own_omemo_bundle_returns_recoverable_item_not_found ... ok
test avatar_and_omemo_publish_options_support_readback_and_caps_notifications ... ok
failures:
---- publish_options_match_implicit_notification_defaults_on_old_nodes stdout ----
thread 'publish_options_match_implicit_notification_defaults_on_old_nodes' (19) panicked at tests/pep_client_interop.rs:198:5:
["<iq xmlns='jabber:client' type='error' id='publish'><error type='cancel'><conflict xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/><precondition-not-met xmlns='http://jabber.org/protocol/pubsub#errors'/></error></iq>"]
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
failures:
publish_options_match_implicit_notification_defaults_on_old_nodes
test result: FAILED. 2 passed; 1 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s
error: test failed, to rerun pass `--test pep_client_interop`
Compiling rust-xmpp v0.7.1 (/tmp/xmpp071-authbaseline)
Finished `test` profile [unoptimized + debuginfo] target(s) in 0.65s
Running tests/pep_client_interop.rs (target/debug/deps/pep_client_interop-56e0c80e02b9bca7)
running 1 test
test migrated_native_configuration_can_roundtrip_access_model_edit ... FAILED
failures:
---- migrated_native_configuration_can_roundtrip_access_model_edit stdout ----
thread 'migrated_native_configuration_can_roundtrip_access_model_edit' (106) panicked at tests/pep_client_interop.rs:241:5:
assertion failed: !get.replies[0].contains("pubsub#payload_type")
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
failures:
migrated_native_configuration_can_roundtrip_access_model_edit
test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 6 filtered out; finished in 0.10s
error: test failed, to rerun pass `--test pep_client_interop`
Compiling rust-xmpp v0.7.1 (/tmp/xmpp071-authbaseline)
Finished `test` profile [unoptimized + debuginfo] target(s) in 0.66s
Running tests/pep_client_interop.rs (target/debug/deps/pep_client_interop-56e0c80e02b9bca7)
running 1 test
test migrated_native_configuration_can_roundtrip_access_model_edit ... FAILED
failures:
---- migrated_native_configuration_can_roundtrip_access_model_edit stdout ----
thread 'migrated_native_configuration_can_roundtrip_access_model_edit' (106) panicked at tests/pep_client_interop.rs:258:5:
["<iq xmlns='jabber:client' type='error' id='set-config'><error type='cancel'><feature-not-implemented xmlns='urn:ietf:params:xml:ns:xmpp-stanzas'/></error></iq>"]
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
failures:
migrated_native_configuration_can_roundtrip_access_model_edit
test result: FAILED. 0 passed; 1 failed; 0 ignored; 0 measured; 6 filtered out; finished in 0.11s
error: test failed, to rerun pass `--test pep_client_interop`
+54
View File
@@ -0,0 +1,54 @@
{
"total_load_wall_seconds": 6.652,
"requested_resources": 500,
"authenticated_bound_resources": 500,
"connection_setup_concurrency": 50,
"setup_wall_seconds": 0.558,
"setup_latency": {
"samples": 500,
"median_ms": 51.57,
"p95_ms": 70.794,
"max_ms": 90.506
},
"ping_rounds": 10,
"ping_round_trip": {
"samples": 5000,
"median_ms": 13.511,
"p95_ms": 22.338,
"max_ms": 26.333
},
"accounts": 100,
"message_rounds": 10,
"messages_sent": 5000,
"messages_received": 5000,
"message_batch_seconds": 3.813,
"metrics_before": {
"rss_kib": 7756,
"cpu_seconds": 0.0,
"fd_count": 11
},
"metrics_connected": {
"rss_kib": 26100,
"cpu_seconds": 1.05,
"fd_count": 511
},
"metrics_after_workload": {
"rss_kib": 26844,
"cpu_seconds": 7.63,
"fd_count": 511
},
"metrics_two_seconds_after_disconnect": {
"rss_kib": 26844,
"cpu_seconds": 7.67,
"fd_count": 11
},
"sampled_peak_rss_kib": 26844,
"fd_delta_after_disconnect": 0,
"failures": [],
"scope": "One loopback host, 100 accounts with distinct resources, TLS+PLAIN, ping and directed messages; not a production benchmark or proof of no memory leaks.",
"mam": {
"archive_files": 100,
"records": 10000,
"expected_records": 10000
}
}
+584
View File
@@ -0,0 +1,584 @@
Compiling rust-xmpp v0.7.2 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `test` profile [unoptimized + debuginfo] target(s) in 7.18s
Running unittests src/lib.rs (target/debug/deps/rust_xmpp-8ec155c80b6dfeaf)
running 26 tests
test federation::tests::starttls_must_be_an_immediate_stream_feature ... ok
test federation::tests::external_must_be_in_the_advertised_mechanisms ... ok
test federation::tests::federation_domains_are_dns_names_and_case_insensitive ... ok
test http_transport::tests::bosh_processing_capacity_is_bounded ... ok
test federation::tests::stream_restarts_compare_canonical_domains ... ok
test logging::tests::console_aliases_share_one_sink_with_combined_levels ... ok
test sasl::tests::reject_malformed_and_downgrade ... ok
test http_transport::tests::independent_framing ... ok
test http_transport::tests::websocket_preserves_inherited_namespaces_and_spaced_declarations ... ok
test server::authorization_tests::pep_diagnostics_exclude_payloads_and_identifiers ... ok
test sessions::push_timeout_tests::first_important_push_shortens_extended_hibernation_once ... ok
test sessions::tests::acknowledgement_wraps ... ok
test sessions::tests::graceful_disconnect_is_not_resumable ... ok
test sessions::tests::resume_replays_only_unacked_and_checks_owner ... ok
test wire::tests::arbitrary_prefix_and_inherited_namespaces ... ok
test wire::tests::cdata_and_comments_frame_without_counting_brackets ... ok
test wire::tests::declarations_rejected ... ok
test wire::tests::fragmented_and_pipelined ... ok
test wire::tests::invalid_namespace_and_declarations_rejected ... ok
test sasl::tests::rfc5802_sha1_vector ... ok
test http_service::tests::abandoned_slots_release_quota_without_pruning_existing_or_active_files ... ok
test sasl::tests::sha256_independent_python_vector ... ok
test sasl::tests::plus_channel_binding_and_ssdp_are_authenticated ... ok
test server::authorization_tests::upload_requires_registered_local_account_or_explicit_remote_access ... ok
test sasl::tests::wrong_proof_nonce_binding_and_duplicates ... ok
test admin::tests::real_admin_xml_protocol_over_duplex ... ok
test result: ok. 26 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.56s
Running unittests src/main.rs (target/debug/deps/rust_xmpp-316204254fe9a06d)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/admin_socket.rs (target/debug/deps/admin_socket-54969f77ebe78f0e)
running 1 test
test prosody_wire_commands_password_prompt_and_safe_errors ... ignored, requires AF_UNIX socket permission; run on target host with --ignored
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/archive_mam.rs (target/debug/deps/archive_mam-4f1e3e981d589aa6)
running 14 tests
test archive_larger_than_128mib_streams ... ignored, large-file scalability regression; run explicitly
test mam_preferences_persist ... ok
test legacy_records_binary_cache_and_roundtrip ... ok
test corrupt_archive_reports_server_error_and_namespace_stripping_is_precise ... ok
test append_is_incremental_and_recovers_torn_tail ... ok
test smart_enable_and_message_selection ... ok
test real_archive_sid_and_sender_privacy ... ok
test archive_roundtrip_preserves_default_namespace_resets ... ok
test equal_cursors_and_normalized_query_jids ... ok
test muc_archive_filters_stanza_kind_instead_of_sender_jid ... ok
test zero_page_dates_and_invalid_forms ... ok
test mam_paging_filters_and_forbidden ... ok
test extended_ids_ranges_flip_and_metadata ... ok
test namespaces_expiry_and_concurrent_append ... ok
test result: ok. 13 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.03s
Running tests/auth.rs (target/debug/deps/auth-0b0ae2335249fb23)
running 3 tests
test traversal_and_malicious_account_records_rejected ... ok
test create_and_read_hashed_accounts ... ok
test authentication_prepares_names_without_relaxing_account_management ... ok
test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.94s
Running tests/cli.rs (target/debug/deps/cli-094eb9ac60021a27)
running 2 tests
test server_cannot_be_mistaken_for_running_service ... ok
test conversion_preserves_source_and_refuses_overwrite ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running tests/config.rs (target/debug/deps/config-35520fafebc2d691)
running 12 tests
test component_can_explicitly_enable_global_modules ... ok
test declarations_and_overrides ... ok
test include_cycles_rejected ... ok
test include_has_own_global_scope_and_parent_scope_is_restored ... ok
test runtime_capabilities_are_unavailable ... ok
test malformed_values_rejected ... ok
test storage_paths_encode_like_prosody ... ok
test tables_cannot_recurse_forever ... ok
test supplied_configuration_scopes_arithmetic_and_modules ... ok
test all_formats_round_trip_actual_config ... ok
test supplied_config_matches_original_prosody_loader ... ok
test loops_are_bounded ... ok
test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running tests/csi.rs (target/debug/deps/csi-dbcbf6a41b488f87)
running 2 tests
test bounded_queue_flush_delay_activity_and_grace ... ok
test native_importance_rules ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/csi_native.rs (target/debug/deps/csi_native-571cd230980015ef)
running 1 test
test native_prosody_csi_importance_matches ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/data_lock.rs (target/debug/deps/data_lock-46ceeadd92bb6ee8)
running 2 tests
test child_process_probe ... ok
test excludes_another_process_and_releases_on_drop ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/debug_legacy.rs (target/debug/deps/debug_legacy-9cb0b0aa245adc83)
running 1 test
test debug_empty_legacy_bind ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.09s
Running tests/federation_tls.rs (target/debug/deps/federation_tls-e0152fda4a1323e9)
running 3 tests
test native_prosody_tls_external_bidirectional ... ignored, requires native Prosody cafd74b9c5ea and Lua TLS dependencies
test mutual_tls_external_delivery_and_certificate_identity_rejection ... ok
test reuses_connections_serializes_writes_and_retires_idle_or_closed_peers ... ok
test result: ok. 2 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 1.01s
Running tests/gajim_features.rs (target/debug/deps/gajim_features-dbda475140801d86)
running 6 tests
test security_catalog_default_is_a_real_label_and_module_can_be_disabled ... ok
test policy_catalog_selects_default_policy_and_maps_display_and_explicit_label ... ok
test security_catalogs_serve_both_versions_and_preserve_requested_target ... ok
test unsupported_security_policy_configuration_returns_explicit_error ... ok
test actual_example_policy_configuration_exposes_classifications_as_catalog_labels ... ok
test malformed_or_unknown_policy_catalog_schemas_are_rejected ... ok
test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/http_transport.rs (target/debug/deps/http_transport-2975f8ba02c03d6c)
running 10 tests
test configured_origin_is_enforced ... ok
test bosh_preserves_namespace_inherited_from_body ... ok
test transport_paths_and_cors_preflight_match_prosody ... ok
test bosh_session_retries_restart_termination ... ok
test bosh_termination_waits_for_graceful_cleanup_before_reconnect ... ok
test bosh_reorders_two_requests_without_replaying_stanzas ... ok
test websocket_frames_are_independent_xml ... ok
test websocket_close_allows_graceful_engine_cleanup ... ok
test websocket_disconnect_delivers_eof_without_graceful_close ... ok
test bosh_retry_survives_aborted_http_request_without_replaying_stanzas ... ok
test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s
Running tests/http_upload.rs (target/debug/deps/http_upload-e33fcbbc2ff0311f)
running 5 tests
test https_endpoint_uses_real_tls ... ok
test percent_escape_case_and_equivalent_url_spelling ... ok
test expired_upload_releases_quota ... ok
test persisted_prosody_archive_and_hs256_slot_survive_without_sidecar ... ok
test upload_authorization_streaming_ranges_and_restart ... ok
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s
Running tests/iq_errors.rs (target/debug/deps/iq_errors-a8690e04adeeb529)
running 2 tests
test pep_errors_identify_the_account_and_echo_the_request ... ok
test server_errors_without_target_remain_unaddressed_and_escape_attributes ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/logging.rs (target/debug/deps/logging-7d8fd52fcdc4826f)
running 10 tests
test failed_reopen_keeps_all_original_handles ... ok
test explicit_sink_levels_select_exactly_and_deduplicate ... ok
test native_console_shorthands_are_accepted ... ok
test rejects_malformed_configuration ... ok
test filters_appends_escapes_and_redacts ... ok
test json_records_and_bounded_ranges ... ok
test overlapping_shorthand_destinations_receive_each_record_once ... ok
test reopen_rotated_files_updates_clones ... ok
test shared_sink_unions_levels_and_preserves_distinct_destinations ... ok
test cloned_loggers_serialize_records ... ok
test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
Running tests/message_routing.rs (target/debug/deps/message_routing-4f3df63dddc4fc6f)
running 2 tests
test unknown_resource_falls_back_to_available_bare_jid ... ok
test headline_uses_all_nonnegative_available_resources_and_errors_never_fallback ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/muc_access.rs (target/debug/deps/muc_access-5b161dd6682b140f)
running 3 tests
test moderators_cannot_kick_or_demote_other_moderators ... ok
test nested_affiliations_do_not_fall_back_to_obsolete_flat_entries ... ok
test binary_occupant_id_salt_survives_saves_and_restarts ... ok
test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running tests/muc_domain_bans.rs (target/debug/deps/muc_domain_bans-fd6476ada4b03e72)
running 2 tests
test applying_domain_ban_removes_remote_occupants_and_blocks_rejoin ... ok
test native_domain_bans_block_remote_users_but_allow_explicit_members ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running tests/muc_flow.rs (target/debug/deps/muc_flow-38c899e5c6507d75)
running 18 tests
test configured_lock_timeout_expires_without_owner_submission ... ok
test iq_response_requires_expected_sender ... ok
test join_lock_chat_leave ... ok
test authorization_and_conflict ... ok
test nick_invite_destroy_and_local_creation ... ok
test multiple_resources_share_nick_and_private_delivery ... ok
test occupant_id_is_stable_and_spoofed_ids_removed ... ok
test restored_temporary_room_is_deleted_after_last_disconnect ... ok
test persistence_roundtrip ... ok
test switching_to_members_only_removes_unaffiliated_users ... ok
test visitor_voice_request_cannot_spoof_identity_or_grant_itself_voice ... ok
test preserves_unknown_binary_mixed_room_fields ... ok
test room_vcard_owner_only_and_avatar_presence ... ok
test persistent_destroy_creates_prosody_tombstone ... ok
test reserved_nickname_blocks_other_users ... ok
test maintenance_expires_idle_archives_and_tombstones ... ok
test archive_history_and_permissions ... ok
test native_muc_archive_type_and_anonymity_are_preserved ... ok
test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
Running tests/muc_native.rs (target/debug/deps/muc_native-5fac279d2047e8c2)
running 1 test
test actual_prosody_muc_mam_reads_rust_and_writes_native_archive ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/pep_client_interop.rs (target/debug/deps/pep_client_interop-5234b43d0a197db2)
running 7 tests
test native_component_notification_type_applies_to_events_and_subscription_replay ... ok
test missing_own_omemo_bundle_returns_recoverable_item_not_found ... ok
test avatar_and_omemo_publish_options_support_readback_and_caps_notifications ... ok
test publish_options_match_implicit_notification_defaults_on_old_nodes ... ok
test migrated_native_configuration_can_roundtrip_access_model_edit ... ok
test native_itemreply_controls_publisher_visibility_in_reads_and_replays ... ok
test native_open_and_subscriber_publish_models_preserve_outcast_and_blocking_checks ... ok
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.21s
Running tests/pep_discovery.rs (target/debug/deps/pep_discovery-0117c47dc045796e)
running 4 tests
test standalone_component_does_not_claim_pep_automatic_subscriptions ... ok
test account_disco_advertises_pep_without_requiring_a_node ... ok
test node_discovery_keeps_node_identity_errors_and_access_checks ... ok
test account_discovery_does_not_intercept_server_or_resource_caps ... ok
test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.10s
Running tests/preauth.rs (target/debug/deps/preauth-c0a9d9956f0660c0)
running 10 tests
test duplicate_or_wrong_namespace_tokens_do_not_qualify ... ok
test unknown_tokens_do_not_create_invite_stores_and_disabled_accounts_cannot_issue ... ok
test standard_adhoc_command_returns_contact_uri ... ok
test prosody_numeric_expiry_is_consumed_and_other_entries_preserved ... ok
test unknown_client_token_is_preserved_on_remote_and_pending_delivery ... ok
test concurrent_redemption_has_exactly_one_winner ... ok
test identity_scope_does_not_burn_on_wrong_sender_or_leak_to_prosody ... ok
test invitations_expire_are_single_use_and_owner_scoped ... ok
test local_invitation_updates_both_rosters_without_granting_reverse_subscription ... ok
test valid_token_autoapproves_and_sends_reciprocal_request ... ok
test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
Running tests/preauth_native.rs (target/debug/deps/preauth_native-a9ed19090296a4bb)
running 1 test
test native_prosody_invitation_tokens_roundtrip ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/pubsub_native.rs (target/debug/deps/pubsub_native-d8eeede39db97351)
running 1 test
test native_prosody_pep_reads_rust_and_rust_reads_native ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/pubsub_persistence.rs (target/debug/deps/pubsub_persistence-b6e76f1d9e8343d0)
running 18 tests
test modern_bookmarks_notify_legacy_capability ... ok
test native_string_max_items_satisfies_numeric_publish_precondition ... ok
test configurable_limits_component_creation_and_publisher ... ok
test configure_requires_owner ... ok
test capability_discovery_replays_and_filters_notifications ... ok
test nonpersistent_items_stay_in_memory_and_can_be_made_persistent ... ok
test full_jid_block_applies_to_reads_subscription_replays_and_events ... ok
test reads_prosody_legacy_fixture ... ok
test open_model_and_notifications ... ok
test pep_persists_namespaces_and_enforces_owner ... ok
test publish_options_conflict_is_recoverable_and_preserves_item ... ok
test roster_presence_access_and_foreign_subscription_denied ... ok
test remote_unavailable_is_scoped_to_addressed_owner_and_cancels_pending ... ok
test payload_policy_applies_to_subscription_and_caps_replays ... ok
test remote_caps_replay_and_open_node_privacy_revoke ... ok
test subscription_options_disable_events_and_require_subscriber ... ok
test native_notification_fields_and_retract_policy_are_independent ... ok
test component_default_retention_matches_prosody_twenty_items ... ok
test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.28s
Running tests/push.rs (target/debug/deps/push-5ab8fb3185d73ee1)
running 7 tests
test native_push_body_lookup_excludes_extensions ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test foreign_account_cannot_register ... ok
test queue_coalesces_and_importance_matches_native ... ok
test push_summary_never_copies_foreign_namespace_body ... ok
test reenable_cancels_old_errors_and_failure_counts_are_per_account ... ok
test stable_client_registration_and_targeted_notification ... ok
test registrations_notifications_and_authenticated_errors ... ok
test result: ok. 6 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.10s
Running tests/reference_prosody.rs (target/debug/deps/reference_prosody-031392d8372a1a25)
running 1 test
test real_prosody_storage_and_auth_roundtrip ... ignored, requires native supplied Prosody source; run scripts/prosody_compat/verify.sh
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/resource_sessions.rs (target/debug/deps/resource_sessions-6d0e758f141ca6a9)
running 7 tests
test kick_new_leaves_existing_session_unchanged ... ok
test invalid_resume_owner_or_ack_does_not_evict_active_session ... ok
test increment_skips_occupied_suffixes_and_preserves_sessions ... ok
test random_conflicts_get_distinct_resources_for_same_owner ... ok
test replacement_revokes_hibernating_resume_and_survives_old_cleanup ... ok
test concurrent_default_binds_replace_atomically ... ok
test active_resume_preserves_state_and_replaces_transport_notifier ... ok
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running tests/sasl_accounts.rs (target/debug/deps/sasl_accounts-d407647416c71ac1)
running 1 test
test disabled_legacy_and_unicode_accounts ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.61s
Running tests/storage_accounts.rs (target/debug/deps/storage_accounts-1249c1046b2daedb)
running 20 tests
test broken_roster_is_not_overwritten ... ok
test account_purge_refuses_symlink_store_without_touching_other_files ... ok
test domain_roster_and_block_jid_normalization ... ok
test blocklist_enforcement_api ... ok
test malformed_legacy_vcard_and_private_bookmarks_rejected ... ok
test malformed_roster_iq_never_mutates ... ok
test inbound_subscription_requires_pending_to_grant_to ... ok
test private_and_vcard_authorization ... ok
test privacy_migration_only_default_deny_jids ... ok
test reads_timestamp_blocklist_and_keeps_metadata ... ok
test roster_empty_name_and_foreign_group_ignored ... ok
test purge_account_exact_files_preserves_others_and_extras ... ok
test roster_preserves_subscription_and_metadata ... ok
test subscription_handshake_and_cancel ... ok
test legacy_bookmarks_respect_host_limit_and_read_over_256 ... ok
test bookmarks_private_pep_bidirectional_and_private ... ok
test legacy_migration_clears_source_after_success ... ok
test password_change_after_purge_never_recreates_account ... ok
test vcard_pep_conversion_and_avatar ... ok
test creation_and_purge_are_serialized ... ok
test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.53s
Running tests/storage_compat.rs (target/debug/deps/storage_compat-4143c7a6d1f37ff7)
running 6 tests
test empty_namespace_preserved ... ok
test mixed_binary_roundtrip ... ok
test stanza_roundtrip ... ok
test rejects_cycles_code_and_bad_files ... ok
test path_and_atomic_update ... ok
test concurrent_updates_do_not_lose_entries ... ok
test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s
Running tests/tls_binding.rs (target/debug/deps/tls_binding-b54da6a3dac30688)
running 4 tests
test malformed_der_and_pss_parameters_fail_closed ... ok
test unknown_and_eddsa_algorithms_fail_closed ... ok
test ecdsa_uses_certificate_signature_hash ... ok
test rsa_signature_digest_and_weak_hash_upgrade ... ok
test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.61s
Running tests/tls_plus_network.rs (target/debug/deps/tls_plus_network-c3c8506e59bf59bc)
running 2 tests
test disabling_plus_hides_bindings_and_accepts_scram_y_with_mechanisms_only_ssdp ... ok
test starttls_scram_plus_binds_real_tls_and_authenticates_ssdp_sasl1_and_sasl2 ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.99s
Doc-tests rust_xmpp
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Checking rust-xmpp v0.7.2 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.96s
Compiling rust-xmpp v0.7.2 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `release` profile [optimized] target(s) in 23.74s
PASS: integrated TCP roster/subscriptions, client IQ routing, CSI buffering/keepalive flush, MAM, blocking, OMEMO PEP, MUC, offline replay and SM resumption
PASS: graceful SIGTERM shutdown
PASS: independent SCRAM-SHA-1 over TLS, SASL1/SASL2, SSDP verification, server signatures and wrong-password rejection
PASS: independent SCRAM-SHA-256 over TLS, SASL1/SASL2, SSDP verification, server signatures and wrong-password rejection
PASS: Android TLS1.2 selector, TLS1.2/1.3 SCRAM SHA1/256 PLUS, SASL1/2, SSDP on/off and invalid binding rejection
PASS: JSON file logging, TLS/auth/bind correlation, rejection reasons, secret redaction and SIGHUP rotation
PASS: 20 TLS1.2/1.3 SASL1/2 cases: prepared PLAIN identities and canonical binds, invalid authz rejection, SCRAM abort/retry and active exchange restart
PASS: WSS SCRAM-SHA-256 SASL1/SASL2 with GS2 y, absent CB/PLUS, SSDP without CB separator, server signatures, bind and ping
PASS: SASL2 Bind2 TLS flow, inline SM/CSI/Carbons, private random resource, malformed requests, authentication failure and fallback
PASS: bind2-disabled, SSDP=False, SCRAM-SHA-1/PLAIN success and wrong-password rejection
PASS: bind2-disabled, SSDP=True, SCRAM-SHA-1/PLAIN success and wrong-password rejection
PASS: bind2-enabled, SSDP=False, SCRAM-SHA-1/PLAIN success and wrong-password rejection
PASS: bind2-enabled, SSDP=True, SCRAM-SHA-1/PLAIN success and wrong-password rejection
PASS: sm-disabled, SSDP=False, SCRAM-SHA-1/PLAIN success and wrong-password rejection
PASS: sm-disabled, SSDP=True, SCRAM-SHA-1/PLAIN success and wrong-password rejection
PASS: enabled-False-registration-False
PASS: enabled-False-registration-True
PASS: enabled-True-registration-False
PASS: enabled-True-registration-True
PASS: Gajim domain/account discovery, both label catalogs, authenticated password changes, IBR registration gates and fresh logins
PASS: SASL2 inline SM active/EOF resume, authenticated owner/id/h checks, replay ordering, full JID, Bind2 fallback and malformed requests
PASS: TLS account/domain discovery with PEP and push enabled/disabled; real push enable, publish options, per-node and service-wide disable
PASS: TLS Monocles/Conversations PEP first-run, no-to publishing, owner config recovery, migrated metadata, device item selectors and restart persistence
PASS: TLS invitation command discovery, preapproval, single-use mutual roster, replay denial, unknown preauth forwarding/offline pending, account isolation
PASS: TLS conflict_resolve=default, live and hibernating SM resources
PASS: TLS conflict_resolve=kick_old, live and hibernating SM resources
PASS: TLS conflict_resolve=kick_new, live and hibernating SM resources
PASS: TLS conflict_resolve=increment, live and hibernating SM resources
PASS: TLS conflict_resolve=random, live and hibernating SM resources
PASS: integrated WSS + HTTPS BOSH SASL/bind, CSI, inherited BOSH namespaces, roster, bidirectional chat, upload IQ/PUT/GET/reuse, graceful SM close and same-resource relogin under kick_new
{
"total_load_wall_seconds": 6.652,
"requested_resources": 500,
"authenticated_bound_resources": 500,
"connection_setup_concurrency": 50,
"setup_wall_seconds": 0.558,
"setup_latency": {
"samples": 500,
"median_ms": 51.57,
"p95_ms": 70.794,
"max_ms": 90.506
},
"ping_rounds": 10,
"ping_round_trip": {
"samples": 5000,
"median_ms": 13.511,
"p95_ms": 22.338,
"max_ms": 26.333
},
"accounts": 100,
"message_rounds": 10,
"messages_sent": 5000,
"messages_received": 5000,
"message_batch_seconds": 3.813,
"metrics_before": {
"rss_kib": 7756,
"cpu_seconds": 0.0,
"fd_count": 11
},
"metrics_connected": {
"rss_kib": 26100,
"cpu_seconds": 1.05,
"fd_count": 511
},
"metrics_after_workload": {
"rss_kib": 26844,
"cpu_seconds": 7.63,
"fd_count": 511
},
"metrics_two_seconds_after_disconnect": {
"rss_kib": 26844,
"cpu_seconds": 7.67,
"fd_count": 11
},
"sampled_peak_rss_kib": 26844,
"fd_delta_after_disconnect": 0,
"failures": [],
"scope": "One loopback host, 100 accounts with distinct resources, TLS+PLAIN, ping and directed messages; not a production benchmark or proof of no memory leaks.",
"mam": {
"archive_files": 100,
"records": 10000,
"expected_records": 10000
}
}
Compiling rust-xmpp v0.7.2 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `test` profile [unoptimized + debuginfo] target(s) in 2.57s
Running tests/csi_native.rs (target/debug/deps/csi_native-571cd230980015ef)
running 1 test
test native_prosody_csi_importance_matches ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
Running tests/muc_native.rs (target/debug/deps/muc_native-5fac279d2047e8c2)
running 1 test
test actual_prosody_muc_mam_reads_rust_and_writes_native_archive ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s
Running tests/preauth_native.rs (target/debug/deps/preauth_native-a9ed19090296a4bb)
running 1 test
test native_prosody_invitation_tokens_roundtrip ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.15s
Running tests/pubsub_native.rs (target/debug/deps/pubsub_native-d8eeede39db97351)
running 1 test
test native_prosody_pep_reads_rust_and_rust_reads_native ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s
Running tests/push.rs (target/debug/deps/push-5ab8fb3185d73ee1)
running 1 test
test native_push_body_lookup_excludes_extensions ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 6 filtered out; finished in 0.01s
Running tests/reference_prosody.rs (target/debug/deps/reference_prosody-031392d8372a1a25)
running 1 test
PROSODY_NATIVE_ROUNDTRIP_OK SHA-1
PROSODY_NATIVE_FINAL_OK SHA-1
PROSODY_NATIVE_ROUNDTRIP_OK SHA-256
PROSODY_NATIVE_FINAL_OK SHA-256
test real_prosody_storage_and_auth_roundtrip ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.10s
Compiling rust-xmpp v0.7.2 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `test` profile [unoptimized + debuginfo] target(s) in 2.23s
Running tests/federation_tls.rs (target/debug/deps/federation_tls-e0152fda4a1323e9)
running 1 test
test native_prosody_tls_external_bidirectional ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 2 filtered out; finished in 0.56s
@@ -0,0 +1,25 @@
Compiling rust-xmpp v0.7.2 (/tmp/xmpp072-orderbaseline)
Finished `test` profile [unoptimized + debuginfo] target(s) in 15.25s
Running tests/pep_item_order.rs (target/debug/deps/pep_item_order-ed2adfea48c80983)
running 2 tests
test native_prosody_orders_retained_pep_items_newest_first ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test first_pep_item_is_current_device_list_even_with_retained_old_items ... FAILED
failures:
---- first_pep_item_is_current_device_list_even_with_retained_old_items stdout ----
thread 'first_pep_item_is_current_device_list_even_with_retained_old_items' (463) panicked at tests/pep_item_order.rs:68:9:
assertion `left == right` failed: <iq xmlns='jabber:client' type='result' id='order' from='alice@example.org'><pubsub xmlns='http://jabber.org/protocol/pubsub'><items node='eu.siacs.conversations.axolotl.devicelist'><item id='old'><list xmlns='eu.siacs.conversations.axolotl'></list></item><item id='current'><list xmlns='eu.siacs.conversations.axolotl'><device xmlns='eu.siacs.conversations.axolotl' id='42'></device></list></item></items></pubsub></iq>
left: Some("old")
right: Some("current")
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
failures:
first_pep_item_is_current_device_list_even_with_retained_old_items
test result: FAILED. 0 passed; 1 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.14s
error: test failed, to rerun pass `--test pep_item_order`
+16
View File
@@ -0,0 +1,16 @@
[
{
"name": "wthome.ru",
"type": "DS",
"Status": 0,
"AD": false,
"Answer": null
},
{
"name": "wthome.ru",
"type": "DNSKEY",
"Status": 0,
"AD": false,
"Answer": null
}
]
+54
View File
@@ -0,0 +1,54 @@
{
"total_load_wall_seconds": 6.869,
"requested_resources": 500,
"authenticated_bound_resources": 500,
"connection_setup_concurrency": 50,
"setup_wall_seconds": 0.56,
"setup_latency": {
"samples": 500,
"median_ms": 49.877,
"p95_ms": 77.482,
"max_ms": 85.857
},
"ping_rounds": 10,
"ping_round_trip": {
"samples": 5000,
"median_ms": 13.502,
"p95_ms": 22.717,
"max_ms": 25.971
},
"accounts": 100,
"message_rounds": 10,
"messages_sent": 5000,
"messages_received": 5000,
"message_batch_seconds": 4.027,
"metrics_before": {
"rss_kib": 7592,
"cpu_seconds": 0.0,
"fd_count": 11
},
"metrics_connected": {
"rss_kib": 25772,
"cpu_seconds": 1.02,
"fd_count": 511
},
"metrics_after_workload": {
"rss_kib": 26420,
"cpu_seconds": 7.81,
"fd_count": 511
},
"metrics_two_seconds_after_disconnect": {
"rss_kib": 26484,
"cpu_seconds": 7.84,
"fd_count": 11
},
"sampled_peak_rss_kib": 26484,
"fd_delta_after_disconnect": 0,
"failures": [],
"scope": "One loopback host, 100 accounts with distinct resources, TLS+PLAIN, ping and directed messages; not a production benchmark or proof of no memory leaks.",
"mam": {
"archive_files": 100,
"records": 10000,
"expected_records": 10000
}
}
@@ -0,0 +1,13 @@
{
"version": "0.7.2",
"authorization_successes": 9,
"pubsub_iq_records": 126,
"omemo_iq_results": 41,
"omemo_iq_errors": 0,
"pubsub_error_classes": {
"item-not-found": 4,
"forbidden": 1
},
"user_confirmed_force_stop": true,
"caveat": "Original records contain neither item counts nor payload structure; no exact deployed PEP cause established"
}
+601
View File
@@ -0,0 +1,601 @@
Compiling rust-xmpp v0.7.3 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `test` profile [unoptimized + debuginfo] target(s) in 7.51s
Running unittests src/lib.rs (target/debug/deps/rust_xmpp-0f663f8738159bba)
running 27 tests
test federation::tests::starttls_must_be_an_immediate_stream_feature ... ok
test federation::tests::external_must_be_in_the_advertised_mechanisms ... ok
test federation::tests::federation_domains_are_dns_names_and_case_insensitive ... ok
test logging::tests::console_aliases_share_one_sink_with_combined_levels ... ok
test http_transport::tests::independent_framing ... ok
test http_transport::tests::websocket_preserves_inherited_namespaces_and_spaced_declarations ... ok
test sasl::tests::reject_malformed_and_downgrade ... ok
test federation::tests::stream_restarts_compare_canonical_domains ... ok
test http_transport::tests::bosh_processing_capacity_is_bounded ... ok
test server::authorization_tests::pep_diagnostics_count_only_first_item_devices_without_logging_ids ... ok
test server::authorization_tests::pep_diagnostics_exclude_payloads_and_identifiers ... ok
test sessions::push_timeout_tests::first_important_push_shortens_extended_hibernation_once ... ok
test sessions::tests::acknowledgement_wraps ... ok
test sessions::tests::graceful_disconnect_is_not_resumable ... ok
test sessions::tests::resume_replays_only_unacked_and_checks_owner ... ok
test wire::tests::arbitrary_prefix_and_inherited_namespaces ... ok
test wire::tests::cdata_and_comments_frame_without_counting_brackets ... ok
test wire::tests::declarations_rejected ... ok
test wire::tests::fragmented_and_pipelined ... ok
test wire::tests::invalid_namespace_and_declarations_rejected ... ok
test sasl::tests::rfc5802_sha1_vector ... ok
test sasl::tests::sha256_independent_python_vector ... ok
test http_service::tests::abandoned_slots_release_quota_without_pruning_existing_or_active_files ... ok
test sasl::tests::plus_channel_binding_and_ssdp_are_authenticated ... ok
test server::authorization_tests::upload_requires_registered_local_account_or_explicit_remote_access ... ok
test sasl::tests::wrong_proof_nonce_binding_and_duplicates ... ok
test admin::tests::real_admin_xml_protocol_over_duplex ... ok
test result: ok. 27 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.58s
Running unittests src/main.rs (target/debug/deps/rust_xmpp-f111db137f292507)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/admin_socket.rs (target/debug/deps/admin_socket-1724b74b0c8303d7)
running 1 test
test prosody_wire_commands_password_prompt_and_safe_errors ... ignored, requires AF_UNIX socket permission; run on target host with --ignored
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/archive_mam.rs (target/debug/deps/archive_mam-1fad2a650578c1c3)
running 14 tests
test archive_larger_than_128mib_streams ... ignored, large-file scalability regression; run explicitly
test mam_preferences_persist ... ok
test legacy_records_binary_cache_and_roundtrip ... ok
test append_is_incremental_and_recovers_torn_tail ... ok
test corrupt_archive_reports_server_error_and_namespace_stripping_is_precise ... ok
test archive_roundtrip_preserves_default_namespace_resets ... ok
test equal_cursors_and_normalized_query_jids ... ok
test real_archive_sid_and_sender_privacy ... ok
test smart_enable_and_message_selection ... ok
test zero_page_dates_and_invalid_forms ... ok
test muc_archive_filters_stanza_kind_instead_of_sender_jid ... ok
test mam_paging_filters_and_forbidden ... ok
test extended_ids_ranges_flip_and_metadata ... ok
test namespaces_expiry_and_concurrent_append ... ok
test result: ok. 13 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.06s
Running tests/auth.rs (target/debug/deps/auth-253cdd8ca8b681a5)
running 3 tests
test traversal_and_malicious_account_records_rejected ... ok
test create_and_read_hashed_accounts ... ok
test authentication_prepares_names_without_relaxing_account_management ... ok
test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.03s
Running tests/cli.rs (target/debug/deps/cli-3b3903d6bbbd0db6)
running 2 tests
test server_cannot_be_mistaken_for_running_service ... ok
test conversion_preserves_source_and_refuses_overwrite ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running tests/config.rs (target/debug/deps/config-81c382262d5787ea)
running 12 tests
test component_can_explicitly_enable_global_modules ... ok
test include_cycles_rejected ... ok
test declarations_and_overrides ... ok
test include_has_own_global_scope_and_parent_scope_is_restored ... ok
test storage_paths_encode_like_prosody ... ok
test tables_cannot_recurse_forever ... ok
test supplied_configuration_scopes_arithmetic_and_modules ... ok
test runtime_capabilities_are_unavailable ... ok
test supplied_config_matches_original_prosody_loader ... ok
test malformed_values_rejected ... ok
test all_formats_round_trip_actual_config ... ok
test loops_are_bounded ... ok
test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
Running tests/csi.rs (target/debug/deps/csi-29a3dad586bedc07)
running 2 tests
test bounded_queue_flush_delay_activity_and_grace ... ok
test native_importance_rules ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/csi_native.rs (target/debug/deps/csi_native-b80e079dceed1e99)
running 1 test
test native_prosody_csi_importance_matches ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/data_lock.rs (target/debug/deps/data_lock-cdb0faa186811965)
running 2 tests
test child_process_probe ... ok
test excludes_another_process_and_releases_on_drop ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/debug_legacy.rs (target/debug/deps/debug_legacy-0d219a057693c1cc)
running 1 test
test debug_empty_legacy_bind ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.09s
Running tests/federation_tls.rs (target/debug/deps/federation_tls-86baa733ed74593f)
running 3 tests
test native_prosody_tls_external_bidirectional ... ignored, requires native Prosody cafd74b9c5ea and Lua TLS dependencies
test mutual_tls_external_delivery_and_certificate_identity_rejection ... ok
test reuses_connections_serializes_writes_and_retires_idle_or_closed_peers ... ok
test result: ok. 2 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 1.19s
Running tests/gajim_features.rs (target/debug/deps/gajim_features-087e526d304576d6)
running 6 tests
test policy_catalog_selects_default_policy_and_maps_display_and_explicit_label ... ok
test security_catalog_default_is_a_real_label_and_module_can_be_disabled ... ok
test unsupported_security_policy_configuration_returns_explicit_error ... ok
test security_catalogs_serve_both_versions_and_preserve_requested_target ... ok
test actual_example_policy_configuration_exposes_classifications_as_catalog_labels ... ok
test malformed_or_unknown_policy_catalog_schemas_are_rejected ... ok
test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/http_transport.rs (target/debug/deps/http_transport-4ac27aefb7b10d67)
running 10 tests
test configured_origin_is_enforced ... ok
test bosh_preserves_namespace_inherited_from_body ... ok
test transport_paths_and_cors_preflight_match_prosody ... ok
test bosh_session_retries_restart_termination ... ok
test bosh_termination_waits_for_graceful_cleanup_before_reconnect ... ok
test bosh_reorders_two_requests_without_replaying_stanzas ... ok
test websocket_frames_are_independent_xml ... ok
test websocket_disconnect_delivers_eof_without_graceful_close ... ok
test websocket_close_allows_graceful_engine_cleanup ... ok
test bosh_retry_survives_aborted_http_request_without_replaying_stanzas ... ok
test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s
Running tests/http_upload.rs (target/debug/deps/http_upload-8388a7005234b59f)
running 5 tests
test https_endpoint_uses_real_tls ... ok
test percent_escape_case_and_equivalent_url_spelling ... ok
test persisted_prosody_archive_and_hs256_slot_survive_without_sidecar ... ok
test expired_upload_releases_quota ... ok
test upload_authorization_streaming_ranges_and_restart ... ok
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.05s
Running tests/iq_errors.rs (target/debug/deps/iq_errors-5fbec3c5e9670c88)
running 2 tests
test pep_errors_identify_the_account_and_echo_the_request ... ok
test server_errors_without_target_remain_unaddressed_and_escape_attributes ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/logging.rs (target/debug/deps/logging-9911e21d602ab0af)
running 10 tests
test native_console_shorthands_are_accepted ... ok
test rejects_malformed_configuration ... ok
test json_records_and_bounded_ranges ... ok
test filters_appends_escapes_and_redacts ... ok
test failed_reopen_keeps_all_original_handles ... ok
test explicit_sink_levels_select_exactly_and_deduplicate ... ok
test shared_sink_unions_levels_and_preserves_distinct_destinations ... ok
test overlapping_shorthand_destinations_receive_each_record_once ... ok
test reopen_rotated_files_updates_clones ... ok
test cloned_loggers_serialize_records ... ok
test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
Running tests/message_routing.rs (target/debug/deps/message_routing-6218f6512add553f)
running 2 tests
test unknown_resource_falls_back_to_available_bare_jid ... ok
test headline_uses_all_nonnegative_available_resources_and_errors_never_fallback ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/muc_access.rs (target/debug/deps/muc_access-24d58593458fb64a)
running 3 tests
test moderators_cannot_kick_or_demote_other_moderators ... ok
test nested_affiliations_do_not_fall_back_to_obsolete_flat_entries ... ok
test binary_occupant_id_salt_survives_saves_and_restarts ... ok
test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running tests/muc_domain_bans.rs (target/debug/deps/muc_domain_bans-a80bb9e58bf933ab)
running 2 tests
test applying_domain_ban_removes_remote_occupants_and_blocks_rejoin ... ok
test native_domain_bans_block_remote_users_but_allow_explicit_members ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running tests/muc_flow.rs (target/debug/deps/muc_flow-6afe34edd1bdf71a)
running 18 tests
test configured_lock_timeout_expires_without_owner_submission ... ok
test iq_response_requires_expected_sender ... ok
test join_lock_chat_leave ... ok
test authorization_and_conflict ... ok
test occupant_id_is_stable_and_spoofed_ids_removed ... ok
test nick_invite_destroy_and_local_creation ... ok
test multiple_resources_share_nick_and_private_delivery ... ok
test restored_temporary_room_is_deleted_after_last_disconnect ... ok
test persistence_roundtrip ... ok
test switching_to_members_only_removes_unaffiliated_users ... ok
test preserves_unknown_binary_mixed_room_fields ... ok
test room_vcard_owner_only_and_avatar_presence ... ok
test visitor_voice_request_cannot_spoof_identity_or_grant_itself_voice ... ok
test persistent_destroy_creates_prosody_tombstone ... ok
test reserved_nickname_blocks_other_users ... ok
test maintenance_expires_idle_archives_and_tombstones ... ok
test native_muc_archive_type_and_anonymity_are_preserved ... ok
test archive_history_and_permissions ... ok
test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
Running tests/muc_native.rs (target/debug/deps/muc_native-09a0b03a209e7a60)
running 1 test
test actual_prosody_muc_mam_reads_rust_and_writes_native_archive ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/pep_client_interop.rs (target/debug/deps/pep_client_interop-413fe2b7907d0a87)
running 7 tests
test native_component_notification_type_applies_to_events_and_subscription_replay ... ok
test missing_own_omemo_bundle_returns_recoverable_item_not_found ... ok
test publish_options_match_implicit_notification_defaults_on_old_nodes ... ok
test avatar_and_omemo_publish_options_support_readback_and_caps_notifications ... ok
test native_itemreply_controls_publisher_visibility_in_reads_and_replays ... ok
test migrated_native_configuration_can_roundtrip_access_model_edit ... ok
test native_open_and_subscriber_publish_models_preserve_outcast_and_blocking_checks ... ok
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.26s
Running tests/pep_discovery.rs (target/debug/deps/pep_discovery-a9cecb10c170ccf6)
running 4 tests
test standalone_component_does_not_claim_pep_automatic_subscriptions ... ok
test node_discovery_keeps_node_identity_errors_and_access_checks ... ok
test account_disco_advertises_pep_without_requiring_a_node ... ok
test account_discovery_does_not_intercept_server_or_resource_caps ... ok
test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.12s
Running tests/pep_item_order.rs (target/debug/deps/pep_item_order-ee0388686830a663)
running 2 tests
test native_prosody_orders_retained_pep_items_newest_first ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test first_pep_item_is_current_device_list_even_with_retained_old_items ... ok
test result: ok. 1 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.28s
Running tests/preauth.rs (target/debug/deps/preauth-ba8801cabfc94056)
running 10 tests
test duplicate_or_wrong_namespace_tokens_do_not_qualify ... ok
test standard_adhoc_command_returns_contact_uri ... ok
test unknown_tokens_do_not_create_invite_stores_and_disabled_accounts_cannot_issue ... ok
test prosody_numeric_expiry_is_consumed_and_other_entries_preserved ... ok
test unknown_client_token_is_preserved_on_remote_and_pending_delivery ... ok
test concurrent_redemption_has_exactly_one_winner ... ok
test identity_scope_does_not_burn_on_wrong_sender_or_leak_to_prosody ... ok
test invitations_expire_are_single_use_and_owner_scoped ... ok
test valid_token_autoapproves_and_sends_reciprocal_request ... ok
test local_invitation_updates_both_rosters_without_granting_reverse_subscription ... ok
test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
Running tests/preauth_native.rs (target/debug/deps/preauth_native-cba4ee3b226e1595)
running 1 test
test native_prosody_invitation_tokens_roundtrip ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/pubsub_native.rs (target/debug/deps/pubsub_native-bcfd8bc2adaa8ad8)
running 1 test
test native_prosody_pep_reads_rust_and_rust_reads_native ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/pubsub_persistence.rs (target/debug/deps/pubsub_persistence-f05a14153b319232)
running 18 tests
test modern_bookmarks_notify_legacy_capability ... ok
test native_string_max_items_satisfies_numeric_publish_precondition ... ok
test configurable_limits_component_creation_and_publisher ... ok
test configure_requires_owner ... ok
test capability_discovery_replays_and_filters_notifications ... ok
test nonpersistent_items_stay_in_memory_and_can_be_made_persistent ... ok
test reads_prosody_legacy_fixture ... ok
test open_model_and_notifications ... ok
test pep_persists_namespaces_and_enforces_owner ... ok
test full_jid_block_applies_to_reads_subscription_replays_and_events ... ok
test publish_options_conflict_is_recoverable_and_preserves_item ... ok
test remote_caps_replay_and_open_node_privacy_revoke ... ok
test remote_unavailable_is_scoped_to_addressed_owner_and_cancels_pending ... ok
test roster_presence_access_and_foreign_subscription_denied ... ok
test subscription_options_disable_events_and_require_subscriber ... ok
test native_notification_fields_and_retract_policy_are_independent ... ok
test payload_policy_applies_to_subscription_and_caps_replays ... ok
test component_default_retention_matches_prosody_twenty_items ... ok
test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.25s
Running tests/push.rs (target/debug/deps/push-1b427f1bc8b33016)
running 7 tests
test native_push_body_lookup_excludes_extensions ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test foreign_account_cannot_register ... ok
test push_summary_never_copies_foreign_namespace_body ... ok
test queue_coalesces_and_importance_matches_native ... ok
test stable_client_registration_and_targeted_notification ... ok
test reenable_cancels_old_errors_and_failure_counts_are_per_account ... ok
test registrations_notifications_and_authenticated_errors ... ok
test result: ok. 6 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.09s
Running tests/reference_prosody.rs (target/debug/deps/reference_prosody-a839a83d42b1c66e)
running 1 test
test real_prosody_storage_and_auth_roundtrip ... ignored, requires native supplied Prosody source; run scripts/prosody_compat/verify.sh
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/resource_sessions.rs (target/debug/deps/resource_sessions-49eaa11cd201a8b9)
running 7 tests
test increment_skips_occupied_suffixes_and_preserves_sessions ... ok
test invalid_resume_owner_or_ack_does_not_evict_active_session ... ok
test random_conflicts_get_distinct_resources_for_same_owner ... ok
test replacement_revokes_hibernating_resume_and_survives_old_cleanup ... ok
test kick_new_leaves_existing_session_unchanged ... ok
test concurrent_default_binds_replace_atomically ... ok
test active_resume_preserves_state_and_replaces_transport_notifier ... ok
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running tests/sasl_accounts.rs (target/debug/deps/sasl_accounts-8dbe73b1fae9056d)
running 1 test
test disabled_legacy_and_unicode_accounts ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.65s
Running tests/storage_accounts.rs (target/debug/deps/storage_accounts-1445bba0c39f0315)
running 20 tests
test account_purge_refuses_symlink_store_without_touching_other_files ... ok
test broken_roster_is_not_overwritten ... ok
test malformed_legacy_vcard_and_private_bookmarks_rejected ... ok
test inbound_subscription_requires_pending_to_grant_to ... ok
test blocklist_enforcement_api ... ok
test malformed_roster_iq_never_mutates ... ok
test domain_roster_and_block_jid_normalization ... ok
test private_and_vcard_authorization ... ok
test privacy_migration_only_default_deny_jids ... ok
test reads_timestamp_blocklist_and_keeps_metadata ... ok
test purge_account_exact_files_preserves_others_and_extras ... ok
test roster_empty_name_and_foreign_group_ignored ... ok
test roster_preserves_subscription_and_metadata ... ok
test subscription_handshake_and_cancel ... ok
test bookmarks_private_pep_bidirectional_and_private ... ok
test legacy_bookmarks_respect_host_limit_and_read_over_256 ... ok
test legacy_migration_clears_source_after_success ... ok
test password_change_after_purge_never_recreates_account ... ok
test vcard_pep_conversion_and_avatar ... ok
test creation_and_purge_are_serialized ... ok
test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.55s
Running tests/storage_compat.rs (target/debug/deps/storage_compat-b6f8e0d1a4b7c489)
running 6 tests
test empty_namespace_preserved ... ok
test stanza_roundtrip ... ok
test mixed_binary_roundtrip ... ok
test path_and_atomic_update ... ok
test rejects_cycles_code_and_bad_files ... ok
test concurrent_updates_do_not_lose_entries ... ok
test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
Running tests/tls_binding.rs (target/debug/deps/tls_binding-da733d5b850507ca)
running 4 tests
test malformed_der_and_pss_parameters_fail_closed ... ok
test unknown_and_eddsa_algorithms_fail_closed ... ok
test ecdsa_uses_certificate_signature_hash ... ok
test rsa_signature_digest_and_weak_hash_upgrade ... ok
test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.18s
Running tests/tls_plus_network.rs (target/debug/deps/tls_plus_network-0f35e80a04c03ca0)
running 2 tests
test disabling_plus_hides_bindings_and_accepts_scram_y_with_mechanisms_only_ssdp ... ok
test starttls_scram_plus_binds_real_tls_and_authenticates_ssdp_sasl1_and_sasl2 ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.61s
Doc-tests rust_xmpp
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Checking rust-xmpp v0.7.3 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.58s
Compiling rust-xmpp v0.7.3 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `release` profile [optimized] target(s) in 23.12s
PASS: integrated TCP roster/subscriptions, client IQ routing, CSI buffering/keepalive flush, MAM, blocking, OMEMO PEP, MUC, offline replay and SM resumption
PASS: graceful SIGTERM shutdown
PASS: independent SCRAM-SHA-1 over TLS, SASL1/SASL2, SSDP verification, server signatures and wrong-password rejection
PASS: independent SCRAM-SHA-256 over TLS, SASL1/SASL2, SSDP verification, server signatures and wrong-password rejection
PASS: Android TLS1.2 selector, TLS1.2/1.3 SCRAM SHA1/256 PLUS, SASL1/2, SSDP on/off and invalid binding rejection
PASS: JSON file logging, TLS/auth/bind correlation, rejection reasons, secret redaction and SIGHUP rotation
PASS: 20 TLS1.2/1.3 SASL1/2 cases: prepared PLAIN identities and canonical binds, invalid authz rejection, SCRAM abort/retry and active exchange restart
PASS: WSS SCRAM-SHA-256 SASL1/SASL2 with GS2 y, absent CB/PLUS, SSDP without CB separator, server signatures, bind and ping
PASS: SASL2 Bind2 TLS flow, inline SM/CSI/Carbons, private random resource, malformed requests, authentication failure and fallback
PASS: bind2-disabled, SSDP=False, SCRAM-SHA-1/PLAIN success and wrong-password rejection
PASS: bind2-disabled, SSDP=True, SCRAM-SHA-1/PLAIN success and wrong-password rejection
PASS: bind2-enabled, SSDP=False, SCRAM-SHA-1/PLAIN success and wrong-password rejection
PASS: bind2-enabled, SSDP=True, SCRAM-SHA-1/PLAIN success and wrong-password rejection
PASS: sm-disabled, SSDP=False, SCRAM-SHA-1/PLAIN success and wrong-password rejection
PASS: sm-disabled, SSDP=True, SCRAM-SHA-1/PLAIN success and wrong-password rejection
PASS: enabled-False-registration-False
PASS: enabled-False-registration-True
PASS: enabled-True-registration-False
PASS: enabled-True-registration-True
PASS: Gajim domain/account discovery, both label catalogs, authenticated password changes, IBR registration gates and fresh logins
PASS: SASL2 inline SM active/EOF resume, authenticated owner/id/h checks, replay ordering, full JID, Bind2 fallback and malformed requests
PASS: TLS account/domain discovery with PEP and push enabled/disabled; real push enable, publish options, per-node and service-wide disable
PASS: TLS Monocles/Conversations PEP first-run, no-to publishing, owner config recovery, migrated metadata, device item selectors and restart persistence
PASS: Android first-item device-list parsing sees latest publish and replacement before and after restart
PASS: TLS invitation command discovery, preapproval, single-use mutual roster, replay denial, unknown preauth forwarding/offline pending, account isolation
PASS: TLS conflict_resolve=default, live and hibernating SM resources
PASS: TLS conflict_resolve=kick_old, live and hibernating SM resources
PASS: TLS conflict_resolve=kick_new, live and hibernating SM resources
PASS: TLS conflict_resolve=increment, live and hibernating SM resources
PASS: TLS conflict_resolve=random, live and hibernating SM resources
PASS: integrated WSS + HTTPS BOSH SASL/bind, CSI, inherited BOSH namespaces, roster, bidirectional chat, upload IQ/PUT/GET/reuse, graceful SM close and same-resource relogin under kick_new
{
"total_load_wall_seconds": 6.869,
"requested_resources": 500,
"authenticated_bound_resources": 500,
"connection_setup_concurrency": 50,
"setup_wall_seconds": 0.56,
"setup_latency": {
"samples": 500,
"median_ms": 49.877,
"p95_ms": 77.482,
"max_ms": 85.857
},
"ping_rounds": 10,
"ping_round_trip": {
"samples": 5000,
"median_ms": 13.502,
"p95_ms": 22.717,
"max_ms": 25.971
},
"accounts": 100,
"message_rounds": 10,
"messages_sent": 5000,
"messages_received": 5000,
"message_batch_seconds": 4.027,
"metrics_before": {
"rss_kib": 7592,
"cpu_seconds": 0.0,
"fd_count": 11
},
"metrics_connected": {
"rss_kib": 25772,
"cpu_seconds": 1.02,
"fd_count": 511
},
"metrics_after_workload": {
"rss_kib": 26420,
"cpu_seconds": 7.81,
"fd_count": 511
},
"metrics_two_seconds_after_disconnect": {
"rss_kib": 26484,
"cpu_seconds": 7.84,
"fd_count": 11
},
"sampled_peak_rss_kib": 26484,
"fd_delta_after_disconnect": 0,
"failures": [],
"scope": "One loopback host, 100 accounts with distinct resources, TLS+PLAIN, ping and directed messages; not a production benchmark or proof of no memory leaks.",
"mam": {
"archive_files": 100,
"records": 10000,
"expected_records": 10000
}
}
Compiling rust-xmpp v0.7.3 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `test` profile [unoptimized + debuginfo] target(s) in 2.50s
Running tests/csi_native.rs (target/debug/deps/csi_native-b80e079dceed1e99)
running 1 test
test native_prosody_csi_importance_matches ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s
Running tests/muc_native.rs (target/debug/deps/muc_native-09a0b03a209e7a60)
running 1 test
test actual_prosody_muc_mam_reads_rust_and_writes_native_archive ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s
Running tests/pep_item_order.rs (target/debug/deps/pep_item_order-ee0388686830a663)
running 1 test
test native_prosody_orders_retained_pep_items_newest_first ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 1 filtered out; finished in 0.13s
Running tests/preauth_native.rs (target/debug/deps/preauth_native-cba4ee3b226e1595)
running 1 test
test native_prosody_invitation_tokens_roundtrip ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s
Running tests/pubsub_native.rs (target/debug/deps/pubsub_native-bcfd8bc2adaa8ad8)
running 1 test
test native_prosody_pep_reads_rust_and_rust_reads_native ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s
Running tests/push.rs (target/debug/deps/push-1b427f1bc8b33016)
running 1 test
test native_push_body_lookup_excludes_extensions ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 6 filtered out; finished in 0.01s
Running tests/reference_prosody.rs (target/debug/deps/reference_prosody-a839a83d42b1c66e)
running 1 test
PROSODY_NATIVE_ROUNDTRIP_OK SHA-1
PROSODY_NATIVE_FINAL_OK SHA-1
PROSODY_NATIVE_ROUNDTRIP_OK SHA-256
PROSODY_NATIVE_FINAL_OK SHA-256
test real_prosody_storage_and_auth_roundtrip ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.05s
Compiling rust-xmpp v0.7.3 (/workspace/scratch/362577cdf2e0/rust-xmpp-next)
Finished `test` profile [unoptimized + debuginfo] target(s) in 2.33s
Running tests/federation_tls.rs (target/debug/deps/federation_tls-86baa733ed74593f)
running 1 test
test native_prosody_tls_external_bidirectional ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 2 filtered out; finished in 0.77s
+14
View File
@@ -0,0 +1,14 @@
[
{
"type": "DS",
"Status": 0,
"AD": false,
"Answer": null
},
{
"type": "DNSKEY",
"Status": 0,
"AD": false,
"Answer": null
}
]
+54
View File
@@ -0,0 +1,54 @@
{
"total_load_wall_seconds": 7.856,
"requested_resources": 500,
"authenticated_bound_resources": 500,
"connection_setup_concurrency": 50,
"setup_wall_seconds": 0.632,
"setup_latency": {
"samples": 500,
"median_ms": 57.745,
"p95_ms": 76.618,
"max_ms": 120.568
},
"ping_rounds": 10,
"ping_round_trip": {
"samples": 5000,
"median_ms": 14.512,
"p95_ms": 19.865,
"max_ms": 23.436
},
"accounts": 100,
"message_rounds": 10,
"messages_sent": 5000,
"messages_received": 5000,
"message_batch_seconds": 4.919,
"metrics_before": {
"rss_kib": 7328,
"cpu_seconds": 0.0,
"fd_count": 11
},
"metrics_connected": {
"rss_kib": 26316,
"cpu_seconds": 1.15,
"fd_count": 511
},
"metrics_after_workload": {
"rss_kib": 26872,
"cpu_seconds": 8.19,
"fd_count": 511
},
"metrics_two_seconds_after_disconnect": {
"rss_kib": 26872,
"cpu_seconds": 8.23,
"fd_count": 11
},
"sampled_peak_rss_kib": 26872,
"fd_delta_after_disconnect": 0,
"failures": [],
"scope": "One loopback host, 100 accounts with distinct resources, TLS+PLAIN, ping and directed messages; not a production benchmark or proof of no memory leaks.",
"mam": {
"archive_files": 100,
"records": 10000,
"expected_records": 10000
}
}
@@ -0,0 +1,13 @@
{
"server_version": "0.7.3",
"json_records": 201,
"own_omemo_iq": 12,
"own_omemo_errors": 0,
"own_omemo_device_xml_counts": [
1,
2,
6
],
"confirmed_browser_origin": "https://conversejs.wthome.ru",
"exact_pep_cause_proven": false
}
+615
View File
@@ -0,0 +1,615 @@
Compiling rust-xmpp v0.7.4 (/workspace/scratch/362577cdf2e0/recovered/rust-xmpp)
Finished `test` profile [unoptimized + debuginfo] target(s) in 10.54s
Running unittests src/lib.rs (target/debug/deps/rust_xmpp-803cf50cf0e8de10)
running 28 tests
test federation::tests::starttls_must_be_an_immediate_stream_feature ... ok
test federation::tests::federation_domains_are_dns_names_and_case_insensitive ... ok
test federation::tests::external_must_be_in_the_advertised_mechanisms ... ok
test http_transport::tests::independent_framing ... ok
test logging::tests::console_aliases_share_one_sink_with_combined_levels ... ok
test http_transport::tests::bosh_processing_capacity_is_bounded ... ok
test sasl::tests::reject_malformed_and_downgrade ... ok
test http_transport::tests::websocket_preserves_inherited_namespaces_and_spaced_declarations ... ok
test server::authorization_tests::http_interfaces_follow_secure_override_wildcards_and_global_fallback ... ok
test federation::tests::stream_restarts_compare_canonical_domains ... ok
test server::authorization_tests::pep_diagnostics_count_only_first_item_devices_without_logging_ids ... ok
test server::authorization_tests::pep_diagnostics_exclude_payloads_and_identifiers ... ok
test sessions::push_timeout_tests::first_important_push_shortens_extended_hibernation_once ... ok
test sessions::tests::acknowledgement_wraps ... ok
test sessions::tests::graceful_disconnect_is_not_resumable ... ok
test sessions::tests::resume_replays_only_unacked_and_checks_owner ... ok
test wire::tests::arbitrary_prefix_and_inherited_namespaces ... ok
test wire::tests::cdata_and_comments_frame_without_counting_brackets ... ok
test wire::tests::declarations_rejected ... ok
test wire::tests::fragmented_and_pipelined ... ok
test wire::tests::invalid_namespace_and_declarations_rejected ... ok
test sasl::tests::rfc5802_sha1_vector ... ok
test http_service::tests::abandoned_slots_release_quota_without_pruning_existing_or_active_files ... ok
test sasl::tests::sha256_independent_python_vector ... ok
test sasl::tests::plus_channel_binding_and_ssdp_are_authenticated ... ok
test server::authorization_tests::upload_requires_registered_local_account_or_explicit_remote_access ... ok
test sasl::tests::wrong_proof_nonce_binding_and_duplicates ... ok
test admin::tests::real_admin_xml_protocol_over_duplex ... ok
test result: ok. 28 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.57s
Running unittests src/main.rs (target/debug/deps/rust_xmpp-639caac9c9347e9b)
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/admin_socket.rs (target/debug/deps/admin_socket-32190fb1abeaf6ce)
running 1 test
test prosody_wire_commands_password_prompt_and_safe_errors ... ignored, requires AF_UNIX socket permission; run on target host with --ignored
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/archive_mam.rs (target/debug/deps/archive_mam-a5559b36ae2aa127)
running 14 tests
test archive_larger_than_128mib_streams ... ignored, large-file scalability regression; run explicitly
test mam_preferences_persist ... ok
test corrupt_archive_reports_server_error_and_namespace_stripping_is_precise ... ok
test append_is_incremental_and_recovers_torn_tail ... ok
test legacy_records_binary_cache_and_roundtrip ... ok
test smart_enable_and_message_selection ... ok
test archive_roundtrip_preserves_default_namespace_resets ... ok
test real_archive_sid_and_sender_privacy ... ok
test equal_cursors_and_normalized_query_jids ... ok
test muc_archive_filters_stanza_kind_instead_of_sender_jid ... ok
test zero_page_dates_and_invalid_forms ... ok
test mam_paging_filters_and_forbidden ... ok
test extended_ids_ranges_flip_and_metadata ... ok
test namespaces_expiry_and_concurrent_append ... ok
test result: ok. 13 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.03s
Running tests/auth.rs (target/debug/deps/auth-a9d6041897920545)
running 3 tests
test traversal_and_malicious_account_records_rejected ... ok
test create_and_read_hashed_accounts ... ok
test authentication_prepares_names_without_relaxing_account_management ... ok
test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.00s
Running tests/cli.rs (target/debug/deps/cli-53d7a1e358e7d369)
running 2 tests
test server_cannot_be_mistaken_for_running_service ... ok
test conversion_preserves_source_and_refuses_overwrite ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running tests/config.rs (target/debug/deps/config-4040e6dfb24c249a)
running 12 tests
test include_has_own_global_scope_and_parent_scope_is_restored ... ok
test component_can_explicitly_enable_global_modules ... ok
test declarations_and_overrides ... ok
test include_cycles_rejected ... ok
test storage_paths_encode_like_prosody ... ok
test tables_cannot_recurse_forever ... ok
test runtime_capabilities_are_unavailable ... ok
test supplied_configuration_scopes_arithmetic_and_modules ... ok
test malformed_values_rejected ... ok
test supplied_config_matches_original_prosody_loader ... ok
test all_formats_round_trip_actual_config ... ok
test loops_are_bounded ... ok
test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
Running tests/csi.rs (target/debug/deps/csi-4ca167ddb91d0fc9)
running 2 tests
test bounded_queue_flush_delay_activity_and_grace ... ok
test native_importance_rules ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/csi_native.rs (target/debug/deps/csi_native-d041e21e009bbc52)
running 1 test
test native_prosody_csi_importance_matches ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/data_lock.rs (target/debug/deps/data_lock-eadcfca212638c36)
running 2 tests
test child_process_probe ... ok
test excludes_another_process_and_releases_on_drop ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running tests/debug_legacy.rs (target/debug/deps/debug_legacy-7da8bc62f8b68cdd)
running 1 test
test debug_empty_legacy_bind ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.11s
Running tests/federation_tls.rs (target/debug/deps/federation_tls-7d5f9ba5124f0a69)
running 3 tests
test native_prosody_tls_external_bidirectional ... ignored, requires native Prosody cafd74b9c5ea and Lua TLS dependencies
test mutual_tls_external_delivery_and_certificate_identity_rejection ... ok
test reuses_connections_serializes_writes_and_retires_idle_or_closed_peers ... ok
test result: ok. 2 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 1.56s
Running tests/gajim_features.rs (target/debug/deps/gajim_features-639b09dd1b5f76d6)
running 6 tests
test security_catalog_default_is_a_real_label_and_module_can_be_disabled ... ok
test policy_catalog_selects_default_policy_and_maps_display_and_explicit_label ... ok
test unsupported_security_policy_configuration_returns_explicit_error ... ok
test actual_example_policy_configuration_exposes_classifications_as_catalog_labels ... ok
test security_catalogs_serve_both_versions_and_preserve_requested_target ... ok
test malformed_or_unknown_policy_catalog_schemas_are_rejected ... ok
test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/http_transport.rs (target/debug/deps/http_transport-1c63f193a0a4af74)
running 10 tests
test bosh_preserves_namespace_inherited_from_body ... ok
test configured_origin_is_enforced ... ok
test transport_paths_and_cors_preflight_match_prosody ... ok
test bosh_session_retries_restart_termination ... ok
test bosh_termination_waits_for_graceful_cleanup_before_reconnect ... ok
test bosh_reorders_two_requests_without_replaying_stanzas ... ok
test websocket_frames_are_independent_xml ... ok
test websocket_close_allows_graceful_engine_cleanup ... ok
test websocket_disconnect_delivers_eof_without_graceful_close ... ok
test bosh_retry_survives_aborted_http_request_without_replaying_stanzas ... ok
test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s
Running tests/http_upload.rs (target/debug/deps/http_upload-1381735c3ebc04db)
running 5 tests
test https_endpoint_uses_real_tls ... ok
test percent_escape_case_and_equivalent_url_spelling ... ok
test expired_upload_releases_quota ... ok
test persisted_prosody_archive_and_hs256_slot_survive_without_sidecar ... ok
test upload_authorization_streaming_ranges_and_restart ... ok
test result: ok. 5 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.06s
Running tests/iq_errors.rs (target/debug/deps/iq_errors-2249c68c2d34c618)
running 2 tests
test pep_errors_identify_the_account_and_echo_the_request ... ok
test server_errors_without_target_remain_unaddressed_and_escape_attributes ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/logging.rs (target/debug/deps/logging-16dea78ec19a30c7)
running 10 tests
test filters_appends_escapes_and_redacts ... ok
test failed_reopen_keeps_all_original_handles ... ok
test rejects_malformed_configuration ... ok
test explicit_sink_levels_select_exactly_and_deduplicate ... ok
test json_records_and_bounded_ranges ... ok
test native_console_shorthands_are_accepted ... ok
test overlapping_shorthand_destinations_receive_each_record_once ... ok
test reopen_rotated_files_updates_clones ... ok
test shared_sink_unions_levels_and_preserves_distinct_destinations ... ok
test cloned_loggers_serialize_records ... ok
test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
Running tests/message_routing.rs (target/debug/deps/message_routing-ab69d1f2c8c6177b)
running 2 tests
test unknown_resource_falls_back_to_available_bare_jid ... ok
test headline_uses_all_nonnegative_available_resources_and_errors_never_fallback ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/muc_access.rs (target/debug/deps/muc_access-a295ef107acaee5c)
running 3 tests
test moderators_cannot_kick_or_demote_other_moderators ... ok
test nested_affiliations_do_not_fall_back_to_obsolete_flat_entries ... ok
test binary_occupant_id_salt_survives_saves_and_restarts ... ok
test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running tests/muc_domain_bans.rs (target/debug/deps/muc_domain_bans-0a686e2e50055022)
running 2 tests
test applying_domain_ban_removes_remote_occupants_and_blocks_rejoin ... ok
test native_domain_bans_block_remote_users_but_allow_explicit_members ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/muc_flow.rs (target/debug/deps/muc_flow-e861064da7929f6d)
running 18 tests
test multiple_resources_share_nick_and_private_delivery ... ok
test authorization_and_conflict ... ok
test iq_response_requires_expected_sender ... ok
test join_lock_chat_leave ... ok
test configured_lock_timeout_expires_without_owner_submission ... ok
test occupant_id_is_stable_and_spoofed_ids_removed ... ok
test nick_invite_destroy_and_local_creation ... ok
test restored_temporary_room_is_deleted_after_last_disconnect ... ok
test persistence_roundtrip ... ok
test switching_to_members_only_removes_unaffiliated_users ... ok
test visitor_voice_request_cannot_spoof_identity_or_grant_itself_voice ... ok
test preserves_unknown_binary_mixed_room_fields ... ok
test room_vcard_owner_only_and_avatar_presence ... ok
test persistent_destroy_creates_prosody_tombstone ... ok
test reserved_nickname_blocks_other_users ... ok
test archive_history_and_permissions ... ok
test maintenance_expires_idle_archives_and_tombstones ... ok
test native_muc_archive_type_and_anonymity_are_preserved ... ok
test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
Running tests/muc_native.rs (target/debug/deps/muc_native-fc2050db5077d8e1)
running 1 test
test actual_prosody_muc_mam_reads_rust_and_writes_native_archive ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/pep_client_interop.rs (target/debug/deps/pep_client_interop-0c293151e8f101ce)
running 7 tests
test native_component_notification_type_applies_to_events_and_subscription_replay ... ok
test migrated_native_configuration_can_roundtrip_access_model_edit ... ok
test avatar_and_omemo_publish_options_support_readback_and_caps_notifications ... ok
test missing_own_omemo_bundle_returns_recoverable_item_not_found ... ok
test publish_options_match_implicit_notification_defaults_on_old_nodes ... ok
test native_itemreply_controls_publisher_visibility_in_reads_and_replays ... ok
test native_open_and_subscriber_publish_models_preserve_outcast_and_blocking_checks ... ok
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.22s
Running tests/pep_diagnostics.rs (target/debug/deps/pep_diagnostics-20943bf26cdbd41d)
running 6 tests
test nonempty_xml_can_be_an_empty_android_device_list ... ok
test arbitrary_node_payload_and_wrong_namespace_do_not_leak ... ok
test avatar_classification_does_not_inspect_or_expose_avatar_data ... ok
test only_first_direct_item_is_parsed_and_protocols_are_distinct ... ok
test signed_integer_limits_and_duplicates_match_java_parser ... ok
test payloadless_notification_is_visible_without_identifiers ... ok
test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/pep_discovery.rs (target/debug/deps/pep_discovery-d50c3b42eb7e4c23)
running 4 tests
test standalone_component_does_not_claim_pep_automatic_subscriptions ... ok
test account_discovery_does_not_intercept_server_or_resource_caps ... ok
test account_disco_advertises_pep_without_requiring_a_node ... ok
test node_discovery_keeps_node_identity_errors_and_access_checks ... ok
test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.10s
Running tests/pep_item_order.rs (target/debug/deps/pep_item_order-ab67e6702f7b8148)
running 2 tests
test native_prosody_orders_retained_pep_items_newest_first ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test first_pep_item_is_current_device_list_even_with_retained_old_items ... ok
test result: ok. 1 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.10s
Running tests/preauth.rs (target/debug/deps/preauth-879f01cf0315d06a)
running 10 tests
test duplicate_or_wrong_namespace_tokens_do_not_qualify ... ok
test unknown_tokens_do_not_create_invite_stores_and_disabled_accounts_cannot_issue ... ok
test standard_adhoc_command_returns_contact_uri ... ok
test concurrent_redemption_has_exactly_one_winner ... ok
test prosody_numeric_expiry_is_consumed_and_other_entries_preserved ... ok
test unknown_client_token_is_preserved_on_remote_and_pending_delivery ... ok
test identity_scope_does_not_burn_on_wrong_sender_or_leak_to_prosody ... ok
test invitations_expire_are_single_use_and_owner_scoped ... ok
test valid_token_autoapproves_and_sends_reciprocal_request ... ok
test local_invitation_updates_both_rosters_without_granting_reverse_subscription ... ok
test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
Running tests/preauth_native.rs (target/debug/deps/preauth_native-bc3fe2eaa9595f26)
running 1 test
test native_prosody_invitation_tokens_roundtrip ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/pubsub_native.rs (target/debug/deps/pubsub_native-e39eafdcc3aee56a)
running 1 test
test native_prosody_pep_reads_rust_and_rust_reads_native ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/pubsub_persistence.rs (target/debug/deps/pubsub_persistence-fa3f4fe295d50d65)
running 18 tests
test modern_bookmarks_notify_legacy_capability ... ok
test native_string_max_items_satisfies_numeric_publish_precondition ... ok
test configurable_limits_component_creation_and_publisher ... ok
test configure_requires_owner ... ok
test capability_discovery_replays_and_filters_notifications ... ok
test nonpersistent_items_stay_in_memory_and_can_be_made_persistent ... ok
test open_model_and_notifications ... ok
test full_jid_block_applies_to_reads_subscription_replays_and_events ... ok
test reads_prosody_legacy_fixture ... ok
test publish_options_conflict_is_recoverable_and_preserves_item ... ok
test pep_persists_namespaces_and_enforces_owner ... ok
test roster_presence_access_and_foreign_subscription_denied ... ok
test remote_unavailable_is_scoped_to_addressed_owner_and_cancels_pending ... ok
test subscription_options_disable_events_and_require_subscriber ... ok
test remote_caps_replay_and_open_node_privacy_revoke ... ok
test payload_policy_applies_to_subscription_and_caps_replays ... ok
test native_notification_fields_and_retract_policy_are_independent ... ok
test component_default_retention_matches_prosody_twenty_items ... ok
test result: ok. 18 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.21s
Running tests/push.rs (target/debug/deps/push-7169ca8cf36ed529)
running 7 tests
test native_push_body_lookup_excludes_extensions ... ignored, requires PROSODY_REFERENCE_SOURCE and PROSODY_REFERENCE_LUA
test foreign_account_cannot_register ... ok
test queue_coalesces_and_importance_matches_native ... ok
test push_summary_never_copies_foreign_namespace_body ... ok
test reenable_cancels_old_errors_and_failure_counts_are_per_account ... ok
test stable_client_registration_and_targeted_notification ... ok
test registrations_notifications_and_authenticated_errors ... ok
test result: ok. 6 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.09s
Running tests/reference_prosody.rs (target/debug/deps/reference_prosody-d1d036709248a3eb)
running 1 test
test real_prosody_storage_and_auth_roundtrip ... ignored, requires native supplied Prosody source; run scripts/prosody_compat/verify.sh
test result: ok. 0 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/resource_sessions.rs (target/debug/deps/resource_sessions-bc36749ef517480a)
running 7 tests
test increment_skips_occupied_suffixes_and_preserves_sessions ... ok
test invalid_resume_owner_or_ack_does_not_evict_active_session ... ok
test kick_new_leaves_existing_session_unchanged ... ok
test random_conflicts_get_distinct_resources_for_same_owner ... ok
test replacement_revokes_hibernating_resume_and_survives_old_cleanup ... ok
test concurrent_default_binds_replace_atomically ... ok
test active_resume_preserves_state_and_replaces_transport_notifier ... ok
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running tests/sasl_accounts.rs (target/debug/deps/sasl_accounts-481c2d84ef36181f)
running 1 test
test disabled_legacy_and_unicode_accounts ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.61s
Running tests/storage_accounts.rs (target/debug/deps/storage_accounts-7e80a3e53eb6658b)
running 20 tests
test broken_roster_is_not_overwritten ... ok
test account_purge_refuses_symlink_store_without_touching_other_files ... ok
test inbound_subscription_requires_pending_to_grant_to ... ok
test blocklist_enforcement_api ... ok
test malformed_legacy_vcard_and_private_bookmarks_rejected ... ok
test malformed_roster_iq_never_mutates ... ok
test domain_roster_and_block_jid_normalization ... ok
test private_and_vcard_authorization ... ok
test purge_account_exact_files_preserves_others_and_extras ... ok
test reads_timestamp_blocklist_and_keeps_metadata ... ok
test privacy_migration_only_default_deny_jids ... ok
test roster_empty_name_and_foreign_group_ignored ... ok
test roster_preserves_subscription_and_metadata ... ok
test subscription_handshake_and_cancel ... ok
test bookmarks_private_pep_bidirectional_and_private ... ok
test legacy_bookmarks_respect_host_limit_and_read_over_256 ... ok
test legacy_migration_clears_source_after_success ... ok
test vcard_pep_conversion_and_avatar ... ok
test password_change_after_purge_never_recreates_account ... ok
test creation_and_purge_are_serialized ... ok
test result: ok. 20 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.40s
Running tests/storage_compat.rs (target/debug/deps/storage_compat-c3e634841a13e72d)
running 6 tests
test empty_namespace_preserved ... ok
test stanza_roundtrip ... ok
test mixed_binary_roundtrip ... ok
test path_and_atomic_update ... ok
test rejects_cycles_code_and_bad_files ... ok
test concurrent_updates_do_not_lose_entries ... ok
test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.03s
Running tests/tls_binding.rs (target/debug/deps/tls_binding-411070859d2a479a)
running 4 tests
test unknown_and_eddsa_algorithms_fail_closed ... ok
test malformed_der_and_pss_parameters_fail_closed ... ok
test ecdsa_uses_certificate_signature_hash ... ok
test rsa_signature_digest_and_weak_hash_upgrade ... ok
test result: ok. 4 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.22s
Running tests/tls_plus_network.rs (target/debug/deps/tls_plus_network-6c43ed36f67edd62)
running 2 tests
test disabling_plus_hides_bindings_and_accepts_scram_y_with_mechanisms_only_ssdp ... ok
test starttls_scram_plus_binds_real_tls_and_authenticates_ssdp_sasl1_and_sasl2 ... ok
test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 3.56s
Doc-tests rust_xmpp
running 0 tests
test result: ok. 0 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Checking rust-xmpp v0.7.4 (/workspace/scratch/362577cdf2e0/recovered/rust-xmpp)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.91s
Compiling rust-xmpp v0.7.4 (/workspace/scratch/362577cdf2e0/recovered/rust-xmpp)
Finished `release` profile [optimized] target(s) in 22.72s
PASS: integrated TCP roster/subscriptions, client IQ routing, CSI buffering/keepalive flush, MAM, blocking, OMEMO PEP, MUC, offline replay and SM resumption
PASS: graceful SIGTERM shutdown
PASS: independent SCRAM-SHA-1 over TLS, SASL1/SASL2, SSDP verification, server signatures and wrong-password rejection
PASS: independent SCRAM-SHA-256 over TLS, SASL1/SASL2, SSDP verification, server signatures and wrong-password rejection
PASS: Android TLS1.2 selector, TLS1.2/1.3 SCRAM SHA1/256 PLUS, SASL1/2, SSDP on/off and invalid binding rejection
PASS: JSON file logging, TLS/auth/bind correlation, rejection reasons, secret redaction and SIGHUP rotation
PASS: 20 TLS1.2/1.3 SASL1/2 cases: prepared PLAIN identities and canonical binds, invalid authz rejection, SCRAM abort/retry and active exchange restart
PASS: WSS SCRAM-SHA-256 SASL1/SASL2 with GS2 y, absent CB/PLUS, SSDP without CB separator, server signatures, bind and ping
PASS: HTTPS-only configured interfaces (127.0.0.1,::1), verified TLS, reproduced original Origin 403 then allowed Converse Origin 101, xmpp subprotocol, both WS paths, RFC 7395 open/features/close and private HTTP diagnostics
PASS: SASL2 Bind2 TLS flow, inline SM/CSI/Carbons, private random resource, malformed requests, authentication failure and fallback
PASS: bind2-disabled, SSDP=False, SCRAM-SHA-1/PLAIN success and wrong-password rejection
PASS: bind2-disabled, SSDP=True, SCRAM-SHA-1/PLAIN success and wrong-password rejection
PASS: bind2-enabled, SSDP=False, SCRAM-SHA-1/PLAIN success and wrong-password rejection
PASS: bind2-enabled, SSDP=True, SCRAM-SHA-1/PLAIN success and wrong-password rejection
PASS: sm-disabled, SSDP=False, SCRAM-SHA-1/PLAIN success and wrong-password rejection
PASS: sm-disabled, SSDP=True, SCRAM-SHA-1/PLAIN success and wrong-password rejection
PASS: enabled-False-registration-False
PASS: enabled-False-registration-True
PASS: enabled-True-registration-False
PASS: enabled-True-registration-True
PASS: Gajim domain/account discovery, both label catalogs, authenticated password changes, IBR registration gates and fresh logins
PASS: SASL2 inline SM active/EOF resume, authenticated owner/id/h checks, replay ordering, full JID, Bind2 fallback and malformed requests
PASS: TLS account/domain discovery with PEP and push enabled/disabled; real push enable, publish options, per-node and service-wide disable
PASS: TLS Monocles/Conversations PEP first-run, no-to publishing, owner config recovery, migrated metadata, device item selectors and restart persistence
PASS: Android first-item device-list parsing sees latest publish and replacement before and after restart
PASS: STARTTLS PEP replay/live diagnostics, legacy/OMEMO2, payloadless notifications with intact IQ payloads, and private values excluded
PASS: TLS invitation command discovery, preapproval, single-use mutual roster, replay denial, unknown preauth forwarding/offline pending, account isolation
PASS: TLS conflict_resolve=default, live and hibernating SM resources
PASS: TLS conflict_resolve=kick_old, live and hibernating SM resources
PASS: TLS conflict_resolve=kick_new, live and hibernating SM resources
PASS: TLS conflict_resolve=increment, live and hibernating SM resources
PASS: TLS conflict_resolve=random, live and hibernating SM resources
PASS: integrated WSS + HTTPS BOSH SASL/bind, CSI, inherited BOSH namespaces, roster, bidirectional chat, upload IQ/PUT/GET/reuse, graceful SM close and same-resource relogin under kick_new
{
"total_load_wall_seconds": 7.856,
"requested_resources": 500,
"authenticated_bound_resources": 500,
"connection_setup_concurrency": 50,
"setup_wall_seconds": 0.632,
"setup_latency": {
"samples": 500,
"median_ms": 57.745,
"p95_ms": 76.618,
"max_ms": 120.568
},
"ping_rounds": 10,
"ping_round_trip": {
"samples": 5000,
"median_ms": 14.512,
"p95_ms": 19.865,
"max_ms": 23.436
},
"accounts": 100,
"message_rounds": 10,
"messages_sent": 5000,
"messages_received": 5000,
"message_batch_seconds": 4.919,
"metrics_before": {
"rss_kib": 7328,
"cpu_seconds": 0.0,
"fd_count": 11
},
"metrics_connected": {
"rss_kib": 26316,
"cpu_seconds": 1.15,
"fd_count": 511
},
"metrics_after_workload": {
"rss_kib": 26872,
"cpu_seconds": 8.19,
"fd_count": 511
},
"metrics_two_seconds_after_disconnect": {
"rss_kib": 26872,
"cpu_seconds": 8.23,
"fd_count": 11
},
"sampled_peak_rss_kib": 26872,
"fd_delta_after_disconnect": 0,
"failures": [],
"scope": "One loopback host, 100 accounts with distinct resources, TLS+PLAIN, ping and directed messages; not a production benchmark or proof of no memory leaks.",
"mam": {
"archive_files": 100,
"records": 10000,
"expected_records": 10000
}
}
Compiling rust-xmpp v0.7.4 (/workspace/scratch/362577cdf2e0/recovered/rust-xmpp)
Finished `test` profile [unoptimized + debuginfo] target(s) in 0.54s
Running tests/csi_native.rs (target/debug/deps/csi_native-d041e21e009bbc52)
running 1 test
test native_prosody_csi_importance_matches ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
Running tests/muc_native.rs (target/debug/deps/muc_native-fc2050db5077d8e1)
running 1 test
test actual_prosody_muc_mam_reads_rust_and_writes_native_archive ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.07s
Running tests/pep_item_order.rs (target/debug/deps/pep_item_order-ab67e6702f7b8148)
running 1 test
test native_prosody_orders_retained_pep_items_newest_first ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 1 filtered out; finished in 0.13s
Running tests/preauth_native.rs (target/debug/deps/preauth_native-bc3fe2eaa9595f26)
running 1 test
test native_prosody_invitation_tokens_roundtrip ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s
Running tests/pubsub_native.rs (target/debug/deps/pubsub_native-e39eafdcc3aee56a)
running 1 test
test native_prosody_pep_reads_rust_and_rust_reads_native ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.14s
Running tests/push.rs (target/debug/deps/push-7169ca8cf36ed529)
running 1 test
test native_push_body_lookup_excludes_extensions ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 6 filtered out; finished in 0.00s
Running tests/reference_prosody.rs (target/debug/deps/reference_prosody-d1d036709248a3eb)
running 1 test
PROSODY_NATIVE_ROUNDTRIP_OK SHA-1
PROSODY_NATIVE_FINAL_OK SHA-1
PROSODY_NATIVE_ROUNDTRIP_OK SHA-256
PROSODY_NATIVE_FINAL_OK SHA-256
test real_prosody_storage_and_auth_roundtrip ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.08s
Finished `test` profile [unoptimized + debuginfo] target(s) in 0.07s
Running tests/federation_tls.rs (target/debug/deps/federation_tls-7d5f9ba5124f0a69)
running 1 test
test native_prosody_tls_external_bidirectional ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 2 filtered out; finished in 0.84s
+1
View File
@@ -0,0 +1 @@
PASS: HTTPS-only configured interfaces (127.0.0.1,::1), verified TLS, reproduced original Origin 403 then allowed Converse Origin 101, xmpp subprotocol, both WS paths, RFC 7395 open/features/close and private HTTP diagnostics
Loaded 100 of 235 files, more files were not shown because too many files have changed in this diff. Show more