A plugin’s tests have to run somewhere. This page covers the four test surfaces ADOS plugin authors use, in order of cost and fidelity.Documentation Index
Fetch the complete documentation index at: https://docs.altnautica.com/llms.txt
Use this file to discover all available pages before exploring further.
1. Pure-Python unit tests with a mock backend
The cheapest pass. Most driver plugins ship aMock<Bus>Backend
fixture (MockUvcBackend, MockSerialBackend, MockMavlinkRouter)
that the driver constructor accepts in place of the real device.
2. The plugin harness, GCS side
@altnautica/plugin-sdk/harness mounts your plugin against an
in-memory transport, captures every RPC, and lets you inject
telemetry, events, config changes, and theme updates without
running Mission Control.
sdk-typescript for the full
harness reference.
3. SITL (software in the loop)
ArduPilot SITL covers everything FC-side: arming, modes, missions, parameters, mount commands, ROI. Run it on the dev machine and have the agent talk to it the same way it would talk to a real flight controller. The reference MAVLink Gimbal v2 plugin tests against ArduPilot SITL exactly this way. SITL launches via the ADOS Mission Control “SITL launcher” tool. Once SITL is running, the agent’s MAVLink router connects totcp:127.0.0.1:5760, the gimbal driver
registers, and command_attitude(pitch=-30, yaw=45) flows through
to a simulated mount whose state the test asserts on.
SITL does not simulate cameras, LiDARs, payloads, or vendor
serial protocols. For those, fall back to the mock backend.
4. Hardware in the loop on a bench rig
The full pass. A real SBC (Pi 4B or Rock 5C Lite) with the agent installed viainstall.sh, the real device on USB or serial, and
your plugin packed and installed via ados plugin install <archive>.
Bench-rig testing is what closes the loop on radiometric accuracy,
timing jitter, hotplug behaviour, and vendor-binary integration.
Run it before cutting a release tag.
A good bench-rig session captures:
journalctl -u ados-plugin-<id>while exercising the device- A
.bagof telemetry over the test window - A photo or short video of the rig and the device under test
What our reference plugins ship
| Plugin | Mock backend | Harness | SITL | Bench |
|---|---|---|---|---|
| Battery Health Panel | n/a (no device) | yes | n/a | yes |
| FLIR Lepton USB UVC | MockUvcBackend | yes | n/a | gated on hardware |
| MAVLink Gimbal v2 | MockMavlinkRouter | yes | yes | gated on hardware |
See also
- SDK TypeScript for the harness reference.
- Driver layer for the driver base-class contract.