BenchCI ExamplesΒΆ

This page contains realistic example scenarios showing how to use BenchCI in different setups.

Each example includes:

  • bench.yaml β†’ hardware configuration

  • suite.yaml β†’ test logic

These are not artificial β€œall-in-one” examples β€” they reflect real-world use cases.


πŸ“¦ Example ScenariosΒΆ


1. Device Boot ValidationΒΆ

Folder: examples/device_boot_validation/

Use CaseΒΆ

Validate that firmware:

  • boots correctly

  • prints expected logs

  • responds to commands over UART

CoversΒΆ

  • OpenOCD flashing

  • UART transport

  • flash, reset, send_uart, expect_uart

When to useΒΆ

  • firmware smoke tests

  • CI validation after build

  • basic bring-up


2. Local GPIO Reset & Ready MonitoringΒΆ

Folder: examples/local_gpio_reset_and_ready/

Use CaseΒΆ

Control reset lines and verify device readiness using Linux GPIO.

CoversΒΆ

  • local_gpio

  • gpio_set, gpio_expect, gpio_wait_edge

  • manual reset sequencing

When to useΒΆ

  • hardware bring-up

  • boards without reliable debugger reset

  • interrupt validation


3. Remote GPIO Power CyclingΒΆ

Folder: examples/remote_gpio_power_cycle/

Use CaseΒΆ

Control power and signals from a different machine via Agent.

CoversΒΆ

  • remote_gpio

  • distributed setups

  • power cycling DUT

When to useΒΆ

  • CI runner β‰  hardware machine

  • remote labs

  • shared hardware infrastructure


4. Modbus RTU PLC ValidationΒΆ

Folder: examples/modbus_rtu_plc_validation/

Use CaseΒΆ

Validate a PLC or RS-485 device.

CoversΒΆ

  • Modbus RTU transport

  • register + coil operations

When to useΒΆ

  • industrial devices

  • embedded fieldbus testing


5. Modbus TCP Gateway ValidationΒΆ

Folder: examples/modbus_tcp_gateway_validation/

Use CaseΒΆ

Test Ethernet-connected industrial devices.

CoversΒΆ

  • Modbus TCP

  • network-based communication

When to useΒΆ

  • gateways

  • PLC over Ethernet

  • integration tests


6. CAN ECU HandshakeΒΆ

Folder: examples/can_ecu_handshake/

Use CaseΒΆ

Validate request/response behavior on CAN bus.

CoversΒΆ

  • CAN transport

  • send_can, expect_can

When to useΒΆ

  • automotive ECUs

  • multi-node embedded systems


7. CubeProgrammer Helper BoardΒΆ

Folder: examples/helper_board_cubeprog/

Use CaseΒΆ

Flash STM32 device using CubeProgrammer.

CoversΒΆ

  • cubeprog backend

  • UART validation

When to useΒΆ

  • STM32 production workflows

  • environments without OpenOCD



9. ESP32 esptool WorkflowΒΆ

Folder: examples/esp32_esptool_wifi_probe/

Use CaseΒΆ

Flash ESP32 firmware and validate startup.

CoversΒΆ

  • esptool backend

  • UART validation

When to useΒΆ

  • ESP32 / ESP-IDF projects

  • IoT devices


10. Mock GPIO SimulationΒΆ

Folder: examples/mock_gpio_simulation/

Use CaseΒΆ

Test logic without real hardware.

CoversΒΆ

  • mock_gpio

  • GPIO logic testing

When to useΒΆ

  • development without hardware

  • CI pipelines without devices


11. Multi-Node System TestΒΆ

Folder: examples/multi_node_system_smoke/

Use CaseΒΆ

Coordinate multiple devices in one test.

CoversΒΆ

  • multiple nodes

  • cross-device interaction

When to useΒΆ

  • system-level testing

  • DUT + controller setups


🧠 How to Use These Examples¢

  1. Copy an example folder:

cp -r examples/device_boot_validation my-test cd my-test

  1. Adjust hardware-specific values:

  • serial ports (e.g. /dev/ttyUSB0)

  • IP addresses

  • GPIO lines

  • probe serials

  • firmware paths

  1. Run:

benchci run -b bench.yaml -s suite.yaml -a build/fw.elf


⚠️ Important Notes¢

These are templatesΒΆ

You MUST adapt:

  • ports

  • addresses

  • hardware wiring

  • expected responses


One GPIO backend per nodeΒΆ

Currently:

  • a node can use only one GPIO backend

Do NOT mix:

  • local_gpio and remote_gpio in the same node


Use smaller benches in practiceΒΆ

Real setups typically:

  • use 1–2 nodes

  • use 1–2 transports

These examples show capability coverage, not minimal setups.



🎯 Summary¢

These examples demonstrate that BenchCI supports:

  • multiple flashing backends

  • multiple transport protocols

  • GPIO automation (local and remote)

  • multi-node orchestration

  • CI-friendly execution

BenchCI scales from:

single board debugging
β†’ to
distributed hardware validation systems