open-standards/joule-code/joule-code-rs/crates/joule-moq-relay/tests
Repository files (latest commit first)
Filename Latest commit message Latest commit date
Transaction Science c28ba66852
Some checks are pending
joule-code conformance gate / joule-moq-relay, every target (push) Waiting to run
joule-code conformance gate / joule-moq-relay, its own energy on a counter (macos) (push) Waiting to run
joule-code conformance gate / joule-moq-ingest, every target (push) Waiting to run
repository checks / lockfiles, advisories, tests in CI, workflow hygiene, spec and section references, public text (push) Waiting to run
wai release binaries build on Windows / the seven release binaries · windows (push) Waiting to run
joule-moq-web browser client / joule-moq-web · does this change touch it (push) Successful in 36s
joule-moq-web browser client / joule-moq-web · browser end-to-end (macos) (push) Waiting to run
WAI Studio / does this change touch it (push) Successful in 31s
wai-fleet service / does this change touch it (push) Successful in 45s
WAI Studio / Studio in Chromium and Firefox · macos (push) Waiting to run
wai-fleet service / service · macos (push) Waiting to run
WAI examples / WAI examples · does this change touch them (push) Successful in 44s
WAI examples / WAI examples · the archive, the readiness check, the browser and Apple · macos (push) Waiting to run
WAI examples / WAI examples · android-app · linux-arm64 (push) Waiting to run
WAI Studio / Studio in WebKit · linux (push) Has started running
WAI examples / WAI examples · portable · linux (push) Has started running
WAI Studio / the catalogue's actions, the unit tests and the core · linux (push) Successful in 1m59s
joule-code conformance gate / Build + round-trip C1-C4 vectors (push) Successful in 6m39s
joule-moq-remote host agent / joule-moq-remote · does this change touch it (push) Successful in 8m35s
wai-app and Create / wai-app · does this change touch it (push) Successful in 8m34s
joule-moq-remote host agent / joule-moq-remote, every target (linux-arm64) (push) Waiting to run
joule-moq-http live HTTP egress / joule-moq-http · does this change touch it (push) Successful in 8m41s
joule-moq-http live HTTP egress / joule-moq-http, every target (push) Waiting to run
wai-fleet service / service · linux (push) Successful in 3m23s
joule-moq-remote host agent / joule-moq-remote, every target (macos) (push) Waiting to run
joule-moq-room room service / joule-moq-room · does this change touch it (push) Successful in 8m39s
wai-app and Create / wai-app · tests, clippy, the line language's verifier (linux) (push) Waiting to run
wai-app and Create / wai-app · Create, browser end-to-end (macos) (push) Waiting to run
joule-moq-room room service / joule-moq-room, every target (push) Waiting to run
joule-moq-relay: an upstream that answers SUBSCRIBE_OK and at once PUBLISH_DONE is passed on as such
The interop run of 11 November (D30) saw, at -23 and at -16, a downstream SUBSCRIBE answered
REQUEST_ERROR DOES_NOT_EXIST "the publisher left" where the upstream had answered SUBSCRIBE_OK
and at once PUBLISH_DONE: the upstream subscription was Established and ended before the
downstream one was made of it, a race. -22 §7.4: "The relay MUST have an Established upstream
subscription before sending SUBSCRIBE_OK in response to a downstream SUBSCRIBE", which it had;
§9.9: PUBLISH_DONE is the final message of a subscription.

