Export results #

Litmus has two CLI surfaces that take a run and produce a file:

  • litmus show <run_id> -f <fmt> — generates a report (HTML for browsers, PDF for distribution, JSON / CSV for downstream tools). Driven by report templates.
  • litmus export <id> -f <fmt>replays the event stream for a run or session into a target format. The supported formats are the test-and-measurement interchange ones: CSV, JSON, STDF, HDF5, TDMS, MDF4, ATML.

Pick the command by what the receiver wants. A QA engineer wants PDF reports → litmus show -f pdf. A semiconductor vendor wants STDF → litmus export -f stdf.

Prerequisites #

  • At least one completed run on disk
  • A run ID or session ID (prefix match works for both — get one from litmus runs or the operator UI's Results list)

Reports — litmus show -f #

litmus show <run_id>              # text summary to the terminal
litmus show <run_id> -f html      # one HTML file
litmus show <run_id> -f pdf -o reports/   # PDF into reports/
litmus show <run_id> -f json      # one JSON file with the run's structured data
litmus show <run_id> -f csv       # tabular CSV (one row per measurement)

The HTML and PDF formats render via Jinja2 templates (default template is default; switch with -t <name>). JSON and CSV are fixed-format writers — the -t option doesn't apply to them. Output path defaults to the current directory; override with -o.

FormatBest for
htmlOpen in a browser, share via screenshot, embed in confluence
pdfArchive or attach to a NCR / bug report
jsonProgrammatic consumption when you want structured run + step + measurement data
csvSpreadsheet analysis when one row per measurement is what you want

Reports run against the denormalized parquet for the run. They include the run summary, steps, measurements, and (when captured) environment snapshot.

Interchange exports — litmus export -f #

litmus export <id> -f csv                 # default output dir: exports/csv/
litmus export <id> -f json -o /tmp/out/   # explicit output dir
litmus export <id> -f stdf                # STDF v4 for semiconductor test floors
litmus export <id> -f atml                # ATML / IEEE 1671 instances
litmus export <id> -f hdf5                # HDF5 (scientific computing)
litmus export <id> -f tdms                # NI TDMS (LabVIEW ecosystem)
litmus export <id> -f mdf4                # ASAM MDF4 (automotive measurement data)

<id> accepts a run id OR a session id — the CLI auto-detects by prefix-matching the events file. Output directory defaults to exports/<fmt>/ when -o isn't given.

FormatFormat details
csvFlat CSV — one row per measurement
jsonStructured JSON mirroring the event stream
stdfStandard Test Data Format (v4) — semiconductor test floors / Spotfire / Examinator
atmlATML / IEEE 1671 instance documents — ATE traceability
hdf5Hierarchical Data Format — scientific computing
tdmsNI TDMS — LabVIEW / DIAdem
mdf4ASAM MDF4 — automotive measurement

Mechanics differ from reports: litmus export reads the run's events from the Arrow IPC store and replays them through a subscriber registered for the requested format. This is what makes the exporter set extensible — new formats register a subscriber class with the format_name field and they show up in the -f choices.

Discoverability — what's installed #

litmus export <run_id> -f bogus
# No subscriber registered for format 'bogus'.
# Available: atml, csv, hdf5, json, mdf4, stdf, tdms

Asking for an unknown format prints the current list of installed subscribers. The format set is fixed by the Litmus package — new formats need to land as built-in subscribers in src/litmus/data/exporters/; there is no plugin / entry-point extension surface today.

Common tasks #

  • Daily PDF reports for the production line — wrap litmus show $RUN -f pdf -o daily-reports/ in your build / shift-end script.
  • Feed runs into a semi vendor's STDF analyzerlitmus export $RUN -f stdf -o stdf-out/, ship the file.
  • Build a custom downstream tool that reads CSVlitmus export -f csv to a known path, your tool picks it up.
  • Bulk-export an entire session — pass the session ID instead of a run ID; the CLI replays every run in the session.

See also #

  • Lakehouse import — when the receiver wants parquet rows directly, skip export entirely
  • Grafana — when the receiver wants live dashboards instead of files
  • litmus show — CLI reference for the report path
  • litmus export — CLI reference for the interchange path
  • Three stores — where the parquet and event data live on disk