- 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:
1 parent
c260d7bab8
commit
b30fc524d8
41 files changed
+5936
-152
No files matched your search
@@ -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 и
|
||||
|
||||
@@ -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
@@ -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
|
||||
@@ -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.
|
||||
@@ -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. После финального
|
||||
прогона исходники сервера не изменялись; менялись только отчёты и упаковка.
|
||||
@@ -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
@@ -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.
|
||||
@@ -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
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
PASS: multiple upload hosts/shared-host paths, discovery, quotas, JWT isolation, persistence, transport composition and conflict validation
|
||||
@@ -0,0 +1 @@
|
||||
PASS upload S3 protocol fixture: SigV4, multipart, abort, range, restart, expiry and backend isolation
|
||||
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
@@ -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."
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
PASS upload S3 protocol fixture: SigV4, multipart, abort, range, restart, expiry and backend isolation
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
]
|
||||
}
|
||||
@@ -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"
|
||||
]
|
||||
}
|
||||
@@ -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"
|
||||
]
|
||||
}
|
||||
Reference in new issue
Block a user