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.0Middleware Abstraction Layer (
CII MAL
) - v2.0.1Common Integration Infrastructure Services (
CII SRV
) - v2.0.1DDS Middleware (
FastDDS
) - v2.5.0Application Framework (
rad
) - v4.0.0Test Framework (
etr
) - v3.1.1Roadrunner (
numapp
,ipcq
andperfc
) - 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.
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
librariesTools 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.