- Offline CLI `upload-migrate OLD_CONFIG NEW_CONFIG --component HOST

[--execute]`: dry run по умолчанию, local ↔ S3 и S3 ↔ S3 без удаления
  source.
- Последовательное копирование с проверкой размера и полным SHA-256
  readback
  destination; конфликтующий объект не перезаписывается. Временный диск
  —
  максимум один переносимый файл дополнительно к постоянному
  destination.
- Durable migration journal позволяет продолжить прерванную операцию с
  теми
  же конфигурациями. Незавершённый или повреждённый journal блокирует
  startup;
  backend identity меняется только после проверки всех файлов.
- Native `uploads`/`upload_stats`, slots и JWT сохраняются;
  поддерживаются
  native локальные файлы без Rust completion sidecar. Миграция требует
  остановки RustXMPP и Prosody, использующих общий `data_path`.
- Multipart intent сохраняется до создания удалённого upload. Recovery
  находит потерянный UploadId через paginated listing и очищает только
  точный
  key принадлежащего slot. При сохранных metadata cleanup не зависит от
  lifecycle; lifecycle остаётся дополнительной защитой, а не гарантией.
- Перед completion сохраняется durable marker. Неопределённый результат
  completion при отсутствии подтверждённого объекта помещает только этот
  slot в quarantine: PUT 409, retention не удаляет его, maintenance
  повторяет
  сверку. Startup продолжается; сохраняется single-use семантика.
- Добавлены network regressions миграции и расширены проверки multipart
  recovery, потерянных ответов, отмены запросов и конфликтов
  destination.

Настройка, команды миграции, recovery и ограничения отката:
[docs/HTTP-UPLOAD.md](docs/HTTP-UPLOAD.md).

Команды, результаты и границы подтверждения, включая qualification
реального
object store и 10 GiB:
[docs/VALIDATION-0.7.9.md](docs/VALIDATION-0.7.9.md).

Итог: 265 тестов, нагрузка 500 TLS клиентов и native reference —
успешно.
Реальные 10 GiB через MinIO (описанный test adapter), 1280parts и полный
SHA-256
пройдены; подробности — [VALIDATION-0.7.9](docs/VALIDATION-0.7.9.md).
This commit is contained in:
wt committed 2026-10-20 17:06:14 +07:00
1 parent c260d7bab8
commit b30fc524d8
41 files changed
+5936 -152

No files matched your search

