every.channel/evolution/proposals/ECP-0031-hdhr-e2e-test.md
2026-02-15 16:17:27 -05:00

1.4 KiB

ECP-0031: HDHomeRun End-to-End Test (Single Host, Two Nodes)

Status: Draft

Problem

We need a real end-to-end test that exercises the full ingestion and transport path against a real HDHomeRun on the LAN. Unit tests cover a lot of logic, but they cannot validate:

  • live TS ingest from the tuner
  • chunking on real packets
  • manifest creation/signing
  • stream encryption/decryption
  • MoQ publish/subscribe over QUIC between two nodes
  • subscriber verification and HLS write-out

Decision

Add an ignored integration test that:

  • spawns ec-node moq-publish hdhr ... against a user-provided HDHomeRun host and channel
  • reads the publisher's printed endpoint addr, broadcast name, and track name
  • spawns ec-node moq-subscribe ... --subscribe-manifests --require-manifest --network-secret ...
  • asserts that the subscriber writes index.m3u8 and at least one segment_* file

The test is opt-in and runs only when environment variables are present:

  • EVERY_CHANNEL_E2E_HDHR_HOST
  • EVERY_CHANNEL_E2E_HDHR_CHANNEL

Details

  • Publisher uses --publish-manifests --epoch-chunks 1 --network-secret <hex>.
  • Subscriber uses --require-manifest --max-invalid-chunks 0 to enforce verification.
  • A new subscriber flag --stop-after N allows deterministic termination.

Consequences

  • Local developers can validate true end-to-end behavior before sharing builds.
  • CI remains unaffected unless explicitly enabled.