Legacy TMC-centred Test Harness (versions 0.*, 1.*)

Overview

This legacy part refers to a test harness for TMC integration tests in Mid and in Low, centred around the TMC subsystem and its interactions with CSP, SDP, Dishes and MCCS.

IMPORTANT: Monolith vs Platform

Important Note: This section of the documentation refers to the TMC-specific monolithic test harness. In the long term, this monolithic test harness will be relocated elsewhere (likely to a TMC testing repository). This repository will instead focus on the Test Harness as a Platform.

For more details, see ITH as a Platform: Introduction.

IMPORTANT: Scope and purpose

Before diving into the (technical) details, it is important to understand the purpose of this project and its scope. For this reason, we strongly suggest you read the dedicated Confluence page

IMPORTANT: What this repository is about (and what it is not)

A second important thing is to understand what this specific repository is about and what it is not. While the term ITH sometimes may be used to refer to a wider concept and a large collection of tools, this repository contains a specific subset of tools. So, let’s quickly clarify what you can find here (and what you cannot).

What you can find here

This repository essentially contains a Python framework to model the SUT, its subsystems and devices and the actions you can perform on them. More specifically:

  • represent and allow access to the subsystems and the Tango devices in a structured way, regardless of whether a subsystem is emulated or it is not;

  • simplify complex procedures to bring the SUT into a specific state before running the tests (e.g., call the commands to put the telescope in the desired state, synchronise when the events have finished, and ensure that the state is effectively reached);

  • simplify teardown procedures, to bring the SUT back to a known state after the tests are completed;

  • overview of the active devices and their versions.

At the moment, the SUT consists of:

  • a production TMC, which is the “protagonist” of the tests (the subsystem which receives most of the commands);

  • a production or emulated CSP;

  • a production or emulated SDP;

  • a set of production or emulated Dishes, or alternatively a production or emulated MCCS.

NOTE: for the purposes of this test harness, we use the term production to refer to real software that needs to be tested, and emulated to refer to software that replicates the behaviour of the real devices without having complex logic behind it. The term production doesn’t mean we are using the real hardware.

IMPORTANT NOTE: at the moment, the ITH is particularly calibrated to support the following testing scenarios:

  • TMC with Mid, with all the combination of production and emulated CSP, SDP and Dishes;

  • TMC with Low, but using emulators.

The support for Low with production devices is not fully tested, since TMC teams now prioritise testing TMC with emulators.

What you cannot find (and likely will remain in separate places)

This repository does not contain and will likely never contain:

  • the test definitions or implementation (which instead can be found in repos such as SKA TMC Mid Integration and SKA Software Integration Tests);

  • the Helm charts to deploy the devices in a Kubernetes environment, or the pipelines and Make commands to run the tests (see repos in the previous point);

  • the specific “low-level” tools to track Tango events and make assertions on them (see ska-tango-testing);

  • pipeline support tools, such as the Jira integration scripts (see ska-ser-xray);

  • the code of the emulators for the non-production subsystem devices (see ska-tmc-simulators);

  • the code of the production devices.

What you cannot find (yet)

Instead, this framework may (and will likely) support in the future (but not at the moment):

  • integration tests where TMC is not involved (e.g., stand-alone tests of a single subsystem);

  • tests with multiple subarrays.

Stay tuned for updates!