Provision tests
Provision tests exercise a complete observing mode on deployed hardware. They run the Master Controller through provision, configure, capture, one or more measurement cycles, deconfigure, and deprovision. After each transition, the runner executes core checks and plugin-specific checks inside every product.
Test levels
- Unit tests
Validate functions and processing components without a deployed pipeline.
- Pipeline lifecycle tests
Start one pipeline and exercise its common state interface with controlled input.
- Provision tests
Exercise the real site inventory, stream graph, containers, hardware, monitoring, output storage, and cleanup.
Running provision tests
Provision testing is provided by the EDD core CLI, not by the standalone
deployment-only edd-tool 0.2 package. Invoke the core module explicitly to
avoid an ambiguous edd-tool entry point:
$ python -m edd.edd_tool.cli provision-test \
master-controller.example.org:7147 \
--include 'TEST_*' \
--exclude '*DESTRUCTIVE*' \
--sequence-file test_sequences.yml \
--output /data/edd_test_results
The command queries the Master Controller for its checkout, inventory, plugin list, and available provisions. It prints the selected modes and asks for an interactive confirmation before changing the system.
Sequence file
The optional YAML sequence file provides TMI values and configuration for specific provision-name patterns. The first matching pattern is used.
test_sequences:
- provision: "TEST_PULSAR_*"
sequence:
- TMI:
source-name: "J1939+2134"
project: "EDD_TEST"
ra: 294.9107
dec: 21.5831
scannum: "0001"
subscannum: "0"
measurement_prepare:
"dig_pack_controller*":
noise_diode_pattern:
percentage: 0.5
period: 1.0
One sequence may contain multiple configure entries and multiple measurement entries. Keep test metadata clearly distinguishable from science projects and write outputs to a dedicated test location.
Plugin test registration
A plugin registers tests for lifecycle stages and pipeline types through its
Python provision-test module. Its Ansible role passes that module as
provision_test_imports to EDD.core.common. Tests should check scientific
and operational invariants that generic state checks cannot cover, such as
packet progress, output rate, headers, generated files, spectra, or device lock.
Results and acceptance
The runner creates terminal, JSON, and HTML results with diagnostic output. Review checks marked for manual confirmation; a process exit code alone cannot validate a plotted bandpass or astronomical phase convention.
A provision passes commissioning only when it returns to unprovisioned
without leftover containers, buffers, queues, multicast senders, or files still
being written. Retain the report with the tested site and plugin revisions.