|
H5CPP
v1.14.0
Modern C++ templates for HDF5 serial and parallel I/O
|
|
Public dashboards of h5cpp build + test results across platforms and toolchains, plus per-PR test-coverage tracking. Open to community submissions — run the test suite on your own architecture and your results appear on the same dashboards.
H5CPP submits its CTest results — build status, test pass/fail counts, timing breakdowns, and (where instrumented) line-coverage data — to a public CDash dashboard. CDash is the Kitware-built companion to CTest: a web aggregator that lines up results from every submitting machine and renders them as a unified per-day grid.
→ Live dashboard: https://my.cdash.org/index.php?project=h5cpp
| Panel | Content |
|---|---|
| Nightly / Continuous / Experimental rows | Three submission tracks — Nightly (scheduled, full suite), Continuous (per-commit smoke), Experimental (ad-hoc runs from contributors) |
| Site column | One row per submitting machine — OS, compiler, HDF5 version, MPI flavour. Maintained by submitters, not centrally administered |
| Build warnings + errors | Compiler diagnostics aggregated from every submitting build, drill-down to source/line |
| Test pass / fail / timing | Per-test results across all submitting platforms in one grid; click any failing test for its captured output |
| Coverage (when instrumented) | Per-file line-coverage percentages from builds compiled with -coverage / -fprofile-arcs -ftest-coverage |
| Dynamic analysis | Valgrind / sanitizer reports if the submitter enabled them |
The dashboard cuts the matrix of *(platform × compiler × HDF5 version × test)* into a navigable surface — a regression that only fires on Clang 16 + HDF5 1.14.4 + macOS-arm64 shows up as one cell in the grid, exactly where you'd expect.
HDF5 has a wide combinatorial surface:
No single CI runner can cover every cell of this matrix. CDash solves the visibility half: contributors can each test the cells they care about (or have access to), and the aggregated view tells the maintainers which combinations are healthy and which are flapping.
The submission flow is built into the repo's CMakeLists.txt. If you have a build of h5cpp on a platform / configuration that isn't currently represented on the dashboard (different OS, different compiler version, exotic CPU architecture, custom HDF5 build), you can submit your results with three commands:
The -D Experimental track is appropriate for one-off submissions from contributors. (Maintainer machines run Nightly or Continuous on a schedule.) Experimental builds appear under their own row on the dashboard, tagged with the submitter's hostname.
The CTestConfig.cmake at the repository root hard-codes:
| Setting | Value |
|---|---|
| Project name | h5cpp |
| Submit URL | https://my.cdash.org/submit.php?project=h5cpp |
| Nightly start time | 01:00 UTC |
— so the ctest submission lands at the right project automatically; no per-user setup required.
This is genuinely community infrastructure — the dashboard is more useful the more cells of the matrix get populated.
H5CPP exposes test coverage via two complementary services. Submitters and reviewers can pick the one that matches their workflow.
The canonical coverage view runs through Codecov's GitHub integration — every push and pull request to the release branch triggers a coverage upload that lights up the corresponding PR with a coverage delta comment, a coverage diff annotation, and a branch-level dashboard:
→ Codecov dashboard: https://app.codecov.io/gh/vargalabs/h5cpp/tree/release
What you get on Codecov:
release branchReviewers normally check Codecov first when evaluating a PR's test impact — the coverage delta is the at-a-glance signal for "did the test suite grow with the new code?"
When a contributor configures their own build with coverage instrumentation, the same ctest -D submission flow pushes coverage data to the Coverage tab of the CDash dashboard:
CDash's Coverage tab is more permissive than Codecov: any submitter (not just CI) can push coverage from any build / compiler / HDF5-version combination — useful for validating coverage on platforms CI doesn't reach (ARM Linux, exotic HDF5 builds, custom MPI flavours).
| Service | When to use | Granularity |
|---|---|---|
| Codecov | Reviewing a PR; tracking the release branch trendline | Per-file / per-function / per-PR diff on the canonical CI run |
| CDash Coverage | Validating an off-CI platform configuration | Per-submitter, per-build — same matrix as the test grid |
Coverage instrumentation is opt-in on the CDash side (the -coverage flags above) and ~2× test-suite duration when active, so the CDash Coverage submissions typically run separately from the main build matrix. The Codecov uploads happen automatically on every CI run — no submitter action required.
bench/ suite carries the comparative performance workloads, complementary to the CDash testing dashboard