session.rs: where the upstream subscription this SUBSCRIBE waited for has ended since (the
track's upstreams empty and its PUBLISH_DONE status kept), the subscriber is sent SUBSCRIBE_OK
(the Largest Object where one is known) and then PUBLISH_DONE with that status and no stream,
and the stream is finished.

tests/subscribe_ended_at_once.rs: a publisher of a namespace answers each of the relay's
SUBSCRIBEs with SUBSCRIBE_OK and PUBLISH_DONE at once, 24 times over native QUIC and over the
WebSocket binding; each subscriber gets SUBSCRIBE_OK and then PUBLISH_DONE (TRACK_ENDED, no
stream). Falsified: without the change 8 and then 10 of the 24 QUIC subscribers were refused
DOES_NOT_EXIST "the publisher left" in two runs, and the test fails.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-11-11 16:58:38 -05:00
..
common The relay reads the client's SETUP first (Privacy Pass auth -04), and what the draft-23 package left 2026-11-10 17:22:02 -05:00
age_rising.rs relay tests: wait on what the relay holds, not on fixed sleeps and windows 2026-10-24 20:59:10 -04:00
age_room_service.rs joule-moq-relay: count each author's audience inputs in its chain's order, not in arrival order 2026-10-25 03:56:05 -04:00
age_serving.rs relay tests: wait on what the relay holds, not on fixed sleeps and windows 2026-10-24 20:59:10 -04:00
auth_tokens.rs joule-moq-relay: a DVR store on disk, FETCH from it, the seek power, and WMH1 version 2 (work in progress) 2026-10-19 11:32:38 -04:00
bench_harness.rs joule-moq-relay: the load harness drives datagram tracks and the meeting scenario; a mid-group switch asserted exactly 2026-11-11 13:46:43 -05:00
cascade.rs The relay reads the client's SETUP first (Privacy Pass auth -04), and what the draft-23 package left 2026-11-10 17:22:02 -05:00
checkpoint.rs joule-moq-relay states its open sessions, takes one request from a shell, and keeps its open window on disk 2026-11-10 16:34:59 -05:00
client_unreadable_request.rs joule-moq-relay: a PUBLISH that begins paused is resumed; the client closes the session for a request it cannot read 2026-11-11 13:23:01 -05:00
connection_window.rs joule-moq-relay: bound a session's unread bytes by a connection window 2026-10-26 03:39:45 -04:00
control_sessions.rs joule-moq-relay: sessions states each session's room grants and the tracks it publishes 2026-11-11 16:40:49 -05:00
datagram_resubscribe.rs joule-moq-relay: what a publisher sends right behind its SUBSCRIBE_OK reaches the subscriber 2026-11-11 10:29:07 -05:00
dos_limits.rs Relay robustness: denial-of-service limits, HopTime and Sync Support, the DVR store as MoQ files, a load harness with a signed record, and a switch through the relay 2026-11-10 23:31:46 -05:00
draft23.rs The relay reads the client's SETUP first (Privacy Pass auth -04), and what the draft-23 package left 2026-11-10 17:22:02 -05:00
drafts.rs joule-moq-relay: a -16 Request ID ahead of one in flight on another stream is admitted 2026-10-21 12:45:13 -04:00
dvr.rs joule-moq-relay: the rewind-past-the-window test finishes its open group after the stored ones are read 2026-11-11 12:02:48 -05:00
dvr_files.rs joule-moq-relay: the operator asks for the DVR store as MoQ files 2026-11-11 12:02:48 -05:00
fetch_in_flight.rs joule-moq-relay: a mux self-deadlock fixed; a FETCH waits for groups still arriving 2026-10-19 07:32:44 -04:00
fetch_unanswered.rs joule-moq-relay: a FETCH no upstream answers is served what the relay holds 2026-11-11 11:51:14 -05:00
first_objects.rs joule-moq-relay: what a publisher sends right behind its SUBSCRIBE_OK reaches the subscriber 2026-11-11 10:29:07 -05:00
floor.rs relay floor test: the payload check is the one an arrival-order relay fails first 2026-10-25 03:56:05 -04:00
goaway.rs joule-moq-relay: GOAWAY on shutdown, tokens by alias, and fan-out order under load 2026-10-17 04:45:24 -04:00
grant_proof.rs The relay reads the client's SETUP first (Privacy Pass auth -04), and what the draft-23 package left 2026-11-10 17:22:02 -05:00
late_joiner.rs joule-moq-relay: the cache covers the run of whole groups, not where its first object fell 2026-10-17 12:12:35 -04:00
late_stream_header.rs Where an object over a lossy path went: refused at the door, or stopped before its header 2026-11-11 12:02:48 -05:00
live_control.rs joule-moq-relay's cascade DVR test keeps the home relay's store in memory on Linux 2026-11-09 22:19:35 -05:00
metrics.rs wai-relay answers /metrics on its control listener, and wai-quantum-service on its API 2026-11-09 20:06:07 -05:00
monitoring.rs joule-moq-relay: monitoring served by the relay: metrics and log tracks, qlogs, hop Feedback Tracks 2026-11-11 13:46:43 -05:00
namespace_withdrawn.rs joule-moq-relay: a namespace is withdrawn by STOP_SENDING after its publisher's FIN 2026-11-11 16:40:49 -05:00
paused_publish.rs joule-moq-relay: a PUBLISH that begins paused is resumed; the client closes the session for a request it cannot read 2026-11-11 13:23:01 -05:00
priority_fan_out.rs joule-moq-relay: GOAWAY on shutdown, tokens by alias, and fan-out order under load 2026-10-17 04:45:24 -04:00
probes.rs joule-moq-relay: probe tracks served under .session 2026-11-11 10:00:45 -05:00
publish_done_streams.rs Relay: a track published again after its publisher's session closed is served 2026-11-11 07:40:22 -05:00
publisher_handover.rs joule-moq-relay: a remaining publisher takes up a subgroup whose first publisher went 2026-11-11 09:30:48 -05:00
quic_sockets.rs joule-moq-relay: a listener's UDP port is its own 2026-11-11 09:30:47 -05:00
relay_energy.rs The relay reads the client's SETUP first (Privacy Pass auth -04), and what the draft-23 package left 2026-11-10 17:22:02 -05:00
relay_quic.rs joule-moq-relay: two publishers and three subscribers over QUIC, WebTransport and WebSocket 2026-10-17 04:37:09 -04:00
relay_websocket.rs joule-moq-relay: each end of a WebSocket session pings the other every 30 s 2026-10-27 14:36:33 -04:00
relay_webtransport.rs joule-moq-relay: two publishers and three subscribers over QUIC, WebTransport and WebSocket 2026-10-17 04:37:09 -04:00
request_ids.rs joule-moq-relay: Request ID rules and requests bounded by the stream limit 2026-10-17 04:49:29 -04:00
request_rejection.rs joule-moq-relay: a rejected request is answered REQUEST_ERROR and FIN, never stopped 2026-11-11 16:40:49 -05:00
request_wait.rs A request over a lossy path is waited for, at the relay and the client; wai dev --impair holds its doors as long as the path 2026-11-11 13:46:43 -05:00
room_authority.rs The relay reads the client's SETUP first (Privacy Pass auth -04), and what the draft-23 package left 2026-11-10 17:22:02 -05:00
room_metering.rs joule-moq-relay: meter the relay's own energy for real, or sign the unmetered marker 2026-10-26 08:30:49 -04:00
sealed_objects.rs joule-moq-relay: a test of sealed objects through the unchanged relay (WIP) 2026-10-19 20:47:53 -04:00
shutdown_ports.rs joule-moq-relay: a shutdown returns once every session has ended and every port is free 2026-11-07 11:56:51 -05:00
slow_subscriber.rs joule-moq-relay: clippy's notes on the new test code 2026-10-18 07:40:14 -04:00
stalled_session.rs joule-moq-relay: a session whose peer grants no flow-control credit is closed 2026-11-11 11:51:14 -05:00
start_ports.rs joule-moq-relay: a start refused part way returns with every port it bound free 2026-11-09 10:49:49 -05:00
subscribe_ended_at_once.rs joule-moq-relay: an upstream that answers SUBSCRIBE_OK and at once PUBLISH_DONE is passed on as such 2026-11-11 16:58:38 -05:00
switching.rs joule-moq-relay: the load harness drives datagram tracks and the meeting scenario; a mid-group switch asserted exactly 2026-11-11 13:46:43 -05:00
tempo_hop.rs Relay robustness: denial-of-service limits, HopTime and Sync Support, the DVR store as MoQ files, a load harness with a signed record, and a switch through the relay 2026-11-10 23:31:46 -05:00
too_far_behind.rs joule-moq-relay: a session whose peer grants no flow-control credit is closed 2026-11-11 11:51:14 -05:00
upstream_window.rs joule-moq-relay: an upstream link is held to the listener's receive windows 2026-10-26 08:52:18 -04:00
version.rs wai doctor: whether this machine can run the toolchain, one check to a line 2026-11-06 17:24:16 -05:00
webtransport_close.rs joule-moq-relay test: the client closes after the relay holds its session 2026-10-21 07:39:04 -04:00
window_cuts.rs joule-moq-relay closes a window at one cut across relays, hands over its counts by session bound to its record, and drains its summaries 2026-11-10 10:31:57 -05:00