PLC runtime — verification¶
Test cases verifying the PLC runtime heart family (PLC runtime heart on iceoryx2 (FEAT_0010)). Coverage today: the bounded-time dispatch sub-feature (Bounded-time dispatch (FEAT_0017)) and its zero-allocation requirement (No heap allocation in dispatch (REQ_0060)); the scan-cycle observability sub-feature (Scan-cycle observability (FEAT_0021)); and the PREEMPT_RT validation harness sub-feature (PREEMPT_RT validation harness (FEAT_0022)).
Zero-allocation dispatch¶
Goal. Confirm that steady-state iterations of
Fixture. Three executor configurations covering the three dispatch paths:
Each item / vertex returns Allocator instrumentation. A hand-rolled counting
Steps.
Expected outcome. All four assertions hold:
Negative case. Lives under
|
Scan-cycle observability¶
Test cases verifying the scan-cycle observability sub-feature (Scan-cycle observability (FEAT_0021)).
Goal. Confirm the Fixed-bucket histogram for ... (ADR_0060) histogram returns p50, p95, p99 values within the documented relative-error bound when fed a known reference distribution. Fixture. A standalone unit test in
Steps.
Expected outcome. All twelve assertions hold (3 quantiles × 2 distributions × 2 runs for stability). Lives under
|
Goal. A synthetic period violation produces the correct max-jitter readout. Fixture. Executor with one cyclic task at 10 ms scan period. The task body sleeps for a configurable extra delay on selected cycles to induce period jitter. Steps.
Expected outcome. Max jitter falls within the expected band. Lives under
|
Goal. Fixture. Executor with one cyclic task at 10 ms period. Steps.
Expected outcome. All three assertions hold. Lives under
|
Goal. Each completed scan cycle delivers exactly one
Fixture. Executor with two cyclic tasks (5 ms and 7 ms scan
periods) and a custom Steps.
Expected outcome. Push and pull paths report consistent aggregates. Lives under
|
Goal. The per-sample telemetry update path performs zero heap allocations under steady state. Fixture. Reuses the Steps.
Negative case. Replace the no-op task body with a
Expected outcome. Steady-state telemetry update performs zero heap allocations. Lives under
|
PREEMPT_RT validation harness¶
Test cases verifying the PREEMPT_RT validation harness sub-feature (PREEMPT_RT validation harness (FEAT_0022)). These tests do not validate the absolute jitter envelope — that is a manual procedure per Documented reproducer proce... (REQ_0112) and Harness as xtask, not CI gate (ADR_0061). The tests below verify that the harness itself is well-formed (it builds, emits valid output, and agrees with the runtime’s own telemetry).
Goal. The harness binary builds and runs to completion on a stock (non-PREEMPT_RT) Linux host without requiring elevated capabilities, and produces well-formed NDJSON on stdout. Fixture. GitHub Actions Linux x86_64 runner; the harness is
built with Steps.
Expected outcome. Smoke run succeeds; output is well-formed. Lives under |
Goal. The harness output conforms exactly to the documented NDJSON schema; no extra keys, no missing keys, correct value types. Fixture. An in-tree JSON Schema file
( Steps.
Expected outcome. Output is schema-conformant. Lives under |
Goal. The NDJSON cycle observations produced by the harness
agree with Fixture. A test variant of the harness that, after writing
its last NDJSON line, also writes a single Steps.
Expected outcome. Push and pull paths agree on the same data. Lives under |