v0.2: 5-peer x 10-min sustained load test #14

Closed
opened 2026-05-03 14:54:01 -04:00 by zgaetano · 0 comments
Owner

From the original WebRTC design doc:

Load test (one-shot, not CI)
Script opens 5 concurrent WHEP peers against one stream, holds 10 minutes, reports CPU/memory/packet-loss/jitter. Run once before cutting v1.

It never happened before v0.1.0-dragonfork shipped. Worth catching up on now — also serves as the first real consumer of the Prometheus dashboard from the observability issue.

Scope

  • Headless WHEP load script (Pion, no browser) at test/load/sustained.go or similar
  • Drives N concurrent peers against a single stream for T minutes (defaults: N=5, T=10)
  • Captures: CPU%, RSS, packet-loss%, jitter, p95 server-hop latency
  • Output is a markdown report that gets committed to test/load/results/YYYY-MM-DD-NxTm.md
  • Runs against a deployed instance, not in-process (so the Prometheus dashboard observes from the side)

Why now

Closes the deferred verification step from the v1 design. Validates v0.1 actually holds up before adding new features. Establishes a baseline for any future regression detection.

Open questions for design

  1. Test source — testsrc2 lavfi, or a recorded media file?
  2. Where do results live — committed to repo, or attached to the GitHub-style release?
  3. Should the script also exercise teardown paths (kill peer mid-stream) or pure happy path?

Lightweight design doc, then implement.

From the original WebRTC design doc: > **Load test (one-shot, not CI)** > Script opens 5 concurrent WHEP peers against one stream, holds 10 minutes, reports CPU/memory/packet-loss/jitter. Run once before cutting v1. It never happened before v0.1.0-dragonfork shipped. Worth catching up on now — also serves as the first real consumer of the Prometheus dashboard from the observability issue. ## Scope - Headless WHEP load script (Pion, no browser) at `test/load/sustained.go` or similar - Drives N concurrent peers against a single stream for T minutes (defaults: N=5, T=10) - Captures: CPU%, RSS, packet-loss%, jitter, p95 server-hop latency - Output is a markdown report that gets committed to `test/load/results/YYYY-MM-DD-NxTm.md` - Runs against a deployed instance, not in-process (so the Prometheus dashboard observes from the side) ## Why now Closes the deferred verification step from the v1 design. Validates v0.1 actually holds up before adding new features. Establishes a baseline for any future regression detection. ## Open questions for design 1. Test source — `testsrc2` lavfi, or a recorded media file? 2. Where do results live — committed to repo, or attached to the GitHub-style release? 3. Should the script also exercise teardown paths (kill peer mid-stream) or pure happy path? Lightweight design doc, then implement.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: zgaetano/datarhei-dragonfork-core#14
No description provided.