Test resource benchmarks#

Simtools records the resource requirements of its test suites in a separate benchmark dashboard. The dashboard is updated by the scheduled and post-merge CI-test-benchmarks workflow. It contains the unit and integration suite totals and the slower integration-test nodes, separated by model version.

Each benchmark suite runs once and serially on ubuntu-24.04. A pytest plugin records wall time, CPU time, peak RSS of pytest and its application descendants, on hosted runners. These measurements are noisy; use repeated runs to identify trends.

For local resource measurements, install the test and benchmark extras with pip install -e '.[tests,benchmark]'.

Individual integration-test charts are published only when the test wall time meets the configurable threshold, which defaults to five seconds. Fast tests still run, contribute to the suite totals, and remain available in the raw workflow artifact. Change integration_min_wall_time when manually dispatching the workflow to investigate a different range.

To investigate a change manually, dispatch CI-test-benchmarks from the Actions page and provide the model-version list. Pull requests do not publish benchmark data. Existing correctness workflows remain the source of test status.

Excluding an integration test#

An application workflow can exclude one test from resource benchmarking while leaving normal integration CI unchanged. Set a non-empty reason in the YAML configuration:

applications:
- application: simtools-example
  exclude_from_resource_benchmark: "Requires an unstable external service."
  configuration:
    output_path: simtools-output

The reason and excluded test ID are included in the raw benchmark artifact. Use this only for workloads that are not representative or cannot produce a stable measurement.