make[1]: Entering directory '/home/runner/work/moq-interop-runner/moq-interop-runner/main' rm -rf mlog/ mkdir -p mlog/relay mlog/client Running interop tests... Relay: aiomoqt-interop-relay:latest Client: ghcr.io/englishm/moq-interop-runner-stitcher-moq-client:latest URL: https://relay:4443 time="2026-10-05T01:09:09Z" level=warning msg="The \"PORT\" variable is not set. Defaulting to a blank string." time="2026-10-05T01:09:09Z" level=warning msg="The \"PORT\" variable is not set. Defaulting to a blank string." time="2026-10-05T01:09:09Z" level=warning msg="The \"PORT\" variable is not set. Defaulting to a blank string." time="2026-10-05T01:09:09Z" level=warning msg="The \"HEX\" variable is not set. Defaulting to a blank string." time="2026-10-05T01:09:09Z" level=warning msg="The \"HEX\" variable is not set. Defaulting to a blank string." Container main-relay-1 Recreate Container main-relay-1 Recreated Container main-test-client-1 Recreate Container main-test-client-1 Recreated Attaching to relay-1, test-client-1 relay-1 | aiomoqt ERSATZ-RELAY: an API demonstrator and conformance SUT — not a production relay (no auth, no cache, no hardening). relay-1 | 2026-10-05 01:09:09.932 INFO : Starting MOQT server on 0.0.0.0:4443 relay-1 | ================================================================ relay-1 | EXPERIMENTAL aiomoqt interop relay. relay-1 | NOT a production relay: no group cache, no auth, relay-1 | no scale handling. relay-1 | ================================================================ relay-1 | Listening on 0.0.0.0:4443 (H3/WebTransport, draft-[16, 18, 14]) test-client-1 | TAP version 14 test-client-1 | # stitcher-moq-client v0.2.0 (moq-net 0.3.8 via moq-tokio 0.19.20) test-client-1 | # Relay: https://relay:4443 test-client-1 | # Offered: moq-transport-22, moq-transport-21, moq-transport-20, moq-transport-19, moq-transport-18, moq-transport-17, moq-transport-16, moq-transport-15, moq-transport-14 test-client-1 | 1..7 test-client-1 | ok 1 - setup-only test-client-1 | --- test-client-1 | duration_ms: 41 test-client-1 | negotiated: moq-transport-18 test-client-1 | ... relay-1 | 2026-10-05 01:09:15.311 INFO : MOQT event: control message parsed: Setup(options={7: b'moq-lite-rs', 265044: 7785200698618395, 265050: 1, 265052: 1})) relay-1 | 2026-10-05 01:09:15.311 INFO : MOQT event: handle d18 Setup: Setup(options={7: b'moq-lite-rs', 265044: 7785200698618395, 265050: 1, 265052: 1}) relay-1 | 2026-10-05 01:09:15.311 INFO : MOQT: d18 server control write-uni: 15 relay-1 | 2026-10-05 01:09:15.313 INFO : MOQT event: control message parsed: Setup(options={7: b'moq-lite-rs', 265044: 3636805807829993, 265050: 1, 265052: 1})) relay-1 | 2026-10-05 01:09:15.313 INFO : MOQT event: handle d18 Setup: Setup(options={7: b'moq-lite-rs', 265044: 3636805807829993, 265050: 1, 265052: 1}) relay-1 | 2026-10-05 01:09:15.313 INFO : MOQT: d18 server control write-uni: 15 relay-1 | 2026-10-05 01:09:15.314 INFO : MOQT event: control message parsed: PublishNamespace(request_id=0, namespace=["moq-test", "interop"], parameters={})) relay-1 | 2026-10-05 01:09:15.314 INFO : relay: announce ns=(b'moq-test', b'interop') -> 1 publisher(s) relay-1 | 2026-10-05 01:09:15.314 INFO : MOQT send: RequestOk(request_id=0, parameters=None) request_id: 0 namespace: (b'moq-test', b'interop') test-client-1 | ok 2 - announce-only test-client-1 | --- test-client-1 | duration_ms: 703 test-client-1 | negotiated: moq-transport-18 test-client-1 | outcome: "PUBLISH_NAMESPACE not rejected: session healthy 700 ms later (moq-net does not surface PUBLISH_NAMESPACE_OK)" test-client-1 | ... relay-1 | 2026-10-05 01:09:16.015 INFO : MOQT: request 0 cancelled by STOP_SENDING (stream 4) relay-1 | 2026-10-05 01:09:16.016 INFO : MOQT event: control message parsed: Setup(options={7: b'moq-lite-rs', 265044: 7067710943682179, 265050: 1, 265052: 1})) relay-1 | 2026-10-05 01:09:16.016 INFO : MOQT event: handle d18 Setup: Setup(options={7: b'moq-lite-rs', 265044: 7067710943682179, 265050: 1, 265052: 1}) relay-1 | 2026-10-05 01:09:16.017 INFO : MOQT: d18 server control write-uni: 15 relay-1 | 2026-10-05 01:09:16.018 INFO : MOQT event: control message parsed: PublishNamespace(request_id=0, namespace=["moq-test", "interop"], parameters={})) relay-1 | 2026-10-05 01:09:16.018 INFO : relay: announce ns=(b'moq-test', b'interop') -> 2 publisher(s) relay-1 | 2026-10-05 01:09:16.018 INFO : MOQT send: RequestOk(request_id=0, parameters=None) request_id: 0 namespace: (b'moq-test', b'interop') relay-1 | 2026-10-05 01:09:16.518 INFO : MOQT: request 0 cancelled by STOP_SENDING (stream 4) test-client-1 | ok 3 - publish-namespace-done test-client-1 | --- test-client-1 | duration_ms: 804 test-client-1 | negotiated: moq-transport-18 test-client-1 | outcome: "PUBLISH_NAMESPACE_DONE sent; session healthy 300 ms later" test-client-1 | ... relay-1 | 2026-10-05 01:09:16.821 INFO : MOQT event: control message parsed: Setup(options={7: b'moq-lite-rs', 265044: 7135575449646489, 265050: 1, 265052: 1})) relay-1 | 2026-10-05 01:09:16.821 INFO : MOQT event: handle d18 Setup: Setup(options={7: b'moq-lite-rs', 265044: 7135575449646489, 265050: 1, 265052: 1}) relay-1 | 2026-10-05 01:09:16.822 INFO : MOQT: d18 server control write-uni: 15 relay-1 | 2026-10-05 01:09:16.822 INFO : MOQT event: control message parsed: SubscribeNamespace(request_id=0, namespace_prefix=["nonexistent", "namespace"], subscribe_options=0, parameters={})) relay-1 | 2026-10-05 01:09:16.823 INFO : MOQT send: RequestOk(request_id=0, parameters=None) relay-1 | 2026-10-05 01:09:16.823 INFO : relay: subscribe-namespace prefix=(b'nonexistent', b'namespace') (d18 discovery, subs=1) test-client-1 | ok 4 - subscribe-error # SKIP moq-net answers a request for an unannounced path locally (unroutable); no SUBSCRIBE reached the relay test-client-1 | --- test-client-1 | duration_ms: 304 test-client-1 | negotiated: moq-transport-18 test-client-1 | outcome: "request answered locally: unroutable" test-client-1 | ... test-client-1 | ok 5 - rendezvous-timeout # SKIP not implemented: moq-net 0.3 cannot put RENDEZVOUS_TIMEOUT on a SUBSCRIBE test-client-1 | --- test-client-1 | duration_ms: 0 test-client-1 | ... relay-1 | 2026-10-05 01:09:17.125 INFO : MOQT event: control message parsed: Setup(options={7: b'moq-lite-rs', 265044: 8364407207094291, 265050: 1, 265052: 1})) relay-1 | 2026-10-05 01:09:17.126 INFO : MOQT event: handle d18 Setup: Setup(options={7: b'moq-lite-rs', 265044: 8364407207094291, 265050: 1, 265052: 1}) relay-1 | 2026-10-05 01:09:17.126 INFO : MOQT: d18 server control write-uni: 15 relay-1 | 2026-10-05 01:09:17.127 INFO : MOQT event: control message parsed: PublishNamespace(request_id=0, namespace=["moq-test", "interop"], parameters={})) relay-1 | 2026-10-05 01:09:17.127 INFO : relay: announce ns=(b'moq-test', b'interop') -> 3 publisher(s) relay-1 | 2026-10-05 01:09:17.127 INFO : MOQT send: RequestOk(request_id=0, parameters=None) request_id: 0 namespace: (b'moq-test', b'interop') relay-1 | 2026-10-05 01:09:17.428 INFO : MOQT event: control message parsed: Setup(options={7: b'moq-lite-rs', 265044: 1901862413574919, 265050: 1, 265052: 1})) relay-1 | 2026-10-05 01:09:17.429 INFO : MOQT event: handle d18 Setup: Setup(options={7: b'moq-lite-rs', 265044: 1901862413574919, 265050: 1, 265052: 1}) relay-1 | 2026-10-05 01:09:17.429 INFO : MOQT: d18 server control write-uni: 15 relay-1 | 2026-10-05 01:09:17.429 INFO : MOQT event: control message parsed: SubscribeNamespace(request_id=0, namespace_prefix=["moq-test", "interop"], subscribe_options=0, parameters={})) relay-1 | 2026-10-05 01:09:17.430 INFO : MOQT send: RequestOk(request_id=0, parameters=None) relay-1 | 2026-10-05 01:09:17.430 INFO : MOQT send: Namespace(namespace_suffix=()) relay-1 | 2026-10-05 01:09:17.430 INFO : relay: subscribe-namespace prefix=(b'moq-test', b'interop') (d18 discovery, subs=2) relay-1 | 2026-10-05 01:09:17.430 INFO : MOQT event: control message parsed: Subscribe(request_id=2, track_namespace=["moq-test", "interop"], track_name="test-track", priority=255, group_order=2, forward=1, filter_type=2, start_group=None, start_object=None, end_group=None, parameters={}, track_alias=None, libquicr_compat=False)) relay-1 | 2026-10-05 01:09:17.431 INFO : MOQT send: Subscribe(request_id=1, track_namespace=["moq-test", "interop"], track_name="test-track", priority=None, group_order=None, forward=1, filter_type=2, start_group=0, start_object=0, end_group=0, parameters={}, track_alias=None, libquicr_compat=False) relay-1 | 2026-10-05 01:09:17.432 INFO : MOQT event: control message parsed: SubscribeOk(request_id=1, track_alias=1, expires=None, group_order=2, content_exists=0, largest_group_id=None, largest_object_id=None, parameters={}, track_extensions={8: 1000, 14: 255})) relay-1 | 2026-10-05 01:09:17.432 INFO : MOQT event: handle SubscribeOk(request_id=1, track_alias=1, expires=None, group_order=2, content_exists=0, largest_group_id=None, largest_object_id=None, parameters={}, track_extensions={8: 1000, 14: 255}) relay-1 | 2026-10-05 01:09:17.432 INFO : Track: subscribed (direct) to moq-test/interop/test-track relay-1 | 2026-10-05 01:09:17.432 INFO : relay: upstream established ns=(b'moq-test', b'interop') track=test-track alias=1 relay-1 | 2026-10-05 01:09:17.432 INFO : MOQT send: SubscribeOk(request_id=2, track_alias=0, expires=0, group_order=1, content_exists=0, largest_group_id=None, largest_object_id=None, parameters={}, track_extensions=None) relay-1 | 2026-10-05 01:09:17.432 INFO : relay: subscribe ns=(b'moq-test', b'interop') track=b'test-track' -> SUBSCRIBE_OK (fanout=1) test-client-1 | ok 6 - announce-subscribe test-client-1 | --- test-client-1 | duration_ms: 612 test-client-1 | negotiated: moq-transport-18 test-client-1 | outcome: "relay routed the SUBSCRIBE to the publisher (0 ms), no REQUEST_ERROR followed" test-client-1 | ... relay-1 | 2026-10-05 01:09:17.736 INFO : MOQT event: control message parsed: SubscribeDone(request_id=1, status_code=0, stream_count=0, reason=internal error)) relay-1 | 2026-10-05 01:09:17.737 INFO : MOQT event: handle SubscribeDone request_id=1 status=0 streams=0 relay-1 | 2026-10-05 01:09:17.737 INFO : relay: upstream PUBLISH_DONE ((b'moq-test', b'interop'), b'test-track') status=0 streams=0 -> 1 subscriber(s), objects in=0 out=0, upstream streams ended=0 relay-1 | 2026-10-05 01:09:17.737 INFO : MOQT: request 0 cancelled by STOP_SENDING (stream 4) relay-1 | 2026-10-05 01:09:17.737 INFO : MOQT: request 1 cancelled by STOP_SENDING (stream 1) relay-1 | 2026-10-05 01:09:17.737 INFO : MOQT send: SubscribeDone(request_id=2, status_code=0, stream_count=0, reason=internal error) relay-1 | 2026-10-05 01:09:17.738 INFO : MOQT event: control message parsed: Setup(options={7: b'moq-lite-rs', 265044: 6986593867924413, 265050: 1, 265052: 1})) relay-1 | 2026-10-05 01:09:17.738 INFO : MOQT event: handle d18 Setup: Setup(options={7: b'moq-lite-rs', 265044: 6986593867924413, 265050: 1, 265052: 1}) relay-1 | 2026-10-05 01:09:17.738 INFO : MOQT: d18 server control write-uni: 15 relay-1 | 2026-10-05 01:09:17.739 INFO : MOQT event: control message parsed: SubscribeNamespace(request_id=0, namespace_prefix=["moq-test", "interop"], subscribe_options=0, parameters={})) relay-1 | 2026-10-05 01:09:17.739 INFO : MOQT send: RequestOk(request_id=0, parameters=None) relay-1 | 2026-10-05 01:09:17.739 INFO : MOQT send: Namespace(namespace_suffix=()) relay-1 | 2026-10-05 01:09:17.739 INFO : relay: subscribe-namespace prefix=(b'moq-test', b'interop') (d18 discovery, subs=3) relay-1 | 2026-10-05 01:09:19.142 INFO : MOQT event: control message parsed: Setup(options={7: b'moq-lite-rs', 265044: 4417882463395265, 265050: 1, 265052: 1})) relay-1 | 2026-10-05 01:09:19.142 INFO : MOQT event: handle d18 Setup: Setup(options={7: b'moq-lite-rs', 265044: 4417882463395265, 265050: 1, 265052: 1}) relay-1 | 2026-10-05 01:09:19.142 INFO : MOQT: d18 server control write-uni: 15 relay-1 | 2026-10-05 01:09:19.143 INFO : MOQT event: control message parsed: PublishNamespace(request_id=0, namespace=["moq-test", "interop"], parameters={})) relay-1 | 2026-10-05 01:09:19.143 INFO : relay: announce ns=(b'moq-test', b'interop') -> 4 publisher(s) relay-1 | 2026-10-05 01:09:19.143 INFO : MOQT send: Namespace(namespace_suffix=()) relay-1 | 2026-10-05 01:09:19.143 INFO : MOQT send: Namespace(namespace_suffix=()) relay-1 | 2026-10-05 01:09:19.143 INFO : MOQT send: RequestOk(request_id=0, parameters=None) request_id: 0 namespace: (b'moq-test', b'interop') relay-1 | 2026-10-05 01:09:20.144 INFO : MOQT event: control message parsed: Subscribe(request_id=2, track_namespace=["moq-test", "interop"], track_name="test-track", priority=255, group_order=2, forward=1, filter_type=2, start_group=None, start_object=None, end_group=None, parameters={}, track_alias=None, libquicr_compat=False)) relay-1 | 2026-10-05 01:09:20.144 INFO : MOQT send: Subscribe(request_id=1, track_namespace=["moq-test", "interop"], track_name="test-track", priority=None, group_order=None, forward=1, filter_type=2, start_group=0, start_object=0, end_group=0, parameters={}, track_alias=None, libquicr_compat=False) relay-1 | 2026-10-05 01:09:20.145 INFO : MOQT event: control message parsed: SubscribeOk(request_id=1, track_alias=1, expires=None, group_order=2, content_exists=0, largest_group_id=None, largest_object_id=None, parameters={}, track_extensions={8: 1000, 14: 255})) relay-1 | 2026-10-05 01:09:20.145 INFO : MOQT event: handle SubscribeOk(request_id=1, track_alias=1, expires=None, group_order=2, content_exists=0, largest_group_id=None, largest_object_id=None, parameters={}, track_extensions={8: 1000, 14: 255}) relay-1 | 2026-10-05 01:09:20.145 INFO : Track: subscribed (direct) to moq-test/interop/test-track relay-1 | 2026-10-05 01:09:20.146 INFO : relay: upstream established ns=(b'moq-test', b'interop') track=test-track alias=1 relay-1 | 2026-10-05 01:09:20.146 INFO : MOQT send: SubscribeOk(request_id=2, track_alias=0, expires=0, group_order=1, content_exists=0, largest_group_id=None, largest_object_id=None, parameters={}, track_extensions=None) relay-1 | 2026-10-05 01:09:20.146 INFO : relay: subscribe ns=(b'moq-test', b'interop') track=b'test-track' -> SUBSCRIBE_OK (fanout=1) test-client-1 | ok 7 - subscribe-before-announce test-client-1 | --- test-client-1 | duration_ms: 2712 test-client-1 | negotiated: moq-transport-18 test-client-1 | outcome: "relay still advertised moq-test/interop from an earlier session when the subscriber connected, so subscribe-first ordering is unverified; after the late announce the SUBSCRIBE reached the publisher (0 ms), no REQUEST_ERROR followed" test-client-1 | ... relay-1 | 2026-10-05 01:09:20.449 INFO : MOQT event: control message parsed: SubscribeDone(request_id=1, status_code=0, stream_count=0, reason=internal error)) relay-1 | 2026-10-05 01:09:20.449 INFO : MOQT event: handle SubscribeDone request_id=1 status=0 streams=0 relay-1 | 2026-10-05 01:09:20.449 INFO : relay: upstream PUBLISH_DONE ((b'moq-test', b'interop'), b'test-track') status=0 streams=0 -> 1 subscriber(s), objects in=0 out=0, upstream streams ended=0 relay-1 | 2026-10-05 01:09:20.449 INFO : MOQT send: SubscribeDone(request_id=2, status_code=0, stream_count=0, reason=internal error) relay-1 | 2026-10-05 01:09:20.449 INFO : MOQT: request 0 cancelled by STOP_SENDING (stream 4) relay-1 | 2026-10-05 01:09:20.449 INFO : MOQT: request 1 cancelled by STOP_SENDING (stream 1) test-client-1 exited with code 0 Aborting on container exit... Container main-test-client-1 Stopping Container main-test-client-1 Stopped Container main-relay-1 Stopping Container main-relay-1 Stopped Test results in mlog/ make[1]: Leaving directory '/home/runner/work/moq-interop-runner/moq-interop-runner/main'