Repository for integration tests of the Equinor Flotilla robotics system. The term armada points to the integration tests deploying a large number of containers beyond the ones provided by Flotilla to perform full integration tests.
The integration tests shall replicate normal operation and error situations that can occur for a robot mission in Flotilla and determine whether the system handles the situation as expected. Whenever changes are made to the system, the integration tests will execute to verify that the behavior remains consistent.
The following components are currently included in the integration tests:
- Flotilla Backend (C#)
- Flotilla Broker (mosquitto mqtt broker)
- PostgreSQL database
- Azure Blob Storage (emulated with Azurite)
- ISAR Robot (your friendly neighbourhood mocked robot which provides the answers you need)
To run the integration tests in a remote repository, this workflow has been set up.
In your repository, setup the following workflow:
name: Run integration tests
on:
push:
branches: [ main ]
release:
types: [ published ]
workflow_dispatch:
inputs:
lane:
description: "dev or latest"
required: true
default: latest
permissions:
contents: read
packages: read
jobs:
run-integration-tests:
uses: equinor/armada/.github/workflows/run_integration_tests.yml@main
with:
# Pick lane automatically based on event, or honor manual input
lane: ${{ github.event_name == 'push' && 'dev'
|| github.event_name == 'release' && 'latest'
|| github.event_name == 'workflow_dispatch' && inputs.lane
|| 'latest' }}
secrets:
INTEGRATION_TEST_AZURE_CLIENT_SECRET: ${{ secrets.INTEGRATION_TEST_AZURE_CLIENT_SECRET }}This snippet will enable you to run the integration tests manually and automatically on push to main and published release. It requires the following secret to be set in your repository secrets:
INTEGRATION_TEST_AZURE_CLIENT_SECRET
The input lane determines which image tag should be applied to the internally developed packages like Flotilla and ISAR. If input is set as lane=dev the newest development images (corresponding to newest push to main branch) will be used while lane=latest will use the newest release.
Clone the repository and install dependencies with uv:
uv syncEnsure the following secrets are populated in your local environment, either as environment variables or in a .env file in the repository root directory.
INTEGRATION_TESTS_CLIENT_SECRET
FLOTILLA_AZURE_CLIENT_SECRET
FLOTILLA_BROKER_SERVER_KEY
FLOTILLA_MQTT_PASSWORD
ISAR_AZURE_CLIENT_SECRET
ISAR_MQTT_PASSWORD
SARA_AZURE_CLIENT_SECRET
SARA_MQTT_PASSWORD
They may all be found in the integration test keyvault.
You may now run the tests with
uv run pytest -s .