Skip to content

Testing harness #3

Description

@dtinth

Destination

Open-ended by design (dtinth): this map has no fixed endpoint — the direction is get the Jamulus codebase under test, and we chart more as we explore ("the mapping part of wayfinding is more useful than reaching a fixed destination"). Both unit tests and smoke tests are wanted eventually — different benefits, limitations, and confidence levels; separate PRs. Milestones along the way, not destinations:

  1. First upstream PR: opened — jamulussoftware/jamulus#3828, in upstream review.
  2. Smoke testing explored and eventually upstreamed (see its ticket).

Notes

  • Tooling decided: qmake + QtTest, staying in-family with Jamulus.pro (no CMake/Catch2 for now).
  • This fork is a free experimentation space; upstream PRs must stay very small.
  • All upstream-facing activity (issues, PRs, review replies) is posted by @dtinth personally; the agent prepares code and draft text in this fork only.
  • There are informal signals that upstream would welcome an automated testing harness.
  • This effort carries execution: building the harness in the fork and preparing the upstream PR are in scope, not just decisions.
  • Repo hygiene: no agent/tooling scratch files in the working tree.
  • Skills for ticket sessions: /tdd (test implementation), /prototype (harness spikes), /grilling + /domain-modeling (decisions).
  • Background: initial assessment and evidence + churn analysis in this issue's comments. Pre-map decisions recorded there: upstreaming is the goal, qmake+QtTest, first targets protocol.cpputilbuffer.

Decisions so far

Not yet specified

  • Exact contents and narrative of the first upstream PR (sharpens after the prototype and research tickets resolve).
  • How upstream review feedback gets worked once the PR is open.
  • Later suites and their order: buffer/jitter regressions, wider util coverage, recorder golden-file tests, JSON-RPC surface tests.
  • Smoke-test upstreaming (parked side-quest per dtinth, 2026-07-23): the headless build fixes (three one-liners — verification uncovered a third, link-stage bug the old workaround masked) are upstream as issue #3825 and PR #3826 (fronted by dtinth, first upstream PR of this effort). Once merged, the eventual smoke PR ships zero production changes.
  • Fault-injection integration tier on top of the smoke test (TCP fallback per upstream PR Support TCP for protocol messages jamulussoftware/jamulus#3636 — pljones asked there for test cases): needs CAP_NET_ADMIN (netns/iptables/tc) so local/privileged-only, not per-PR. A third party (mcfnord) reports having such a netns harness and offered to share scripts — unverified, to be assessed when this graduates.
  • Whether to revive fuzzing (afl-fuzz found the 2020 protocol bugs) on top of the harness, and what becomes of src/testbench.h.

Out of scope

  • GUI and audio-backend (sound card) testing.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions