Skip to content

Development

Prerequisites

Building QOffload requires CMake and the MQSS integration and configuration libraries.

Integration tests require access to RabbitMQ. The repository's Docker development environment or an equivalent RabbitMQ installation can be used.

Build

This application is built as an external consumer of an installed MQSS package.

cmake -S . -B build -DCMAKE_PREFIX_PATH=/tmp/mqss-install
cmake --build build

Tests

QOffload uses GTest and includes unit and integration tests.

Run all tests:

ctest --test-dir build

Integration Tests

The integration tests exercise the QOffload binary in a round-trip scenario. A launcher script starts the QOffload binary and a minimal QRM implementation before executing the selected test. The test initiator sends requests to QOffload, which forwards them to the QRM implementation. The corresponding responses are returned through QOffload to the test initiator.

The request-response path is:

test initiator → QOffload → QRM → QOffload → test initiator

When running outside the development container, connection settings may be provided through environment variables.

Run all integration tests:

ctest --test-dir build -L integration

Direct round-trip test validates the Task interface and direct result mapping.

ctest --test-dir build -R DirectRoundtrip

or

./tests/integration/run_roundtrip.sh \
    direct \
    ./build/qoffload \
    ./build/tests/integration/qoffload-integration-test-qrm \
    ./build/tests/integration/qoffload-integration-direct-roundtrip

Control round-trip test validates control task creation, QRM result processing, status queries, and result retrieval.

ctest --test-dir build -R ControlRoundtrip

or

./tests/integration/run_roundtrip.sh \
    control \
    ./build/qoffload \
    ./build/tests/integration/qoffload-integration-test-qrm \
    ./build/tests/integration/qoffload-integration-control-roundtrip

Automated Check

Perform an end-to-end build and execution check:

scripts/check_qoffload_service.sh

The script builds MQSS, installs it, builds the QOffload service, and runs all tests.

Docker Environment

Start the RabbitMQ-backed workflow development environment:

scripts/docker_workflow.sh

Within the container, build QOffload and run the tests:

scripts/check_qoffload_service.sh