Release Notes

Summary

This release includes the following artefacts:

  • RTC Toolkit (rtctk) - 2.0.0

And depends on the following:

  • ELT Development Environment (ELT DevEnv) - v3.9.0

  • Middleware Abstraction Layer (CII MAL) - v2.0.1

  • Common Integration Infrastructure Services (CII SRV) - v2.0.1

  • DDS Middleware (FastDDS) - v2.5.0

  • Application Framework (rad) - v4.0.0

  • Test Framework (etr) - v3.1.1

  • Roadrunner (numapp, ipcq and perfc) - v0.2.0

What is the purpose of this release?

The purpose of this release is to provide a working version of the most important toolkit components to users to,

  • get a feeling how the RTC Toolkit, its modules and APIs function,

  • get familiar with core concepts, technologies and workflows,

  • facilitate early feedback from developers to correct issues and adapt the toolkit as early as possible.

What is the scope of this version?

To provide an early preview of the toolkit functionality. This release does not yet cover the full RTC Toolkit functionality.

../_images/RtcToolkit_Delta_7c674db8-4e25-4d6a-a4f5-bfc1e70051f6.png

Assets that are not yet delivered with this version are depicted without a colored frame. Assets that are part of this release, but are not yet feature-complete, are depicted with an orange frame. Assets that are part of this release and also considered feature-complete are depicted with a green frame.

The most important features of this release are:

Component Framework

  • RTC Component

  • Persistent Configuration Repository

  • Runtime Configuration Repository

  • Online Database

  • Service Discovery

  • Logging

  • Recording Infrastructure

Reusable Components

  • RTC Supervisor

  • Telemetry Republisher

  • Telemetry Subscriber

  • Telemetry Recorder

  • Metadata Collector

  • Data Task libraries

Examples and Tutorials

  • Creating bare RTC Components

  • Customising reusable components

  • Creating a minimalistic SRTC system

  • Creating a distributed minimalistic SRTC system

Other Features

  • CII MAL integration

  • CII OLDB integration

  • CII configuration service integration

  • CUDA support in waf

  • Python support for Data Tasks

  • Manual Deployment (using scripts, optionally Nomad)

  • Use of roadrunner libraries

  • Tools for configuration, control and monitoring

  • Supporting tools (for testing and troubleshooting)

  • Unit and integration testing (using gTest and etr)

Documentation

  • User’s manual (using Sphinx)

  • API documentation (using Doxygen)

Limitations and Constraints

This version provides core functionally to implement SRTC components that form part of a Telemetry Data Path. However, not all features are yet available or optimised.

  • At the moment of the release, not all of the underlying software infrastructure is available or fully functional, e.g. deployment. Therefore some of the services had to be faked, e.g. Service Discovery. This will be corrected in future versions as the underlying infrastructure and CII matures.

  • The CII configuration service is going through a major overhaul. Therefore, although the RTC Toolkit has integrated it through the Persistent Configuration Repository, there are currently some bugs and limitations when using that facility. This should be fixed in future versions of CII.

  • Access to data points in the various repositories is not optimised for performance and large data volumes.

  • Integration into a larger system is also not possible yet. In particular, very large vectors or matrices are not handled out of the box and require specialised CII OLDB configurations that are not available yet.

Disclaimer

ESO does not warrant that the provided functions of the RTC Toolkit will meet all requirements or that the operation of the components and libraries will be flawless.

ESO does not ensure that solutions included in this version of the RTC Toolkit are not subject to changes in future releases. The future upgrade to newer versions of ICS Framework, Core Integration Infrastructure (CII) and adaptation to CCS development standards may introduce significant modifications to the actual interfaces and services.

While every precaution has been taken in the development of the RTC Toolkit software and in the preparation of the documentation, ESO assumes no responsibility for errors or omissions, or for damage resulting from the use of the software or of the information contained in the documentation.

Note

The RTC Toolkit is distributed outside ESO for the development of applications related to the ELT Project and ruled by the “General Conditions of ESO Contracts”. Any other use is not permitted without prior authorization from ESO.

The rights of third party products, whose software is included for convenience in the development environment, are ruled by their copyright notice included in their software.

Dependencies

Development Environment ELT DevEnv

The ELT Linux Development Environment (DevEnv) comprises a collection of hardware, software procedures and tools for the developing, testing and debugging of software components for the ELT. It has to support large-scale and long-term maintenance of software.

Further information regarding the ELT Development Environment can be found here:

Deployment

The ELT standard tools for deployment (which is the action of activating or deactivating software processes on remote server hardware) will be based on Nomad and Consul. Once these tools are readily integrated into the ELT software ecosystem the RTC Toolkit will make use of them.

Until then, the RTC Toolkit uses shell scripts to facilitate deployment in a very simple way. These scripts prepare the environment and bring up the respective applications with the required command line arguments. Additionally, shell scripts that use Nomad for deployment have been added in this release to demonstrate that the toolkit can be deployed using Nomad.

Similarly a fake service discovery mechanism was introduced to provide rudimentary support for name service (see Service Discovery).

Core Integration Infrastructure CII

The RTC Toolkit makes use of the CII MAL (Middleware Abstraction Layer) for non-time-critical inter component messaging. The two main mechanisms used are request/reply and publish/subscribe.

In addition, this version also supports:

  • CII OLDB (Online Database)

  • CII configuration service (Config Ng)

Note

It is no longer necessary to set the CII_LOGS environment variable manually. This is handled by cii-postinstall as part of the installation. See the Installation section for more details.

FastDDS dds

FastDDS is an open source implementation of OMG’s Data Distribution Service (DDS). It is a middleware framework standard for data exchanges using a publish–subscribe pattern. It is used in the RTC Toolkit for reliable multicast telemetry data transfer, in particular between Telemetry Republisher and Telemetry Subscriber components.

FastDDS and tools are provided as part of ELT Development Environment. This version of RTC Toolkit is based on FastDDS version 2.5.0.

Note

FASTRTPS_DEFAULT_PROFILES_FILE environment variable is not used anymore to specify FastDDS QoS file for different parts of the system like Telemetry Republisher, Telemtry Subscriber and Event Channel. Please refer to particular (component) section for details about how FastDDS QoS profiles are handled. It is advised not to set/use the environment variable anymore as it can cause system to misbehave.

Rapid Application Development rad

The rad application framework is an ESO software product that enables the development of event-driven applications for the ELT. It is based on call-backs and state machines.

At present, the RTC Toolkit mainly uses rad to realise its state machines and internal event handling. More details about rad can be found in its user manual.

Extensible Test Runner etr

The RTC Toolkit makes use of the extensible test runner etr for integration testing.

The following features are available:

  • Run Robot Framework tests with the robot plugin.

  • Request test resources with the resources plugin.

  • Modify template files with Jinja2 template engine and the jinja2 plugin.

  • Deploy software with Nomad with the nomad plugin (experimental support).

For details see the etr user manual.

Roadrunner

Roadrunner is a project containing independent and reusable C++ libraries for high performance applications.

RTC Tk uses the following features:

  • ipcq - a shared memory queue library.

  • NUMA++ - is a library to help simplify application of NUMA policies.

  • perfc - library to implement performance counters.

These are essentially a set of APIs to interact with libnuma and certain pthread APIs to control memory policy, CPU affinity and scheduler. For details see the documentation provided for each roadrunner component.