Fingerprint
Golden-run regression testing from inside the app: distil the loaded recording into a small, git-committable baseline, then gate later runs against it.
Needs: a recording.
What it shows
Every metric the recording can pin, as a tree: sections (Summary, Tasks, User Traces, Timers, Comms Paths, Capture Health), the items in each (a task, a channel, a timer, a path) and their metrics. Counts are rates per second so runs of different lengths compare fairly; percentages, times and sizes stay absolute. Each row has:
- a checkbox: checked metrics are what a saved fingerprint contains;
- Value: this recording;
- Warn / Fail %: the tolerance band for the metric;
- once a baseline is loaded, Baseline (or its min..max envelope), Delta and a status chip: pass, warn, fail, missing (in the baseline, not in this run) or new (not in the baseline).
The compare bar names both sides, shows the verdict badge and the counts, and flags provenance differences (a baseline from a Zephyr build gating a FreeRTOS run, a different CPU clock).
Workflow
- Open or capture a recording; the tree fills.
- Untick what should not gate (a diagnostic channel, a debug task). Set thresholds: select a row and use Set Selected, or Set All for a blanket value. Metrics marked advisory (single-sample extremes such as a max jitter) never fail a run on their own.
- Save Fingerprint... writes a
.vafp.json. Commit it next to the firmware. - On the next run, Load Baseline... (a
.vafp.json, or a.vadbfingerprinted on the fly) and read the verdict. The baseline is remembered across restarts and re-applied to every recording you open or capture, with a one-line verdict in the log. - Pin Run keeps the current run in-session (up to five); click a pin to compare against it, its save glyph to keep it. Merge folds the current run and every pin into one envelope baseline, the same thing the CLI does with
--runs.
Double-click an item to open the view that shows its evidence (a timer lane, a comms path, a trace channel).
Tips
- The same file gates CI:
viewalyzer-cli query compare --recording run.vadb --baseline app.vafp.jsonexits 0 on pass or warn, 2 on a regression. - A baseline written by the C++ ViewAlyzer loads as well; four summary metrics are defined differently between the two engines and will disagree until reconciled (see the CLI reference).
- Baselines are plain JSON: edit a metric's
tol_pct/warn_pctby hand or delete items you do not want pinned.