+6 -4
View File
@@ -8,7 +8,7 @@
| Область | Что реализовано | Существенные пределы |
|---|---|---|
| Конфигурация | Lua/JSON/YAML/YML/TOML, Include, глобальные и локальные области, наследование модулей | Lua VM ограничена; не все функции окружения конфигуратора Prosody доступны. Runtime обслуживает один VirtualHost и его компоненты |
| Хранилище | internal `.dat`, `.list`, бинарные строки, смешанные ключи Lua, атомарные записи, потоковые архивы, инвалидирование `.lidx` | SQL, external storage и произвольные драйверы не реализованы. Каталог блокируется между процессами Rust; Prosody в блокировке не участвует |
| Хранилище | internal `.dat`, `.list`, бинарные строки, смешанные ключи Lua, атомарные записи, потоковые архивы, инвалидирование `.lidx` | SQL, external storage остальных модулей и произвольные драйверы не реализованы; S3 uploads поддержаны. Каталог блокируется между процессами 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 | Нет доказательства совпадения каждой ошибки и порядка результатов при всех комбинациях запроса |
@@ -18,7 +18,7 @@
| 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 не прогонялся |
| HTTP upload | Несколько XEP-0363 components, Host/path isolation, local/S3 gateway, multipart/SigV4, streaming PUT, GET/HEAD/range/conditional, квоты/expiry, native metadata/JWT; offline local↔S3/S3↔S3 migration с SHA-256/resume; intent/exact-key recovery и quarantine; реальный 10 GiB PUT/GET через MinIO проверен | MinIO single-node с описанным netlink adapter тестовой среды; AWS/distributed deployment не проверены. Миграция требует остановки сервера и временного места под один файл; source сохраняется. Потерянные ownership metadata и неопределённый Complete требуют отдельного разбора; HTTP-UPLOAD.md |
| 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` пуст в предоставленном исходнике |
@@ -29,8 +29,10 @@
на противоречащий этому комментарий в исходном файле.
- Личная история настроена `never`, комнатная — на неделю. Очистка выполняется
периодически; append не переписывает весь архив.
- Лимит отдельного файла — 10 GiB, общий — 100 GiB. Сетевой тест проверяет
потоковую загрузку меньшего файла; это не проверка фактической загрузки 10 GiB.
- Лимит отдельного файла — 10 GiB, общий — 100 GiB. В 0.7.8 фактические
HTTPS PUT/GET 10 GiB с local backend проверены с совпадением SHA-256,
Range за 4 GiB и выборочным RSS. В 0.7.9 дополнительно проверены 10 GiB через
MinIO single-node с описанным adapter тестовой среды; см. VALIDATION-0.7.9.md.
- Структура `security_labels.default_policy/policies/classifications` отличается
от native `mod_seclabels`. С0.7.1 её точная schema может использоваться как
catalog metadata: выбранный default_policy и его classifications. ACL и
+251
View File
@@ -0,0 +1,251 @@
# HTTP File Upload (0.7.9)
XEP-0363 component `http_file_share` выдаёт slots через XMPP и обслуживает
HTTP PUT/GET/HEAD. Доступны локальные файлы и S3-compatible object storage.
В S3-режиме RustXMPP работает как gateway: клиент получает URL component,
а сервер подписывает запросы к bucket по AWS Signature Version 4. Это не
выдача клиенту S3 credentials или presigned bucket URLs.
## Несколько components
Каждый component сохраняет собственные XMPP JID, discovery, размер файла,
квоты, slots, JWT secret, backend и HTTP mount. HTTP-маршрут выбирается по
`Host` и `http_paths.file_share`. Можно использовать разные HTTP hosts с
одинаковым mount либо один host с непересекающимися mounts:
```lua
-- Добавьте к существующей конфигурации; сохраните VirtualHost, TLS и модули.
Component "upload.example.org" "http_file_share"
http_host = "files.example.org";
http_paths = { file_share = "/personal"; }
http_file_share_backend = "local";
http_file_share_size_limit = 10737418240; -- 10 GiB
http_file_share_daily_quota = 21474836480;
http_file_share_global_quota = 107374182400;
http_file_share_expires_after = "7d";
Component "media.example.org" "http_file_share"
http_host = "files.example.org";
http_paths = { file_share = "/media"; }
http_file_share_backend = "local";
http_file_share_size_limit = 104857600;
```
Для одного effective HTTP host одинаковые или вложенные mounts отвергаются
при startup с сообщением `ambiguous HTTP upload components`, содержащим
имена обоих components и пути. Например, `/files` конфликтует с `/files`
и `/files/private`; `/files` и `/files-other` не конфликтуют. Mount `/`
пересекается со всеми mounts этого host. Hosts сравниваются без учёта
регистра; порт в HTTP Host не выбирает отдельный component.
WebSocket, BOSH и `http_altconnect` используют общие HTTP listeners вместе
с uploads. Их маршруты обрабатываются соответствующим middleware. Выделяйте
uploads собственные mounts, чтобы действующие transport/discovery endpoints
не перекрывали публичные адреса загрузки.
`http_external_url` задаёт публичную базу, сохраняя внутренний mount.
`http_file_share_base_url` явно переопределяет полный публичный upload prefix.
При reverse proxy настройте переписывание пути и передавайте правильный Host:
одного изменения рекламируемого URL недостаточно для настройки proxy.
Пример конфигурации proxy — [HTTP-PROXY.md](HTTP-PROXY.md).
## S3-compatible backend
```lua
Component "upload-s3.example.org" "http_file_share"
http_host = "files.example.org";
http_paths = { file_share = "/objects"; }
http_external_url = "https://files.example.org";
http_file_share_backend = "s3";
http_file_share_size_limit = 10737418240;
http_file_share_daily_quota = 21474836480;
http_file_share_global_quota = 107374182400;
http_file_share_s3 = {
endpoint = "https://objects.example.org";
bucket = "xmpp-uploads";
region = "us-east-1";
access_key_env = "RUSTXMPP_S3_ACCESS_KEY";
secret_key_env = "RUSTXMPP_S3_SECRET_KEY";
-- Только для временных credentials:
-- session_token_env = "RUSTXMPP_S3_SESSION_TOKEN";
key_prefix = "upload-s3";
}
```
Переменные должны присутствовать в окружении процесса сервера при startup,
например через защищённый EnvironmentFile службы. Их отсутствие вызывает
ошибку startup. Доступны и строковые поля `access_key`, `secret_key`,
`session_token`; соответствующее поле `*_env` имеет приоритет. Credentials
не включаются в сохранённую backend identity.
Endpoint использует path-style bucket addressing. HTTPS требуется для
нелокальных S3 endpoints. HTTP допускается только для `localhost` или
loopback IP, например `http://127.0.0.1:9000` в изолированном тесте.
Production endpoint должен иметь сертификат, доверенный системным root CAs.
Не путайте HTTPS object-store endpoint с публичным HTTPS upload URL:
оба соединения настраиваются независимо. Для публичных клиентов используйте
HTTPS listener либо существующий TLS reverse proxy с HTTPS advertised URL.
Bucket должен разрешать создание multipart upload, загрузку частей, завершение,
abort, `ListMultipartUploads` (`s3:ListBucketMultipartUploads`), HEAD/GET
и удаление объектов для retention.
Перед CreateMultipartUpload сервер сохраняет intent для принадлежащего ему
slot. Если ответ с UploadId потерян, recovery перечисляет multipart uploads
с pagination и прерывает только uploads с полным совпадением object key;
соседние keys с тем же prefix не затрагиваются. Сохранных native metadata,
подтверждающих владение slot, достаточно и для legacy records без intent или
UploadId. Cleanup такого slot не зависит от bucket lifecycle.
Lifecycle `AbortIncompleteMultipartUpload` рекомендуется как дополнительная
защита, например при утрате metadata или внешних orphan uploads. Он не даёт
абсолютной гарантии очистки; scope, сроки и выполнение правил зависят от
object store. Не запускайте внешних writers с теми же slot keys: cleanup
предполагает исключительное владение ими.
Gateway передаёт файл частями по 8 MiB и ограничивает число одновременно
активных S3 uploads восемью на component. Файл целиком не буферизуется в памяти и не
сохраняется во временный локальный файл. Служебная память, TLS/HTTP buffers
и буфер текущего входящего frame добавляются к памяти частей; ограничение
не является гарантией точного общего RSS. Ограничение размера применяется
и к chunked PUT, а квоты учитывают зарезервированные slots component.
## Metadata, recovery и смена credentials
XMPP upload metadata остаются в native хранилище `uploads` и `upload_stats`
в `data_path`. S3 заменяет хранение содержимого файлов, а не XMPP metadata.
Сохраняйте `data_path` вместе с bucket: один bucket не восстанавливает
владельцев, quotas и slots. В `rust_uploads.json` сохраняются служебное
состояние slots, completion, multipart intent и незавершённые UploadId;
файл не заменяет native архив. `rust_upload_backend.json` фиксирует backend identity.
Перед открытием listeners сервер восстанавливает незавершённые S3 records:
прерывает принадлежащие slot multipart uploads, затем проверяет удалённый
объект и размер и учитывает уже завершённый commit. Ошибка обязательного
recovery, кроме quarantine completion, останавливает startup. Перед
CompleteMultipartUpload сохраняется `completion_attempted`. Если результат
completion неизвестен и после cleanup
HEAD ещё возвращает 404, только этот slot остаётся в quarantine: PUT возвращает
409, retention его не удаляет, остальные slots и startup продолжают работу.
Maintenance каждые 60 секунд повторяет сверку; подтверждённый объект
ожидаемого размера снимает quarantine и завершает recovery. Неопределённый
результат требует сверки оператором с object store, если объект так и не
появился. Корректный явный S3 completion error допускает повтор после
reconciliation; network/timeout или некорректный ответ не разрешают
перезапись возможного позднего commit. Ошибки обязательных listing/HEAD
по-прежнему останавливают startup.
PUT остаётся single-use; повторная запись завершённого slot возвращает conflict.
При наличии slots нельзя незаметно переключить local/S3 backend, endpoint,
bucket или prefix: startup отвергает изменение backend identity. Добавление
S3 к существующим local slots также требует явной миграции через offline CLI,
описанный ниже; не удаляйте identity-файл для обхода проверки.
Для rotation S3 credentials обновите переменные окружения/секреты службы
и перезапустите сервер, сохранив endpoint, bucket и prefix. Новая identity
credentials не содержит, поэтому их rotation не считается миграцией.
Сначала обеспечьте новым credentials доступ к существующим объектам и
multipart cleanup. Rotation `http_file_share_secret` — отдельная операция:
смена JWT signing secret делает ранее выданные PUT tokens недействительными.
## Offline миграция local ↔ S3 и S3 ↔ S3
Остановите RustXMPP и Prosody, использующие этот `data_path`, и сохраните
резервную копию metadata и содержимого backend. Подготовьте две полные
конфигурации: `current.cfg.lua` описывает действующий source, `new.cfg.lua` —
destination. Обе должны содержать тот же VirtualHost, upload component,
`data_path`, HTTP/HTTPS ports, публичные маршруты и `http_file_share_secret`;
меняйте только параметры backend. Credentials обоих S3 хранилищ должны быть
доступны CLI; используйте отдельные переменные окружения для source и
destination. Для каждого component выполняется отдельная команда:
```sh
# План: без копирования объектов, изменения journal или backend identity.
rust-xmpp upload-migrate current.cfg.lua new.cfg.lua --component upload.example.org
# Копирование и проверка; при остановке повторите эту же команду.
rust-xmpp upload-migrate current.cfg.lua new.cfg.lua --component upload.example.org --execute
# После сообщения Migration committed запускайте сервер с новой конфигурацией.
rust-xmpp serve new.cfg.lua --experimental
```
Команда захватывает exclusive lock `data_path`, исключающий параллельный
RustXMPP или другую миграцию; Prosody этот lock не использует. Source и
destination должны иметь разные backend identities. Поддерживаются local →
S3, S3 → local и S3 → другой endpoint, bucket или prefix. Перед миграцией
восстановите незавершённые uploads исходным сервером. Dry run проверяет
конфигурации и metadata и определяет объекты для копирования; полный SHA-256
рассчитывается при `--execute`.
Копируются завершённые файлы, включая native файлы без Rust completion
sidecar и файлы, опубликованные перед сбоем записи completion cache.
Отсутствующие незавершённые reservations остаются в metadata. Native
`uploads`, `upload_stats`, владельцы, slots и JWT не переписываются.
Source objects никогда не удаляются. Для каждого файла CLI проверяет размер,
считает SHA-256 source и повторно читает destination для сверки; ETag не
используется как checksum. Существующий destination с другим содержимым
вызывает отказ без перезаписи.
Миграция обрабатывает файлы последовательно через приватный временный файл:
нужно свободное место размером максимум в один переносимый файл дополнительно
к постоянному local destination. Память ограничена buffers частей, файл
целиком в RAM не загружается. После сбоя временный spool удаляется и текущий
файл читается заново; это возобновление по объектам, не по byte offset.
`rust_upload_migration.json` хранит identities, fingerprint metadata,
checksums и прогресс. Повторный запуск с теми же конфигурациями сверяет source
и уже скопированные файлы, восстанавливает multipart cleanup и продолжает
работу. Backend identity переключается только после проверки всех объектов.
Незавершённый или повреждённый journal блокирует startup до offline recovery,
даже если component убран из новой конфигурации. Не удаляйте journal для
обхода барьера и не редактируйте metadata во время миграции.
Сохранённый source позволяет сверить данные и подготовить откат, но простая
подмена конфигурации после commit отвергается identity guard. Пока migration
не завершена, продолжите её с теми же параметрами. После commit выполняйте
обратную offline миграцию с текущей конфигурацией как source и прежней как
destination. Новые uploads могли появиться только в destination; откат к
старой резервной копии без их переноса потеряет эти изменения. Конфликтующие
объекты обратная миграция также не перезаписывает. Удаление прежнего source
после проверки результата — отдельное решение оператора.
## Проверки и границы подтверждения
`tests/upload_multi_network.py` проверяет настоящий binary через TLS XMPP
и HTTP: отдельные/shared hosts, discovery и IQ slots, квоты, изоляцию JWT,
PUT/GET и restart, а также композицию с WS/BOSH/host-meta и отказ при
неоднозначных mounts.
`tests/upload_large_network.py` выполняет opt-in передачу полного файла по
проверяемому HTTPS с local backend и записывает измерения в JSON. Для default
10 GiB необходимо более 10 GiB свободного места. Это отдельная проверка от S3
fixture, и её результат не подтверждает передачу 10 GiB в object store.
`tests/upload_s3_network.py` использует независимый локальный HTTP fixture,
который повторно вычисляет SigV4 и реализует S3 protocol для проверки gateway,
multipart, чтения и обработки ошибок. Это не qualification на AWS S3,
MinIO или другом production object store. Их совместимость требует отдельного
запуска в целевой среде.
`tests/upload_migration_network.py` проверяет offline миграцию с независимым
SigV4 fixture: local ↔ S3, S3 ↔ S3, dry run, прерывание/возобновление,
checksums, сохранность source и native metadata, блокировку startup.
`tests/upload_minio_network.py` — opt-in запуск с настоящим MinIO executable.
По умолчанию он передаёт 10 GiB через HTTPS gateway в MinIO, проверяет полный
GET и SHA-256, multipart, Range, restart и crash cleanup. Малый `--size`
проверяет smoke path, но не подтверждает передачу большого объекта.
Итоговые команды, результаты и измерения release validation публикуются в
[release validation report](VALIDATION-0.7.9.md). Предыдущий результат 10 GiB
с local backend, SHA-256, Range за 4 GiB и выборочным RSS опубликован в
[отчёте 0.7.8](VALIDATION-0.7.8.md); сам по себе он не подтверждает S3 backend.
В 0.7.9 фактические 10 GiB HTTPS PUT/GET через MinIO успешно пройдены: 1280
multipart parts, SHA-256 совпал, Range/restart/crash cleanup проверены.
MinIO собран из upstream release с test-only fallback перечисления интерфейсов
на loopback при EPERM; S3/auth/storage code не менялся. Точный diff и hashes
в VALIDATION-0.7.9.md. Немодифицированный MinIO/AWS/distributed deployment этим
не сертифицируются. MINIO_BINARY перед verify-local.sh включает opt-in 10 GiB
прогон; для обычной среды используйте собственный MinIO executable.
+14 -7
View File
@@ -14,7 +14,7 @@ b1018e1b279c89f6cf14b4017e4f1b14e9165afef2f668cec6ac8bbe0c710d85 scripts/integr
e08ac6136cce27cda2ddbd510da0f25750766ab0150a9f4b8f87c953276d16e9 scripts/prosody_compat/oracle.lua
2c7a2c946885205e9df38b97305073a8ac72f58ac8ff84fc6f9af320c35bbc96 scripts/prosody_compat/verify.sh
1b9ed063daf3e0320819b4fe0135c96dd27e49877044aa2f5093b8ab4fbda41d scripts/smoke.py
4d9702d73fab7c20f1e5b9798c0f53c6e1e77aab15074c1c8118df9ae5abd795 scripts/verify-local.sh
0b2f6209a36fe9783b83d43396da26862c89cad1da1483ae49a79800e31982c1 scripts/verify-local.sh
a2e47f547ab9349f84ee6c4f8e51c147b7110b41a82c17cdb938027a84d82ef3 src/account_modules.rs
5637f816586f0613b83e14d0ed478bd539f325b70ccbfc9fdf893adbe494453d src/admin.rs
89d7e29d8f8daab614c9c836864b166fdaa324ca035c2d3d5f95639c24b2a9e1 src/archive.rs
@@ -25,28 +25,30 @@ e15b079a420227ee59e3b7ac305783c51eb59d76a8fb5dd12760547b0f812107 src/auth.rs
1c8aa5cb816a32a0f9f24589ac00beba27544a83c3d9aad771523a1d1cbcd4c8 src/extras.rs
dca8959effb123b94e1fbd42c561a79c721178c4b612a004db9f9fccb3b8950d src/federation.rs
46a59bc6689f0931670547e26b3dc4beae3aa210eee1aae832070925b377499c src/http_altconnect.rs
43ab37be4b6ad41e51c3918c8806d91650c1ee2b62977caade639920abf7aa44 src/http_config.rs
d561a6bd4db079cfb1ef3bb7ae75f23e6080c5d5705583774f6c5f1ca6ed4420 src/http_config.rs
3fa73ae129fe552bd7de7afca0617a1c18bf4d3b36a39023bfec036bca17ffc5 src/http_proxy.rs
9366d1aaa7e13d06cf7547cfb1e10461091ba876413927e0ad49df41c3661e6f src/http_service.rs
c4fd5046b55510f87a1c87e2b293500f0a01b76f22dacfa6d145e857e857fc09 src/http_transport.rs
9f27d509f7e58467c92e1f7ac9175deeb7347c61a45664bb35d17ed4ad0d0d0e src/lib.rs
f4f87f5c20cb0602d803e86a22c209756c3b1f22c532743ec7e0dbf5bb174a0e src/http_service.rs
c604a0a764ffac6bae0c9aa15c9ef7022d35cb1f8c9159eb66257114445621c5 src/http_transport.rs
c5b7bcc0d08e48fd3805d6571428bb83b7fdc6f6e23a65bf689f079ad87bc32a src/lib.rs
a21e1119ea0271b63935e92eb106ab6076f0035e6d3a06c21a352f152b9b37db src/logging.rs
58ce2a9daa36ac26b39c8f263a16f4fa8cc4e57c91bbbf5b24a6aad3f1a326e0 src/lua.rs
85616b8aa8e6fc7ac9aeaa75f256463ee9c2527a590832b243481720caabbe42 src/main.rs
a264e2765a31c8c096462551aca229530cad356e39e338370d1a0bdd97860680 src/main.rs
71d5d185900b9cde190e10e2f28371cd5042d98b5900b4385d823f724234fced src/mam.rs
0f780d95523b41c4ae242bd4a1fb6b65ff57826dca6d23ac73a1a1459609ec0a src/muc.rs
d8263eb28f5cdff362512a6b13217aa8f7574f4a3d54b7bcb6ba7930f8c353d8 src/muc_history.rs
4c151ffcdc36e4a3e680f859d4dc7ba16b0162d4f1fe6fb470df4c5e21197e5a src/muc_recovery.rs
3252884252158e1c4bd58922b97733f434c7d28baf059e63267632a3290f660e src/object_store.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
10f24a2e8e776c7aa2475913e15b01b0f4e57f7a9de92660bafeddd912101d26 src/server.rs
894f11389bfc3fddc3508396d106146261376999f7adcef5a049458f6b4028cf src/sessions.rs
71d7ce1036a091d8c27016ea7ce4cffedf904dfca9d1cc4891b7dc66a1e06a4e src/storage.rs
462b00edb2c1e02dd34524bafe4f82b5ef902028b44310ba31b085d31f4dc2aa src/tls_binding.rs
a78592aa79d8f01c22af1457d0c3f5922863ccd3e8ebb1aa05e043cc44579b8a src/upload_migration.rs
f9b023565711e0217238b53fb678c5fb14849cdcd2efcd0fce249018274fad69 src/wire.rs
b4eb7a230570dfde0fd0d301a6ace36559a5eae3e1402e42c76f014f61739c24 tests/_wire_client.py
45613ad6c53087a50c6c3a7969b30783578c334499bc6baceadb2d18b0b3ea4e tests/admin_socket.rs
@@ -112,4 +114,9 @@ d8882b8aabd6ff603c81fbbc259eefa68772afb2b3eec2e003ac29efd65d146b tests/sasl_web
5c38afd5f77b5774552d12c461902ffaae21de11735560c6f0088e3dda8afa58 tests/storage_compat.rs
8724991fdf22471952cf1a0fac863abe837069c93d3c8d2fa751af4f6bbc3e38 tests/tls_binding.rs
5bea9b5546d3a6ae4fe78d17acbc3f6e6a1d5e1d13b32f2aa88d0e320892b7c5 tests/tls_plus_network.rs
720abdef4c9af261b0e6ac7becb0f9a73e879ba13daceabb14cf8e91be2e0e7d tests/upload_large_network.py
ba7811c8d8a22692059b2224c563023553aac63d275a56a93716fd94075bfa2f tests/upload_migration_network.py
775e14f8f08fa8a419941f7795379cc555bda79ae07373a713fab8f371d21985 tests/upload_minio_network.py
c00cd2b123e8299e5e71e55a776dc7f8ac6403dd749eab11bfcb18d41fa80934 tests/upload_multi_network.py
8ec91d74a0aaaf654b70e873e5c7f7fd28cd60131de6226aae7b0de83d917a8e tests/upload_s3_network.py
e454204af26d5a356cb6aa838c3b46f4d13c552b5bd36d6b01bcd6f604821ff2 tests/wss_interop.py
+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.
+33
View File
@@ -0,0 +1,33 @@
# Проверка 0.7.8
Linux x86_64, Rust 1.99.1, 2026-10-20. Полный лог: validation-logs-0.7.8/verify.txt.
Структурированный отчёт: validation-results.json; large.json содержит измерения реальной передачи.
| Проверка | Результат |
|---|---|
| cargo test --locked | 262 passed, 0 failed, 11 ignored |
| fmt / Clippy all-targets -D warnings / release | Успешно |
| Несколько upload components | Hosts/paths, discovery, quota/JWT/object isolation, restart, WS/BOSH/host-meta composition, ambiguous mount rejection — успешно |
| S3 wire | Независимая проверка SigV4, multipart, ошибки/abort/retry, ambiguous completion, SIGKILL и startup recovery, range/conditional/expiry — успешно |
| Реальный HTTPS local upload | 10737418240 байт PUT и полный GET, SHA-256 совпал; реально выделены дисковые блоки |
| Большой файл | PUT 14.39 с; GET 69.22 с; Range за 4 GiB, HEAD, reuse409, quota — успешно |
| Выборочный RSS каждые 50 мс | Сервер 17.24 MiB; клиент 20.19 MiB |
| Native reference | 8 module/storage + 1 TLS/SASL EXTERNAL federation — успешно |
| Нагрузка | 100 аккаунтов, 500 TLS клиентов, 5000 ping, 5000 сообщений, 10000 MAM; failures=[] |
Команда полного прогона: XMPP_LOAD_CHECK=1 bash scripts/verify-local.sh с native
reference env согласно scripts/prosody_compat/README.md.
Большой файл отдельно: python3 tests/upload_large_network.py --binary target/release/rust-xmpp.
Его 10 GiB временные данные удалены после проверки. Ошибка PID namespace в первом
измерителе RSS исправлена; итоговый прогон выполнен повторно с ненулевыми измерениями.
RSS — выборочный максимум, а не гарантия точного пика при любой нагрузке.
S3 проверен на независимом локальном HTTP protocol fixture; AWS/MinIO и реальная
передача 10 GiB в object store не проверены. Сервер использует multipart 8 MiB,
до восьми активных uploads на component. Для остаточных multipart sessions в
окне аварии до сохранения UploadId требуется bucket lifecycle
AbortIncompleteMultipartUpload. Настройка и ограничения: HTTP-UPLOAD.md.
Полная совместимость с Prosody и работа настоящих клиентов в production этим
прогоном не заявляются. Остальные ограничения: COMPATIBILITY.md. После финального
прогона исходники сервера не изменялись; менялись только отчёты и упаковка.
+59
View File
@@ -0,0 +1,59 @@
# Проверка 0.7.9
Linux x86_64, Rust 1.99.1, 2026-10-20. Полный итоговый прогон:
validation-logs-0.7.9/verify.txt. Структурированный отчёт: validation-results.json.
| Проверка | Результат |
|---|---|
| cargo test --locked | 265 passed, 0 failed, 11 ignored |
| fmt / Clippy all-targets -D warnings / release | Успешно |
| Upload migration | local → S3 A → S3 B → local, SHA-256, прежние URL/JWT/HEAD, native metadata/source, dry run, lock, прерывание/resume и startup barrier — успешно |
| S3 recovery | Intent до initiation, отсутствие UploadId, pagination и exact-key cleanup без удаления чужого prefix, ambiguous completion, quarantine и late commit — успешно |
| Конкурентный PUT | Регрессия: захват слота читает свежие completion/quarantine flags атомарно — успешно |
| Реальная передача через MinIO | 10,737,418,240 байт PUT и полный GET; SHA-256 совпал; объект: 1280 multipart parts |
| Время большого файла | PUT 48.453 с; GET 13.710 с |
| Выборочный RSS каждые 50 мс | Rust 101.14 MiB; клиент 23.21 MiB; MinIO 475.84 MiB |
| MinIO дополнительные проверки | Range за 4/5 GiB и хвост, restart/read/reuse409, SIGKILL после сохранённой части и abort при recovery — успешно |
| Native reference | 8 module/storage + 1 TLS/SASL EXTERNAL federation — успешно |
| Нагрузка | 100 аккаунтов, 500 TLS клиентов, 5000 ping,5000 сообщений, 10000 MAM; failures=[] |
Итоговая сборка SHA-256: 24c0dca637e7ce4e238ef6becad16bb5a18a33546554b0eecf310fd8927f021c. MinIO report автоматически записывает
тот же hash. Большая передача повторена после последних изменений сервера.
Полный прогон включает исправление гонки устаревшего snapshot при захвате слота.
Отдельные первые прогоны нашли и помогли исправить нестабильный fingerprint
миграции и пропуск немедленного reconciliation под ещё активным claim.
Финальный результат не содержит этих ошибок. RSS — выборочный максимум, а не
гарантия точного пика для любой нагрузки. Временные 10 GiB объекты после проверки удалены.
## Точная граница MinIO проверки
Использован настоящий upstream MinIO RELEASE.2025-04-22T22-12-26Z, собранный
Go1.24.3 из официального GitHub archive. Немодифицированная сборка в этой среде
не запускается: net.Interfaces/netlinkrib запрещён с EPERM. Тестовая сборка
добавляет только fallback на 127.0.0.1 для этой ошибки перечисления интерфейсов.
S3, authentication, multipart и storage code не изменены. Это не qualification
немодифицированного MinIO в обычной production среде.
Точный diff, hashes исходного архива, обеих сборок и adapter:
validation-logs-0.7.9/minio-sandbox-compat.patch и minio-provenance.json.
Полный результат и 1280-part ETag: validation-logs-0.7.9/minio.json.
Проверен single-node loopback с HTTP к MinIO и CA-verified HTTPS к gateway.
AWS account, distributed MinIO и production сеть не проверены.
## Повторение
Полный прогон: XMPP_LOAD_CHECK=1 bash scripts/verify-local.sh с native env
согласно scripts/prosody_compat/README.md. В этой среде дополнительно применены
CARGO_INCREMENTAL=0 CARGO_PROFILE_DEV_DEBUG=0 CARGO_PROFILE_TEST_DEBUG=0.
MinIO отдельно: python3 tests/upload_minio_network.py --binary target/release/rust-xmpp
--minio /path/to/minio --report /tmp/minio-report.json. При test adapter передайте
--minio-compat-patch /path/to/patch, чтобы он попал в результат. Можно задать
MINIO_BINARY перед verify-local.sh для opt-in передачи10 GiB; нужны место и MinIO executable.
Инструкции migration/recovery: HTTP-UPLOAD.md. Source всегда сохраняется;
незавершённая миграция блокирует startup, неопределённый Complete quarantines
только свой slot. Потеря ownership metadata не позволяет безопасно удалить
произвольные чужие multiparts; bucket lifecycle остаётся дополнительной защитой.
Сетевой сбой с HEAD404 не выдаётся за доказанную неудачу удалённого commit.
Полная замена Prosody, настоящие production клиенты и DNSSEC этим не заявляются;
общие границы — COMPATIBILITY.md.
+51 -23
View File
@@ -1,31 +1,59 @@
# Проверка0.7.7
# Проверка 0.7.9
Linux x86_64, Rust1.99.1,2026-10-20. Итоговый лог:
validation-logs-0.7.7/verify.txt; структурированный итог — validation-results.json.
Linux x86_64, Rust 1.99.1, 2026-10-20. Полный итоговый прогон:
validation-logs-0.7.9/verify.txt. Структурированный отчёт: validation-results.json.
| Проверка | Результат |
|---|---|
| cargo test --locked | 262 passed,0 failed,11 ignored |
| cargo test --locked | 265 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=[] |
| Upload migration | local → S3 A → S3 B → local, SHA-256, прежние URL/JWT/HEAD, native metadata/source, dry run, lock, прерывание/resume и startup barrier — успешно |
| S3 recovery | Intent до initiation, отсутствие UploadId, pagination и exact-key cleanup без удаления чужого prefix, ambiguous completion, quarantine и late commit — успешно |
| Конкурентный PUT | Регрессия: захват слота читает свежие completion/quarantine flags атомарно — успешно |
| Реальная передача через MinIO | 10,737,418,240 байт PUT и полный GET; SHA-256 совпал; объект: 1280 multipart parts |
| Время большого файла | PUT 48.453 с; GET 13.710 с |
| Выборочный RSS каждые 50 мс | Rust 101.14 MiB; клиент 23.21 MiB; MinIO 475.84 MiB |
| MinIO дополнительные проверки | Range за 4/5 GiB и хвост, restart/read/reuse409, SIGKILL после сохранённой части и abort при recovery — успешно |
| Native reference | 8 module/storage + 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 этого модуля.
Итоговая сборка SHA-256: 24c0dca637e7ce4e238ef6becad16bb5a18a33546554b0eecf310fd8927f021c. MinIO report автоматически записывает
тот же hash. Большая передача повторена после последних изменений сервера.
Полный прогон включает исправление гонки устаревшего snapshot при захвате слота.
Отдельные первые прогоны нашли и помогли исправить нестабильный fingerprint
миграции и пропуск немедленного reconciliation под ещё активным claim.
Финальный результат не содержит этих ошибок. RSS — выборочный максимум, а не
гарантия точного пика для любой нагрузки. Временные 10 GiB объекты после проверки удалены.
Команда: XMPP_LOAD_CHECK=1 bash scripts/verify-local.sh с native reference env
согласно scripts/prosody_compat/README.md. Точный скрипт включает новый wire test.
## Точная граница MinIO проверки
Рабочие конфиги/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.
Использован настоящий upstream MinIO RELEASE.2025-04-22T22-12-26Z, собранный
Go1.24.3 из официального GitHub archive. Немодифицированная сборка в этой среде
не запускается: net.Interfaces/netlinkrib запрещён с EPERM. Тестовая сборка
добавляет только fallback на 127.0.0.1 для этой ошибки перечисления интерфейсов.
S3, authentication, multipart и storage code не изменены. Это не qualification
немодифицированного MinIO в обычной production среде.
Точный diff, hashes исходного архива, обеих сборок и adapter:
validation-logs-0.7.9/minio-sandbox-compat.patch и minio-provenance.json.
Полный результат и 1280-part ETag: validation-logs-0.7.9/minio.json.
Проверен single-node loopback с HTTP к MinIO и CA-verified HTTPS к gateway.
AWS account, distributed MinIO и production сеть не проверены.
## Повторение
Полный прогон: XMPP_LOAD_CHECK=1 bash scripts/verify-local.sh с native env
согласно scripts/prosody_compat/README.md. В этой среде дополнительно применены
CARGO_INCREMENTAL=0 CARGO_PROFILE_DEV_DEBUG=0 CARGO_PROFILE_TEST_DEBUG=0.
MinIO отдельно: python3 tests/upload_minio_network.py --binary target/release/rust-xmpp
--minio /path/to/minio --report /tmp/minio-report.json. При test adapter передайте
--minio-compat-patch /path/to/patch, чтобы он попал в результат. Можно задать
MINIO_BINARY перед verify-local.sh для opt-in передачи10 GiB; нужны место и MinIO executable.
Инструкции migration/recovery: HTTP-UPLOAD.md. Source всегда сохраняется;
незавершённая миграция блокирует startup, неопределённый Complete quarantines
только свой slot. Потеря ownership metadata не позволяет безопасно удалить
произвольные чужие multiparts; bucket lifecycle остаётся дополнительной защитой.
Сетевой сбой с HEAD404 не выдаётся за доказанную неудачу удалённого commit.
Полная замена Prosody, настоящие production клиенты и DNSSEC этим не заявляются;
общие границы — COMPATIBILITY.md.
+35
View File
@@ -0,0 +1,35 @@
{
"status": "passed",
"requested_bytes": 10737418240,
"python_chunk_bytes": 1048576,
"transport": "verified TLS HTTPS",
"storage": "local streaming file",
"rss_sample_interval_seconds": 0.05,
"free_disk_before_bytes": 14037065728,
"max_rss_bytes": {
"server": 18079744,
"client": 21168128
},
"rss_proc_status_paths": {
"server": "/proc/68012/status",
"client": "/proc/self/status"
},
"put_bytes": 10737418240,
"put_seconds": 14.389516601999276,
"sha256": "e4c296c41d3a9605f0348961e41ed835b5f42c220751ed2269a726951546c935",
"stored_bytes": 10737418240,
"allocated_bytes": 10737422336,
"free_disk_after_put_bytes": 2734645248,
"head_status": 200,
"get_bytes": 10737418240,
"get_read_calls": 10241,
"get_seconds": 69.22072244599985,
"get_sha256": "e4c296c41d3a9605f0348961e41ed835b5f42c220751ed2269a726951546c935",
"range_status": 206,
"range_offset": 4294967289,
"reuse_status": 409,
"over_quota_condition": "not-acceptable",
"temporary_files_cleaned": true,
"free_disk_after_cleanup_bytes": 12774170624,
"total_seconds": 84.19309745400096
}
+52
View File
@@ -0,0 +1,52 @@
PUT: 3862953984/10737418240 bytes (736.8 MiB/s)
PUT: 7720665088/10737418240 bytes (736.2 MiB/s)
PUT: 10737418240/10737418240 bytes (724.1 MiB/s)
GET: 753926144/10737418240 bytes (143.6 MiB/s)
GET: 1443889152/10737418240 bytes (137.5 MiB/s)
GET: 2130706432/10737418240 bytes (135.3 MiB/s)
GET: 2915041280/10737418240 bytes (138.8 MiB/s)
GET: 3630170112/10737418240 bytes (138.3 MiB/s)
GET: 4347396096/10737418240 bytes (138.1 MiB/s)
GET: 5118099456/10737418240 bytes (139.3 MiB/s)
GET: 5929697280/10737418240 bytes (141.3 MiB/s)
GET: 6700400640/10737418240 bytes (141.9 MiB/s)
GET: 7456423936/10737418240 bytes (142.1 MiB/s)
GET: 8232370176/10737418240 bytes (142.6 MiB/s)
GET: 9137291264/10737418240 bytes (145.1 MiB/s)
GET: 10012852224/10737418240 bytes (146.8 MiB/s)
GET: 10737418240/10737418240 bytes (147.9 MiB/s)
{
"status": "passed",
"requested_bytes": 10737418240,
"python_chunk_bytes": 1048576,
"transport": "verified TLS HTTPS",
"storage": "local streaming file",
"rss_sample_interval_seconds": 0.05,
"free_disk_before_bytes": 14037065728,
"max_rss_bytes": {
"server": 18079744,
"client": 21168128
},
"rss_proc_status_paths": {
"server": "/proc/68012/status",
"client": "/proc/self/status"
},
"put_bytes": 10737418240,
"put_seconds": 14.389516601999276,
"sha256": "e4c296c41d3a9605f0348961e41ed835b5f42c220751ed2269a726951546c935",
"stored_bytes": 10737418240,
"allocated_bytes": 10737422336,
"free_disk_after_put_bytes": 2734645248,
"head_status": 200,
"get_bytes": 10737418240,
"get_read_calls": 10241,
"get_seconds": 69.22072244599985,
"get_sha256": "e4c296c41d3a9605f0348961e41ed835b5f42c220751ed2269a726951546c935",
"range_status": 206,
"range_offset": 4294967289,
"reuse_status": 409,
"over_quota_condition": "not-acceptable",
"temporary_files_cleaned": true,
"free_disk_after_cleanup_bytes": 12774170624,
"total_seconds": 84.19309745400096
}
+1
View File
@@ -0,0 +1 @@
PASS: multiple upload hosts/shared-host paths, discovery, quotas, JWT isolation, persistence, transport composition and conflict validation
+1
View File
@@ -0,0 +1 @@
PASS upload S3 protocol fixture: SigV4, multipart, abort, range, restart, expiry and backend isolation
+711
View File
@@ -0,0 +1,711 @@
Compiling rust-xmpp v0.7.8 (/workspace/scratch/362577cdf2e0/recovered/rust-xmpp)
Finished `test` profile [unoptimized + debuginfo] target(s) in 19.55s
Running unittests src/lib.rs (target/debug/deps/rust_xmpp-35326025a84450cd)
running 42 tests
test http_config::tests::literal_pchars_and_percent_encoding_are_supported ... ok
test http_config::tests::external_prefix_and_standard_port ... ok
test http_config::tests::invalid_paths_types_urls_and_conflicts_are_errors ... ok
test http_config::tests::mounts_inherit_per_app_and_expand_virtual_host ... ok
test http_config::tests::routes_hosts_and_default_without_overriding_known_hosts ... ok
test http_proxy::tests::config_validation_and_network_boundaries ... ok
test http_proxy::tests::empty_native_lua_table_disables_proxy_trust ... ok
test http_proxy::tests::forwarded_tls_termination_cannot_upgrade_a_plaintext_chain_hop ... ok
test http_proxy::tests::forwarded_mode_stops_at_first_untrusted_hop ... 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::external_must_be_in_the_advertised_mechanisms ... ok
test http_proxy::tests::legacy_chain_uses_rightmost_untrusted_and_tls_is_preserved ... ok
test http_proxy::tests::untrusted_socket_ignores_spoofed_headers ... ok
test http_proxy::tests::malformed_forwarded_and_unknown_identifiers_are_ignored ... ok
test federation::tests::stream_restarts_compare_canonical_domains ... ok
test http_transport::tests::bosh_processing_capacity_is_bounded ... ok
test http_transport::tests::configured_mount_host_origin_and_secure_dispatch ... ok
test http_transport::tests::independent_framing ... ok
test logging::tests::console_aliases_share_one_sink_with_combined_levels ... ok
test http_transport::tests::websocket_preserves_inherited_namespaces_and_spaced_declarations ... ok
test sasl::tests::reject_malformed_and_downgrade ... ok
test server::authorization_tests::http_interfaces_follow_secure_override_wildcards_and_global_fallback ... 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 sasl::tests::rfc5802_sha1_vector ... 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 http_service::tests::upload_internal_mount_is_independent_of_advertised_proxy_prefix ... 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. 42 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.57s
Running unittests src/main.rs (target/debug/deps/rust_xmpp-d70be398a259de34)
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-ac25be69d4e5c9d7)
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-e17f5bdb2236639c)
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 archive_roundtrip_preserves_default_namespace_resets ... ok
test legacy_records_binary_cache_and_roundtrip ... ok
test real_archive_sid_and_sender_privacy ... ok
test muc_archive_filters_stanza_kind_instead_of_sender_jid ... ok
test smart_enable_and_message_selection ... ok
test equal_cursors_and_normalized_query_jids ... ok
test mam_paging_filters_and_forbidden ... ok
test zero_page_dates_and_invalid_forms ... 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-413b6a1e33e69a8b)
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.02s
Running tests/cli.rs (target/debug/deps/cli-57660fdc9c9efa53)
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-eece74d883e4757d)
running 12 tests
test include_cycles_rejected ... ok
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 tables_cannot_recurse_forever ... ok
test supplied_configuration_scopes_arithmetic_and_modules ... 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.01s
Running tests/csi.rs (target/debug/deps/csi-ebe2b18da2bcf4ee)
running 2 tests
test native_importance_rules ... ok
test bounded_queue_flush_delay_activity_and_grace ... 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-ae15f598b5d0a40e)
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-c65a27d7b5288f6c)
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-dee0cbfd67d7ad8f)
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-2f12cf7c0233a9a4)
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.38s
Running tests/gajim_features.rs (target/debug/deps/gajim_features-f4de5c735f024ae3)
running 6 tests
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 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 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_altconnect.rs (target/debug/deps/http_altconnect-bd40ad0185d14a9e)
running 3 tests
test native_link_order_schemes_and_loaded_module_gates ... ok
test public_prefix_and_host_paths_inherit_independently ... ok
test bad_advertisement_types_and_route_collisions_are_rejected ... ok
test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/http_transport.rs (target/debug/deps/http_transport-31a565c13311b23a)
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-d7c9290e01081e96)
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.05s
Running tests/iq_errors.rs (target/debug/deps/iq_errors-dd580e9884198ecf)
running 2 tests
test server_errors_without_target_remain_unaddressed_and_escape_attributes ... ok
test pep_errors_identify_the_account_and_echo_the_request ... 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-b10fa512fcde5034)
running 10 tests
test rejects_malformed_configuration ... ok
test native_console_shorthands_are_accepted ... ok
test overlapping_shorthand_destinations_receive_each_record_once ... ok
test filters_appends_escapes_and_redacts ... ok
test json_records_and_bounded_ranges ... ok
test explicit_sink_levels_select_exactly_and_deduplicate ... ok
test reopen_rotated_files_updates_clones ... ok
test failed_reopen_keeps_all_original_handles ... 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.04s
Running tests/message_routing.rs (target/debug/deps/message_routing-584b523f0fe41bd6)
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-c83485150bd43e36)
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-534ec825c7201623)
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_extensions.rs (target/debug/deps/muc_extensions-a9f5fc7e3f8b7ee0)
running 10 tests
test disabled_optional_vcard_and_occupant_ids_are_not_advertised_or_emitted ... ok
test broadcast_roles_hide_visitors_and_configuration_announces_transition ... ok
test messages_cannot_spoof_room_identity_hats_or_occupant_identifiers ... ok
test restricted_private_messages_allow_self_and_optional_moderators ... ok
test large_optional_history_does_not_prevent_checkpointing_membership ... ok
test language_config_sections_discovery_and_native_affiliation_hats ... ok
test mam_all_rooms_presence_logging_public_queries_and_optional_totals ... ok
test offline_reserved_affiliates_follow_anonymity_and_roominfo_counts_nicknames ... ok
test recovery_claim_is_durable_and_unrelated_disconnect_keeps_temporary_claims ... ok
test explicit_new_nickname_consumes_old_proof_and_pending_nicks_are_reserved ... ok
test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
Running tests/muc_flow.rs (target/debug/deps/muc_flow-e0f0dc747cf31176)
running 18 tests
test configured_lock_timeout_expires_without_owner_submission ... ok
test iq_response_requires_expected_sender ... ok
test authorization_and_conflict ... 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 preserves_unknown_binary_mixed_room_fields ... ok
test persistence_roundtrip ... ok
test switching_to_members_only_removes_unaffiliated_users ... 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 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_history.rs (target/debug/deps/muc_history-4855797b481a8f39)
running 10 tests
test capacity_changes_trim_and_zero_disables_history ... ok
test only_direct_history_children_are_parsed ... ok
test maxchars_counts_transmitted_utf8_bytes_including_address_and_delay ... ok
test default_count_applies_only_without_valid_explicit_constraints ... ok
test explicit_count_and_zero_limit ... ok
test replay_carries_room_delay_and_recipient ... ok
test ordinary_history_is_bounded_and_returns_oldest_first ... ok
test snapshot_restores_last_message_without_adding_another_delay ... ok
test subjects_and_hints_follow_native_history_eligibility ... ok
test since_and_seconds_use_stricter_cutoff_inclusive ... ok
test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/muc_native.rs (target/debug/deps/muc_native-90f713df575cd00c)
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/muc_recovery.rs (target/debug/deps/muc_recovery-4536d02c6db5e036)
running 7 tests
test claim_is_one_time_and_does_not_change_untrusted_role ... ok
test pending_snapshot_keeps_original_checkpoint_time ... ok
test recovery_claim_requires_exact_authenticated_resource_and_expires ... ok
test native_checkpoint_roundtrip_filters_sensitive_extensions ... ok
test native_last_message_roundtrip_preserves_namespaces_and_rejects_other_rooms ... ok
test oversized_status_never_prevents_membership_checkpoint ... ok
test configuration_fingerprint_is_independent_of_lua_table_iteration_order ... ok
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running tests/muc_restart_state.rs (target/debug/deps/muc_restart_state-6313d0e7fcfc0965)
running 3 tests
test unrelated_disconnect_does_not_delete_dormant_temporary_room ... ok
test changed_configuration_invalidates_auto_recovery_without_disclosing_password ... ok
test repeated_restart_keeps_dormant_claim_and_deadline_without_ghost_routing ... ok
test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
Running tests/muc_state_native.rs (target/debug/deps/muc_state_native-d14147ffa532b80c)
running 1 test
test actual_prosody_restores_rust_checkpoint_and_rust_reads_native_freeze ... 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-e94bb07c3973779b)
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 native_itemreply_controls_publisher_visibility_in_reads_and_replays ... ok
test publish_options_match_implicit_notification_defaults_on_old_nodes ... 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.20s
Running tests/pep_diagnostics.rs (target/debug/deps/pep_diagnostics-9580f8658fa6ea58)
running 6 tests
test nonempty_xml_can_be_an_empty_android_device_list ... ok
test avatar_classification_does_not_inspect_or_expose_avatar_data ... ok
test arbitrary_node_payload_and_wrong_namespace_do_not_leak ... ok
test signed_integer_limits_and_duplicates_match_java_parser ... ok
test payloadless_notification_is_visible_without_identifiers ... ok
test only_first_direct_item_is_parsed_and_protocols_are_distinct ... 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-76b2cbf7a11be6b6)
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.10s
Running tests/pep_item_order.rs (target/debug/deps/pep_item_order-6ee5b8ed27d40885)
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.12s
Running tests/preauth.rs (target/debug/deps/preauth-c3e953dce3c3a139)
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 invitations_expire_are_single_use_and_owner_scoped ... 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 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-156502f568bdc619)
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-254f4b34712a671e)
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-b91fb3b49e96cd6d)
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 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 roster_presence_access_and_foreign_subscription_denied ... ok
test remote_caps_replay_and_open_node_privacy_revoke ... ok
test remote_unavailable_is_scoped_to_addressed_owner_and_cancels_pending ... 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.29s
Running tests/push.rs (target/debug/deps/push-f815f609aff0106d)
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-28d5b077c2534d6d)
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-e944df54464415e0)
running 7 tests
test kick_new_leaves_existing_session_unchanged ... 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 invalid_resume_owner_or_ack_does_not_evict_active_session ... 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-d10120a27f08b817)
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.67s
Running tests/storage_accounts.rs (target/debug/deps/storage_accounts-caa2428c7ab1794f)
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 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 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.45s
Running tests/storage_compat.rs (target/debug/deps/storage_compat-8c065a953d7f1c5f)
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-7c9f069d2cb9d13b)
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.38s
Running tests/tls_plus_network.rs (target/debug/deps/tls_plus_network-7312b0d545fb875d)
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.44s
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
Finished `dev` profile [unoptimized + debuginfo] target(s) in 0.13s
Finished `release` profile [optimized] target(s) in 0.09s
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: custom WS/BOSH routes, default-route 404, exact Origin policy, verified TLS proxy rewrite, trusted HTTPS metadata, untrusted/spoofed metadata denial, IPv6 when available, authenticated WS/BOSH bind/ping in legacy and RFC7239 modes and cached BOSH RID retry
PASS: XEP-0156 XRD/JRD parity, CORS, safe methods, ignored JSONP, host checks, secure URL preference, custom mounts/public prefixes, module and advertisement gates, HTTP fallback and verified WSS framing
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: STARTTLS MUC SIGTERM restart restores live temporary/persistent rooms, exact full-JID membership, roles, presence and groupchat routing; rejects automatic cross-resource/account claims and nickname theft
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
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
PASS: configured upload HTTP path with $host through integrated listener
PASS: multiple upload hosts/shared-host paths, discovery, quotas, JWT isolation, persistence, transport composition and conflict validation
PASS upload S3 protocol fixture: SigV4, multipart, abort, range, restart, expiry and backend isolation
{
"total_load_wall_seconds": 7.782,
"requested_resources": 500,
"authenticated_bound_resources": 500,
"connection_setup_concurrency": 50,
"setup_wall_seconds": 0.63,
"setup_latency": {
"samples": 500,
"median_ms": 57.454,
"p95_ms": 86.829,
"max_ms": 95.615
},
"ping_rounds": 10,
"ping_round_trip": {
"samples": 5000,
"median_ms": 14.241,
"p95_ms": 23.05,
"max_ms": 27.298
},
"accounts": 100,
"message_rounds": 10,
"messages_sent": 5000,
"messages_received": 5000,
"message_batch_seconds": 4.835,
"metrics_before": {
"rss_kib": 8056,
"cpu_seconds": 0.0,
"fd_count": 11
},
"metrics_connected": {
"rss_kib": 26868,
"cpu_seconds": 1.22,
"fd_count": 511
},
"metrics_after_workload": {
"rss_kib": 27456,
"cpu_seconds": 9.05,
"fd_count": 511
},
"metrics_two_seconds_after_disconnect": {
"rss_kib": 27648,
"cpu_seconds": 9.09,
"fd_count": 11
},
"sampled_peak_rss_kib": 27648,
"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.8 (/workspace/scratch/362577cdf2e0/recovered/rust-xmpp)
Finished `test` profile [unoptimized + debuginfo] target(s) in 0.85s
Running tests/csi_native.rs (target/debug/deps/csi_native-ae15f598b5d0a40e)
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.14s
Running tests/muc_native.rs (target/debug/deps/muc_native-90f713df575cd00c)
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.22s
Running tests/muc_state_native.rs (target/debug/deps/muc_state_native-d14147ffa532b80c)
running 1 test
test actual_prosody_restores_rust_checkpoint_and_rust_reads_native_freeze ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
Running tests/pep_item_order.rs (target/debug/deps/pep_item_order-6ee5b8ed27d40885)
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-156502f568bdc619)
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.16s
Running tests/pubsub_native.rs (target/debug/deps/pubsub_native-254f4b34712a671e)
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-f815f609aff0106d)
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-28d5b077c2534d6d)
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.92s
Finished `test` profile [unoptimized + debuginfo] target(s) in 0.06s
Running tests/federation_tls.rs (target/debug/deps/federation_tls-2f12cf7c0233a9a4)
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
+1
View File
@@ -0,0 +1 @@
PASS upload migration: local -> S3 -> S3 -> local, hashes, original URLs/JWT/HEAD, lock, dry-run, fail-closed resume
@@ -0,0 +1,12 @@
{
"source_url": "https://github.com/minio/minio/archive/refs/tags/RELEASE.2025-04-22T22-12-26Z.tar.gz",
"upstream_release": "RELEASE.2025-04-22T22-12-26Z",
"build": "Go1.24.3 go build -p4; no dependency changes",
"sha256": {
"/tmp/minio-source.tar.gz": "1a63209927b9d1fb239b2a776b7b01d1902eff19379a108f4bc7005edcc0968c",
"/tmp/minio-genuine": "3dd5d6756ad17c599fbc1c6f6a2f5b590242c049522e848c700949dbf8e60ad9",
"/tmp/minio-sandbox-compat": "8bbb9bccfbac69869ab499c39cfd8731b2b770b86ccf37cca1c8267556ad9bf0",
"/tmp/minio-sandbox-compat.patch": "e60592a65273f28a1375eb6ecbc0966f7fbd2ba7567d2ffedc13ffd95ed224f5"
},
"compatibility_limitation": "Only net.Interfaces EPERM becomes loopback127.0.0.1; all S3/auth/multipart/storage source unchanged."
}
@@ -0,0 +1,21 @@
--- a/cmd/net.go
+++ b/cmd/net.go
@@ -24,6 +24,7 @@
"runtime"
"sort"
"strings"
+ "syscall"
"github.com/minio/minio-go/v7/pkg/set"
"github.com/minio/minio/internal/config"
@@ -54,6 +55,10 @@
// mustGetLocalIPs returns IPs of local interface
func mustGetLocalIPs() (ipList []net.IP) {
ifs, err := net.Interfaces()
+ // TEST ONLY: the sandbox denies netlink enumeration; all listeners bind loopback.
+ if errors.Is(err, syscall.EPERM) {
+ return []net.IP{net.ParseIP("127.0.0.1")}
+ }
logger.FatalIf(err, "Unable to get IP addresses of this host")
for _, interf := range ifs {
+51
View File
@@ -0,0 +1,51 @@
{
"ok": true,
"minio_version": "minio-sandbox-compat version DEVELOPMENT.GOGET (commit-id=DEVELOPMENT.GOGET)\nRuntime: go1.24.3 linux/amd64\nLicense: GNU AGPLv3 - https://www.gnu.org/licenses/agpl-3.0.html\nCopyright: 2015-0000 MinIO, Inc.",
"minio_binary_sha256": "8bbb9bccfbac69869ab499c39cfd8731b2b770b86ccf37cca1c8267556ad9bf0",
"binary": "/workspace/scratch/362577cdf2e0/recovered/rust-xmpp/target/release/rust-xmpp",
"binary_version": "rust-xmpp 0.7.9 \u2014 experimental XMPP runtime",
"binary_sha256": "24c0dca637e7ce4e238ef6becad16bb5a18a33546554b0eecf310fd8927f021c",
"size": 10737418240,
"qualifies_over_5gib": true,
"minio_test_only_compatibility_patch": {
"sha256": "e60592a65273f28a1375eb6ecbc0966f7fbd2ba7567d2ffedc13ffd95ed224f5",
"diff": "--- a/cmd/net.go\n+++ b/cmd/net.go\n@@ -24,6 +24,7 @@\n \t\"runtime\"\n \t\"sort\"\n \t\"strings\"\n+\t\"syscall\"\n \n \t\"github.com/minio/minio-go/v7/pkg/set\"\n \t\"github.com/minio/minio/internal/config\"\n@@ -54,6 +55,10 @@\n // mustGetLocalIPs returns IPs of local interface\n func mustGetLocalIPs() (ipList []net.IP) {\n \tifs, err := net.Interfaces()\n+\t// TEST ONLY: the sandbox denies netlink enumeration; all listeners bind loopback.\n+\tif errors.Is(err, syscall.EPERM) {\n+\t\treturn []net.IP{net.ParseIP(\"127.0.0.1\")}\n+\t}\n \tlogger.FatalIf(err, \"Unable to get IP addresses of this host\")\n \n \tfor _, interf := range ifs {\n",
"limitation": "Modified upstream MinIO: EPERM interface enumeration uses loopback; all S3/auth/storage code remains upstream."
},
"max_rss_bytes": {
"server": 106057728,
"client": 24338432,
"minio": 498958336
},
"put_bytes": 10737418240,
"put_seconds": 48.45253416699961,
"sha256": "e4c296c41d3a9605f0348961e41ed835b5f42c220751ed2269a726951546c935",
"minio_etag": "958f42d583ac40ff209eb865c5eb4bd6-1280",
"multipart_parts": 1280,
"minio_allocated_bytes": 10747953152,
"free_disk_after_put_bytes": 15180328960,
"get_bytes": 10737418240,
"get_sha256": "e4c296c41d3a9605f0348961e41ed835b5f42c220751ed2269a726951546c935",
"get_seconds": 13.709708632000911,
"range_offsets": [
0,
4294967289,
5368709113,
10737418208
],
"restart_range_ok": true,
"restart_reuse_status": 409,
"crash_multipart_cleanup_ok": true,
"minio_upstream_provenance": {
"source_url": "https://github.com/minio/minio/archive/refs/tags/RELEASE.2025-04-22T22-12-26Z.tar.gz",
"upstream_release": "RELEASE.2025-04-22T22-12-26Z",
"build": "Go1.24.3 go build -p4; no dependency changes",
"sha256": {
"/tmp/minio-source.tar.gz": "1a63209927b9d1fb239b2a776b7b01d1902eff19379a108f4bc7005edcc0968c",
"/tmp/minio-genuine": "3dd5d6756ad17c599fbc1c6f6a2f5b590242c049522e848c700949dbf8e60ad9",
"/tmp/minio-sandbox-compat": "8bbb9bccfbac69869ab499c39cfd8731b2b770b86ccf37cca1c8267556ad9bf0",
"/tmp/minio-sandbox-compat.patch": "e60592a65273f28a1375eb6ecbc0966f7fbd2ba7567d2ffedc13ffd95ed224f5"
},
"compatibility_limitation": "Only net.Interfaces EPERM becomes loopback127.0.0.1; all S3/auth/multipart/storage source unchanged."
}
}
+52
View File
@@ -0,0 +1,52 @@
MINIO PUT: 1074790400/10737418240 bytes (204.9 MiB/s)
MINIO PUT: 2181038080/10737418240 bytes (208.0 MiB/s)
MINIO PUT: 3321888768/10737418240 bytes (211.2 MiB/s)
MINIO PUT: 4504682496/10737418240 bytes (214.7 MiB/s)
MINIO PUT: 5596250112/10737418240 bytes (213.1 MiB/s)
MINIO PUT: 6719275008/10737418240 bytes (213.2 MiB/s)
MINIO PUT: 7837057024/10737418240 bytes (213.2 MiB/s)
MINIO PUT: 8984199168/10737418240 bytes (213.8 MiB/s)
MINIO PUT: 10084155392/10737418240 bytes (213.3 MiB/s)
MINIO PUT: 10737418240/10737418240 bytes (213.1 MiB/s)
MINIO GET: 3736076288/10737418240 bytes (712.4 MiB/s)
MINIO GET: 7658799104/10737418240 bytes (730.3 MiB/s)
MINIO GET: 10737418240/10737418240 bytes (746.9 MiB/s)
{
"ok": true,
"minio_version": "minio-sandbox-compat version DEVELOPMENT.GOGET (commit-id=DEVELOPMENT.GOGET)\nRuntime: go1.24.3 linux/amd64\nLicense: GNU AGPLv3 - https://www.gnu.org/licenses/agpl-3.0.html\nCopyright: 2015-0000 MinIO, Inc.",
"minio_binary_sha256": "8bbb9bccfbac69869ab499c39cfd8731b2b770b86ccf37cca1c8267556ad9bf0",
"binary": "/workspace/scratch/362577cdf2e0/recovered/rust-xmpp/target/release/rust-xmpp",
"binary_version": "rust-xmpp 0.7.9 \u2014 experimental XMPP runtime",
"binary_sha256": "24c0dca637e7ce4e238ef6becad16bb5a18a33546554b0eecf310fd8927f021c",
"size": 10737418240,
"qualifies_over_5gib": true,
"minio_test_only_compatibility_patch": {
"sha256": "e60592a65273f28a1375eb6ecbc0966f7fbd2ba7567d2ffedc13ffd95ed224f5",
"diff": "--- a/cmd/net.go\n+++ b/cmd/net.go\n@@ -24,6 +24,7 @@\n \t\"runtime\"\n \t\"sort\"\n \t\"strings\"\n+\t\"syscall\"\n \n \t\"github.com/minio/minio-go/v7/pkg/set\"\n \t\"github.com/minio/minio/internal/config\"\n@@ -54,6 +55,10 @@\n // mustGetLocalIPs returns IPs of local interface\n func mustGetLocalIPs() (ipList []net.IP) {\n \tifs, err := net.Interfaces()\n+\t// TEST ONLY: the sandbox denies netlink enumeration; all listeners bind loopback.\n+\tif errors.Is(err, syscall.EPERM) {\n+\t\treturn []net.IP{net.ParseIP(\"127.0.0.1\")}\n+\t}\n \tlogger.FatalIf(err, \"Unable to get IP addresses of this host\")\n \n \tfor _, interf := range ifs {\n",
"limitation": "Modified upstream MinIO: EPERM interface enumeration uses loopback; all S3/auth/storage code remains upstream."
},
"max_rss_bytes": {
"server": 106057728,
"client": 24338432,
"minio": 498958336
},
"put_bytes": 10737418240,
"put_seconds": 48.45253416699961,
"sha256": "e4c296c41d3a9605f0348961e41ed835b5f42c220751ed2269a726951546c935",
"minio_etag": "958f42d583ac40ff209eb865c5eb4bd6-1280",
"multipart_parts": 1280,
"minio_allocated_bytes": 10747953152,
"free_disk_after_put_bytes": 15180328960,
"get_bytes": 10737418240,
"get_sha256": "e4c296c41d3a9605f0348961e41ed835b5f42c220751ed2269a726951546c935",
"get_seconds": 13.709708632000911,
"range_offsets": [
0,
4294967289,
5368709113,
10737418208
],
"restart_range_ok": true,
"restart_reuse_status": 409,
"crash_multipart_cleanup_ok": true
}
+1
View File
@@ -0,0 +1 @@
PASS upload S3 protocol fixture: SigV4, multipart, abort, range, restart, expiry and backend isolation
+713
View File
@@ -0,0 +1,713 @@
Finished `test` profile [unoptimized] target(s) in 0.09s
Running unittests src/lib.rs (target/debug/deps/rust_xmpp-0e8ce8f4bd38da6f)
running 45 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 http_config::tests::external_prefix_and_standard_port ... ok
test http_config::tests::literal_pchars_and_percent_encoding_are_supported ... ok
test http_config::tests::invalid_paths_types_urls_and_conflicts_are_errors ... ok
test http_config::tests::mounts_inherit_per_app_and_expand_virtual_host ... ok
test http_proxy::tests::config_validation_and_network_boundaries ... ok
test http_config::tests::routes_hosts_and_default_without_overriding_known_hosts ... ok
test http_proxy::tests::empty_native_lua_table_disables_proxy_trust ... ok
test federation::tests::stream_restarts_compare_canonical_domains ... ok
test http_proxy::tests::legacy_chain_uses_rightmost_untrusted_and_tls_is_preserved ... ok
test http_proxy::tests::forwarded_mode_stops_at_first_untrusted_hop ... ok
test http_proxy::tests::malformed_forwarded_and_unknown_identifiers_are_ignored ... ok
test http_proxy::tests::forwarded_tls_termination_cannot_upgrade_a_plaintext_chain_hop ... ok
test http_proxy::tests::untrusted_socket_ignores_spoofed_headers ... ok
test http_transport::tests::bosh_processing_capacity_is_bounded ... ok
test http_transport::tests::independent_framing ... ok
test http_transport::tests::configured_mount_host_origin_and_secure_dispatch ... ok
test logging::tests::console_aliases_share_one_sink_with_combined_levels ... ok
test http_transport::tests::websocket_preserves_inherited_namespaces_and_spaced_declarations ... ok
test sasl::tests::reject_malformed_and_downgrade ... ok
test http_service::tests::upload_claim_refreshes_completion_state_after_an_earlier_snapshot ... ok
test server::authorization_tests::http_interfaces_follow_secure_override_wildcards_and_global_fallback ... 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 sasl::tests::rfc5802_sha1_vector ... 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 upload_migration::tests::local_spool_checks_size_and_hash_and_preserves_source ... ok
test sasl::tests::sha256_independent_python_vector ... 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 upload_migration::tests::pending_and_corrupt_journals_block_startup ... ok
test http_service::tests::upload_internal_mount_is_independent_of_advertised_proxy_prefix ... 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. 45 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.51s
Running unittests src/main.rs (target/debug/deps/rust_xmpp-575c9d0fa7f7c3a1)
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-6b2d8131b7ed3ad8)
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-a4e00b6b646420db)
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 smart_enable_and_message_selection ... 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 mam_paging_filters_and_forbidden ... ok
test zero_page_dates_and_invalid_forms ... 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-5b3c63d14547ba48)
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.87s
Running tests/cli.rs (target/debug/deps/cli-6ee6e0c0e23d76b2)
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-1282641d140c9884)
running 12 tests
test include_cycles_rejected ... ok
test component_can_explicitly_enable_global_modules ... ok
test declarations_and_overrides ... ok
test storage_paths_encode_like_prosody ... 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-92a31451168fba3d)
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-0e9b124aa7c3050e)
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-058fb82c6b41a755)
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-b04f69283eaa02df)
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.08s
Running tests/federation_tls.rs (target/debug/deps/federation_tls-b06b682c04611173)
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.14s
Running tests/gajim_features.rs (target/debug/deps/gajim_features-adc8e988cc8fd2e5)
running 6 tests
test policy_catalog_selects_default_policy_and_maps_display_and_explicit_label ... ok
test unsupported_security_policy_configuration_returns_explicit_error ... 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_altconnect.rs (target/debug/deps/http_altconnect-bbe7f2775d33d129)
running 3 tests
test native_link_order_schemes_and_loaded_module_gates ... ok
test public_prefix_and_host_paths_inherit_independently ... ok
test bad_advertisement_types_and_route_collisions_are_rejected ... ok
test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/http_transport.rs (target/debug/deps/http_transport-c4efc8c30d83cff4)
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_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-cdc46d4347597b0e)
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-ec7bb749f1288cff)
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-024a229065a20f1e)
running 10 tests
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 explicit_sink_levels_select_exactly_and_deduplicate ... ok
test overlapping_shorthand_destinations_receive_each_record_once ... ok
test failed_reopen_keeps_all_original_handles ... ok
test shared_sink_unions_levels_and_preserves_distinct_destinations ... 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.02s
Running tests/message_routing.rs (target/debug/deps/message_routing-95f55d0dd6f4b395)
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-d1849f09978afe69)
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-14ddee5a021d8de4)
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_extensions.rs (target/debug/deps/muc_extensions-5ba345ea905e6264)
running 10 tests
test broadcast_roles_hide_visitors_and_configuration_announces_transition ... ok
test disabled_optional_vcard_and_occupant_ids_are_not_advertised_or_emitted ... ok
test messages_cannot_spoof_room_identity_hats_or_occupant_identifiers ... ok
test restricted_private_messages_allow_self_and_optional_moderators ... ok
test large_optional_history_does_not_prevent_checkpointing_membership ... ok
test mam_all_rooms_presence_logging_public_queries_and_optional_totals ... ok
test language_config_sections_discovery_and_native_affiliation_hats ... ok
test offline_reserved_affiliates_follow_anonymity_and_roominfo_counts_nicknames ... ok
test recovery_claim_is_durable_and_unrelated_disconnect_keeps_temporary_claims ... ok
test explicit_new_nickname_consumes_old_proof_and_pending_nicks_are_reserved ... ok
test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
Running tests/muc_flow.rs (target/debug/deps/muc_flow-de6f85b343315b64)
running 18 tests
test configured_lock_timeout_expires_without_owner_submission ... ok
test iq_response_requires_expected_sender ... ok
test authorization_and_conflict ... 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 room_vcard_owner_only_and_avatar_presence ... ok
test preserves_unknown_binary_mixed_room_fields ... ok
test reserved_nickname_blocks_other_users ... ok
test persistent_destroy_creates_prosody_tombstone ... 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.02s
Running tests/muc_history.rs (target/debug/deps/muc_history-0dcd89a1eef6847a)
running 10 tests
test only_direct_history_children_are_parsed ... ok
test capacity_changes_trim_and_zero_disables_history ... ok
test maxchars_counts_transmitted_utf8_bytes_including_address_and_delay ... ok
test explicit_count_and_zero_limit ... ok
test replay_carries_room_delay_and_recipient ... ok
test ordinary_history_is_bounded_and_returns_oldest_first ... ok
test since_and_seconds_use_stricter_cutoff_inclusive ... ok
test snapshot_restores_last_message_without_adding_another_delay ... ok
test default_count_applies_only_without_valid_explicit_constraints ... ok
test subjects_and_hints_follow_native_history_eligibility ... ok
test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running tests/muc_native.rs (target/debug/deps/muc_native-1de2cb4fa7044302)
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/muc_recovery.rs (target/debug/deps/muc_recovery-184e6c1924b0b00b)
running 7 tests
test claim_is_one_time_and_does_not_change_untrusted_role ... ok
test pending_snapshot_keeps_original_checkpoint_time ... ok
test recovery_claim_requires_exact_authenticated_resource_and_expires ... ok
test native_checkpoint_roundtrip_filters_sensitive_extensions ... ok
test native_last_message_roundtrip_preserves_namespaces_and_rejects_other_rooms ... ok
test oversized_status_never_prevents_membership_checkpoint ... ok
test configuration_fingerprint_is_independent_of_lua_table_iteration_order ... ok
test result: ok. 7 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
Running tests/muc_restart_state.rs (target/debug/deps/muc_restart_state-14d4048acd010890)
running 3 tests
test unrelated_disconnect_does_not_delete_dormant_temporary_room ... ok
test changed_configuration_invalidates_auto_recovery_without_disclosing_password ... ok
test repeated_restart_keeps_dormant_claim_and_deadline_without_ghost_routing ... ok
test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.02s
Running tests/muc_state_native.rs (target/debug/deps/muc_state_native-2a5f6349c617dbee)
running 1 test
test actual_prosody_restores_rust_checkpoint_and_rust_reads_native_freeze ... 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-3007dfe744090225)
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 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_diagnostics.rs (target/debug/deps/pep_diagnostics-56ce2b171d4d4544)
running 6 tests
test nonempty_xml_can_be_an_empty_android_device_list ... ok
test avatar_classification_does_not_inspect_or_expose_avatar_data ... ok
test arbitrary_node_payload_and_wrong_namespace_do_not_leak ... ok
test payloadless_notification_is_visible_without_identifiers ... ok
test only_first_direct_item_is_parsed_and_protocols_are_distinct ... ok
test signed_integer_limits_and_duplicates_match_java_parser ... 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-e4c692a47f70144b)
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.11s
Running tests/pep_item_order.rs (target/debug/deps/pep_item_order-0557272b4979fb11)
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-b98a0aa3fb33c1a3)
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 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.03s
Running tests/preauth_native.rs (target/debug/deps/preauth_native-6d831575ad50feb3)
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-799d09bde6bd236f)
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-f8898a70c1d9229b)
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 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.24s
Running tests/push.rs (target/debug/deps/push-d6e33d3d0596e2e2)
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.08s
Running tests/reference_prosody.rs (target/debug/deps/reference_prosody-9b33cba6508d6c00)
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-02f64f1ac2a22878)
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-5d8cb6db7592204f)
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.54s
Running tests/storage_accounts.rs (target/debug/deps/storage_accounts-6b03eae10230e3ea)
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 malformed_legacy_vcard_and_private_bookmarks_rejected ... ok
test blocklist_enforcement_api ... 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 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.22s
Running tests/storage_compat.rs (target/debug/deps/storage_compat-fe6cff3b2d381659)
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-5bf92a1e0024d0ed)
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.64s
Running tests/tls_plus_network.rs (target/debug/deps/tls_plus_network-d375c1fb4af9d25c)
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.41s
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
Finished `dev` profile [unoptimized] target(s) in 0.12s
Finished `release` profile [optimized] target(s) in 0.11s
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: custom WS/BOSH routes, default-route 404, exact Origin policy, verified TLS proxy rewrite, trusted HTTPS metadata, untrusted/spoofed metadata denial, IPv6 when available, authenticated WS/BOSH bind/ping in legacy and RFC7239 modes and cached BOSH RID retry
PASS: XEP-0156 XRD/JRD parity, CORS, safe methods, ignored JSONP, host checks, secure URL preference, custom mounts/public prefixes, module and advertisement gates, HTTP fallback and verified WSS framing
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: STARTTLS MUC SIGTERM restart restores live temporary/persistent rooms, exact full-JID membership, roles, presence and groupchat routing; rejects automatic cross-resource/account claims and nickname theft
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
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
PASS: configured upload HTTP path with $host through integrated listener
PASS: multiple upload hosts/shared-host paths, discovery, quotas, JWT isolation, persistence, transport composition and conflict validation
PASS upload S3 protocol fixture: SigV4, multipart, abort, range, restart, expiry and backend isolation
PASS upload migration: local -> S3 -> S3 -> local, hashes, original URLs/JWT/HEAD, lock, dry-run, fail-closed resume
{
"total_load_wall_seconds": 7.094,
"requested_resources": 500,
"authenticated_bound_resources": 500,
"connection_setup_concurrency": 50,
"setup_wall_seconds": 0.671,
"setup_latency": {
"samples": 500,
"median_ms": 62.192,
"p95_ms": 83.883,
"max_ms": 114.563
},
"ping_rounds": 10,
"ping_round_trip": {
"samples": 5000,
"median_ms": 13.502,
"p95_ms": 19.31,
"max_ms": 24.054
},
"accounts": 100,
"message_rounds": 10,
"messages_sent": 5000,
"messages_received": 5000,
"message_batch_seconds": 4.134,
"metrics_before": {
"rss_kib": 8048,
"cpu_seconds": 0.0,
"fd_count": 11
},
"metrics_connected": {
"rss_kib": 26804,
"cpu_seconds": 1.02,
"fd_count": 511
},
"metrics_after_workload": {
"rss_kib": 27400,
"cpu_seconds": 8.85,
"fd_count": 511
},
"metrics_two_seconds_after_disconnect": {
"rss_kib": 27464,
"cpu_seconds": 8.9,
"fd_count": 11
},
"sampled_peak_rss_kib": 27464,
"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
}
}
Finished `test` profile [unoptimized] target(s) in 0.08s
Running tests/csi_native.rs (target/debug/deps/csi_native-0e9b124aa7c3050e)
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-1de2cb4fa7044302)
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/muc_state_native.rs (target/debug/deps/muc_state_native-2a5f6349c617dbee)
running 1 test
test actual_prosody_restores_rust_checkpoint_and_rust_reads_native_freeze ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s
Running tests/pep_item_order.rs (target/debug/deps/pep_item_order-0557272b4979fb11)
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.12s
Running tests/preauth_native.rs (target/debug/deps/preauth_native-6d831575ad50feb3)
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-799d09bde6bd236f)
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-d6e33d3d0596e2e2)
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-9b33cba6508d6c00)
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.98s
Finished `test` profile [unoptimized] target(s) in 0.07s
Running tests/federation_tls.rs (target/debug/deps/federation_tls-b06b682c04611173)
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.66s
+93
View File
@@ -0,0 +1,93 @@
{
"version": "0.7.7",
"date_utc": "2026-10-20",
"ordinary_tests": {
"passed": 262,
"failed": 0,
"ignored": 11
},
"fmt": "passed",
"clippy": "passed",
"release": "passed",
"native_module_tests": 8,
"native_federation_tests": 1,
"http_altconnect": {
"native_reference": "supplied plugins/mod_http_altconnect.lua cafd74b9c5ea",
"unit_tests": 3,
"network_configurations": 10,
"checks": [
"HTTP and verified HTTPS XRD/JRD parity",
"MIME/CORS/GET/HEAD/OPTIONS and method405",
"query ignored, no JSONP",
"advertise_bosh/websocket combinations and loaded transport gates",
"discovery disabled while WSS still works",
"custom altconnect/BOSH/WS mounts and public URL prefix",
"local/global inheritance and HTTPS preference",
"HTTP native compatibility fallback",
"HTTP Host denial and overflowing port rejection",
"config type/path collision rejection"
],
"public_urls": "configuration only; no request Host/Forwarded interpolation",
"standard_caveat": "XEP0156 requires HTTPS metadata and HTTPS/WSS href; supplied-native HTTP/WS fallback retained and documented"
},
"load": {
"total_load_wall_seconds": 7.447,
"requested_resources": 500,
"authenticated_bound_resources": 500,
"connection_setup_concurrency": 50,
"setup_wall_seconds": 0.653,
"setup_latency": {
"samples": 500,
"median_ms": 57.419,
"p95_ms": 87.729,
"max_ms": 107.7
},
"ping_rounds": 10,
"ping_round_trip": {
"samples": 5000,
"median_ms": 14.618,
"p95_ms": 19.347,
"max_ms": 30.719
},
"accounts": 100,
"message_rounds": 10,
"messages_sent": 5000,
"messages_received": 5000,
"message_batch_seconds": 4.483,
"metrics_before": {
"rss_kib": 7792,
"cpu_seconds": 0.0,
"fd_count": 11
},
"metrics_connected": {
"rss_kib": 26488,
"cpu_seconds": 1.17,
"fd_count": 511
},
"metrics_after_workload": {
"rss_kib": 27100,
"cpu_seconds": 8.93,
"fd_count": 511
},
"metrics_two_seconds_after_disconnect": {
"rss_kib": 27228,
"cpu_seconds": 8.95,
"fd_count": 11
},
"sampled_peak_rss_kib": 27228,
"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
}
},
"release_binary_sha256": "4678c35c9ad53f2632f0f0245d842589a15dd4e02b9cb172f15dd7b035422294",
"limitations": [
"Real production proxy/discovery/client UI not run; operator must enable module and publish well-known on HTTPS domain",
"Exactly one runtime VirtualHost; no Host Meta2/XEP0487",
"Previous parity/PEP/DNSSEC limitations unchanged; COMPATIBILITY.md"
]
}
+126
View File
@@ -0,0 +1,126 @@
{
"version": "0.7.8",
"date_utc": "2026-10-20",
"ordinary_tests": {
"passed": 262,
"failed": 0,
"ignored": 11
},
"fmt": "passed",
"clippy": "passed",
"release": "passed",
"native_module_tests": 8,
"native_federation_tests": 1,
"upload": {
"multi_component_network": "passed",
"independent_s3_protocol_fixture": "passed",
"large_https_local": {
"status": "passed",
"requested_bytes": 10737418240,
"python_chunk_bytes": 1048576,
"transport": "verified TLS HTTPS",
"storage": "local streaming file",
"rss_sample_interval_seconds": 0.05,
"free_disk_before_bytes": 14037065728,
"max_rss_bytes": {
"server": 18079744,
"client": 21168128
},
"rss_proc_status_paths": {
"server": "/proc/68012/status",
"client": "/proc/self/status"
},
"put_bytes": 10737418240,
"put_seconds": 14.389516601999276,
"sha256": "e4c296c41d3a9605f0348961e41ed835b5f42c220751ed2269a726951546c935",
"stored_bytes": 10737418240,
"allocated_bytes": 10737422336,
"free_disk_after_put_bytes": 2734645248,
"head_status": 200,
"get_bytes": 10737418240,
"get_read_calls": 10241,
"get_seconds": 69.22072244599985,
"get_sha256": "e4c296c41d3a9605f0348961e41ed835b5f42c220751ed2269a726951546c935",
"range_status": 206,
"range_offset": 4294967289,
"reuse_status": 409,
"over_quota_condition": "not-acceptable",
"temporary_files_cleaned": true,
"free_disk_after_cleanup_bytes": 12774170624,
"total_seconds": 84.19309745400096
},
"s3_cases": [
"independent SigV4 and session token",
"path/query escaping",
"multipart progress before input EOF",
"GET/HEAD/range/conditionals",
"init/part/completion/200-Error failures and abort/retry",
"committed object with lost completion response, live HEAD recovery",
"SIGKILL durable multipart recovery",
"old pending completed object before startup prune",
"quota, single use, expiry delete, credentials redaction, local backend isolation"
]
},
"load": {
"total_load_wall_seconds": 7.782,
"requested_resources": 500,
"authenticated_bound_resources": 500,
"connection_setup_concurrency": 50,
"setup_wall_seconds": 0.63,
"setup_latency": {
"samples": 500,
"median_ms": 57.454,
"p95_ms": 86.829,
"max_ms": 95.615
},
"ping_rounds": 10,
"ping_round_trip": {
"samples": 5000,
"median_ms": 14.241,
"p95_ms": 23.05,
"max_ms": 27.298
},
"accounts": 100,
"message_rounds": 10,
"messages_sent": 5000,
"messages_received": 5000,
"message_batch_seconds": 4.835,
"metrics_before": {
"rss_kib": 8056,
"cpu_seconds": 0.0,
"fd_count": 11
},
"metrics_connected": {
"rss_kib": 26868,
"cpu_seconds": 1.22,
"fd_count": 511
},
"metrics_after_workload": {
"rss_kib": 27456,
"cpu_seconds": 9.05,
"fd_count": 511
},
"metrics_two_seconds_after_disconnect": {
"rss_kib": 27648,
"cpu_seconds": 9.09,
"fd_count": 11
},
"sampled_peak_rss_kib": 27648,
"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
}
},
"release_binary_sha256": "f3226a6151122601d6a6e74ea2bcbbd24a41c29087debe223098bbf37e4126d1",
"limitations": [
"S3 tested with independent loopback protocol fixture, not AWS/MinIO deployment",
"Real 10 GiB test uses local backend; no real 10 GiB object-store upload",
"Bucket lifecycle AbortIncompleteMultipartUpload required for initiation crash window before upload ID journal",
"No automatic storage migration or arbitrary external driver",
"Production DNS, proxy, client UI and previous parity limitations unchanged"
]
}
+81 -41
View File
@@ -1,8 +1,8 @@
{
"version": "0.7.7",
"version": "0.7.9",
"date_utc": "2026-10-20",
"ordinary_tests": {
"passed": 262,
"passed": 265,
"failed": 0,
"ignored": 11
},
@@ -11,70 +11,108 @@
"release": "passed",
"native_module_tests": 8,
"native_federation_tests": 1,
"http_altconnect": {
"native_reference": "supplied plugins/mod_http_altconnect.lua cafd74b9c5ea",
"unit_tests": 3,
"network_configurations": 10,
"checks": [
"HTTP and verified HTTPS XRD/JRD parity",
"MIME/CORS/GET/HEAD/OPTIONS and method405",
"query ignored, no JSONP",
"advertise_bosh/websocket combinations and loaded transport gates",
"discovery disabled while WSS still works",
"custom altconnect/BOSH/WS mounts and public URL prefix",
"local/global inheritance and HTTPS preference",
"HTTP native compatibility fallback",
"HTTP Host denial and overflowing port rejection",
"config type/path collision rejection"
],
"public_urls": "configuration only; no request Host/Forwarded interpolation",
"standard_caveat": "XEP0156 requires HTTPS metadata and HTTPS/WSS href; supplied-native HTTP/WS fallback retained and documented"
"release_binary_sha256": "24c0dca637e7ce4e238ef6becad16bb5a18a33546554b0eecf310fd8927f021c",
"upload": {
"minio_10gib": {
"ok": true,
"minio_version": "minio-sandbox-compat version DEVELOPMENT.GOGET (commit-id=DEVELOPMENT.GOGET)\nRuntime: go1.24.3 linux/amd64\nLicense: GNU AGPLv3 - https://www.gnu.org/licenses/agpl-3.0.html\nCopyright: 2015-0000 MinIO, Inc.",
"minio_binary_sha256": "8bbb9bccfbac69869ab499c39cfd8731b2b770b86ccf37cca1c8267556ad9bf0",
"binary": "/workspace/scratch/362577cdf2e0/recovered/rust-xmpp/target/release/rust-xmpp",
"binary_version": "rust-xmpp 0.7.9 — experimental XMPP runtime",
"binary_sha256": "24c0dca637e7ce4e238ef6becad16bb5a18a33546554b0eecf310fd8927f021c",
"size": 10737418240,
"qualifies_over_5gib": true,
"minio_test_only_compatibility_patch": {
"sha256": "e60592a65273f28a1375eb6ecbc0966f7fbd2ba7567d2ffedc13ffd95ed224f5",
"diff": "--- a/cmd/net.go\n+++ b/cmd/net.go\n@@ -24,6 +24,7 @@\n \t\"runtime\"\n \t\"sort\"\n \t\"strings\"\n+\t\"syscall\"\n \n \t\"github.com/minio/minio-go/v7/pkg/set\"\n \t\"github.com/minio/minio/internal/config\"\n@@ -54,6 +55,10 @@\n // mustGetLocalIPs returns IPs of local interface\n func mustGetLocalIPs() (ipList []net.IP) {\n \tifs, err := net.Interfaces()\n+\t// TEST ONLY: the sandbox denies netlink enumeration; all listeners bind loopback.\n+\tif errors.Is(err, syscall.EPERM) {\n+\t\treturn []net.IP{net.ParseIP(\"127.0.0.1\")}\n+\t}\n \tlogger.FatalIf(err, \"Unable to get IP addresses of this host\")\n \n \tfor _, interf := range ifs {\n",
"limitation": "Modified upstream MinIO: EPERM interface enumeration uses loopback; all S3/auth/storage code remains upstream."
},
"max_rss_bytes": {
"server": 106057728,
"client": 24338432,
"minio": 498958336
},
"put_bytes": 10737418240,
"put_seconds": 48.45253416699961,
"sha256": "e4c296c41d3a9605f0348961e41ed835b5f42c220751ed2269a726951546c935",
"minio_etag": "958f42d583ac40ff209eb865c5eb4bd6-1280",
"multipart_parts": 1280,
"minio_allocated_bytes": 10747953152,
"free_disk_after_put_bytes": 15180328960,
"get_bytes": 10737418240,
"get_sha256": "e4c296c41d3a9605f0348961e41ed835b5f42c220751ed2269a726951546c935",
"get_seconds": 13.709708632000911,
"range_offsets": [
0,
4294967289,
5368709113,
10737418208
],
"restart_range_ok": true,
"restart_reuse_status": 409,
"crash_multipart_cleanup_ok": true,
"minio_upstream_provenance": {
"source_url": "https://github.com/minio/minio/archive/refs/tags/RELEASE.2025-04-22T22-12-26Z.tar.gz",
"upstream_release": "RELEASE.2025-04-22T22-12-26Z",
"build": "Go1.24.3 go build -p4; no dependency changes",
"sha256": {
"/tmp/minio-source.tar.gz": "1a63209927b9d1fb239b2a776b7b01d1902eff19379a108f4bc7005edcc0968c",
"/tmp/minio-genuine": "3dd5d6756ad17c599fbc1c6f6a2f5b590242c049522e848c700949dbf8e60ad9",
"/tmp/minio-sandbox-compat": "8bbb9bccfbac69869ab499c39cfd8731b2b770b86ccf37cca1c8267556ad9bf0",
"/tmp/minio-sandbox-compat.patch": "e60592a65273f28a1375eb6ecbc0966f7fbd2ba7567d2ffedc13ffd95ed224f5"
},
"compatibility_limitation": "Only net.Interfaces EPERM becomes loopback127.0.0.1; all S3/auth/multipart/storage source unchanged."
}
},
"migration_network": "passed: local -> S3 A -> S3 B -> local, dry-run, lock, native metadata/source preservation, interrupted copy/resume, native final file with incomplete cache",
"s3_fault_network": "passed: SigV4, paginated exact-key orphan cleanup, foreign prefix safety, missing UploadId crash recovery, conditional Complete, ambiguous completion quarantine and late recovery",
"claim_race_regression": "passed: atomic fresh snapshot and active claim retains latest completion/quarantine flags"
},
"load": {
"total_load_wall_seconds": 7.447,
"total_load_wall_seconds": 7.094,
"requested_resources": 500,
"authenticated_bound_resources": 500,
"connection_setup_concurrency": 50,
"setup_wall_seconds": 0.653,
"setup_wall_seconds": 0.671,
"setup_latency": {
"samples": 500,
"median_ms": 57.419,
"p95_ms": 87.729,
"max_ms": 107.7
"median_ms": 62.192,
"p95_ms": 83.883,
"max_ms": 114.563
},
"ping_rounds": 10,
"ping_round_trip": {
"samples": 5000,
"median_ms": 14.618,
"p95_ms": 19.347,
"max_ms": 30.719
"median_ms": 13.502,
"p95_ms": 19.31,
"max_ms": 24.054
},
"accounts": 100,
"message_rounds": 10,
"messages_sent": 5000,
"messages_received": 5000,
"message_batch_seconds": 4.483,
"message_batch_seconds": 4.134,
"metrics_before": {
"rss_kib": 7792,
"rss_kib": 8048,
"cpu_seconds": 0.0,
"fd_count": 11
},
"metrics_connected": {
"rss_kib": 26488,
"cpu_seconds": 1.17,
"rss_kib": 26804,
"cpu_seconds": 1.02,
"fd_count": 511
},
"metrics_after_workload": {
"rss_kib": 27100,
"cpu_seconds": 8.93,
"rss_kib": 27400,
"cpu_seconds": 8.85,
"fd_count": 511
},
"metrics_two_seconds_after_disconnect": {
"rss_kib": 27228,
"cpu_seconds": 8.95,
"rss_kib": 27464,
"cpu_seconds": 8.9,
"fd_count": 11
},
"sampled_peak_rss_kib": 27228,
"sampled_peak_rss_kib": 27464,
"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.",
@@ -84,10 +122,12 @@
"expected_records": 10000
}
},
"release_binary_sha256": "4678c35c9ad53f2632f0f0245d842589a15dd4e02b9cb172f15dd7b035422294",
"limitations": [
"Real production proxy/discovery/client UI not run; operator must enable module and publish well-known on HTTPS domain",
"Exactly one runtime VirtualHost; no Host Meta2/XEP0487",
"Previous parity/PEP/DNSSEC limitations unchanged; COMPATIBILITY.md"
"MinIO upstream RELEASE.2025-04-22T22-12-26Z with disclosed five-line EPERM loopback interface enumeration adapter; S3/auth/storage/multipart code unchanged",
"Single-node loopback MinIO, HTTP gateway-to-store and verified HTTPS client-to-gateway; no AWS account or distributed/production storage qualification",
"Missing/corrupt ownership metadata cannot identify arbitrary bucket orphans; lifecycle remains defense in depth",
"Ambiguous completion with HEAD404 quarantines slot until a trustworthy remote outcome; no automatic destructive reset",
"Migration is offline, source preserving, requires temporary disk up to one largest file; no live migration",
"Previous full Prosody parity / production client / DNSSEC limits unchanged"
]
}