diff --git a/.github/workflows/hitl.yml b/.github/workflows/hitl.yml index f59e8d2..b8611d4 100644 --- a/.github/workflows/hitl.yml +++ b/.github/workflows/hitl.yml @@ -1,9 +1,9 @@ name: HITL on: - push: - branches: [ hitl ] workflow_dispatch: + pull_request: + branches: [ master ] jobs: hitl: diff --git a/hitl/README.md b/hitl/README.md new file mode 100644 index 0000000..629b587 --- /dev/null +++ b/hitl/README.md @@ -0,0 +1,25 @@ +# Stabilizer HITL Testing + +This directory contains tooling required for Stabilizer hardware-in-the-loop (HITL) testing. + +There is a `Stabilizer` board connected at the Quartiq office that is accessible via a private HITL +repository in order to provide secure hardware testing of the stabilizer application in a public +repository. + +**Note**: In order to ensure application security, all HITL runs must first be approved by a Quartiq +representative before execution. + +# Configuration +* Stabilizer is configured with an ethernet connection to a router. The router runs a DHCP server for +the local network, and ensures that the Stabilizer used for these tests is available under the hostname `stabilizer-hitl`. +* An MQTT broker is running at the hostname `mqtt`. + +# HITL Workflow +The private HITL repository does the following: + +1. Check out this repository +2. Build firmware images using Cargo +3. Program stabilizer +4. Execute `hitl/run.sh` + +In order to add new HITL tests, update `run.sh` to include the necessary tests. diff --git a/hitl/run.sh b/hitl/run.sh new file mode 100755 index 0000000..a01a472 --- /dev/null +++ b/hitl/run.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +# Title: +# Stabilizer hardware-in-the-loop (HITL) test script. +# +# Description: +# This shell file is executed by the hardware runner in Quartiq's office to exercise the various +# hardware aspects of Stabilizer. + +# Enable shell operating mode flags. +set -eux + +# Set up python for testing +python3 -m venv --system-site-packages py +. py/bin/activate +python3 -m pip install -r requirements.txt + +# Test pinging Stabilizer. This exercises that: +# * DHCP is functional and an IP has been acquired +# * Stabilizer's network is functioning as intended +# * The stabilizer application is operational +ping -c 5 -w 20 stabilizer-hitl + +# Test the MQTT interface. +python3 miniconf.py dt/sinara/stabilizer afe/0 '"G2"' diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..a3d7fef --- /dev/null +++ b/requirements.txt @@ -0,0 +1 @@ +gmqtt