Overview
High-level overview of the Cuica and its capabilities
Introduction
The Cuica is a versatile tool that bridges the gap between Continuous Integration/Continuous Deployment (CI/CD) systems and Devices Under Test (DUTs). It facilitates the validation of software, hardware, or both by providing programming and instrumentation capabilities. With its REST API and web interface, the Cuica is designed for seamless integration and flexibility across various testing and deployment scenarios.
Key Features
REST API and WebSocket Interface
The Cuica offers a fully documented REST API using OpenAPI standards, making it interoperable with virtually any CI/CD system. This enhances automation, flexibility, and compatibility with legacy systems. In addition to HTTP, a WebSocket interface is provided for asynchronous event handling, allowing real-time system status updates without the need for polling, resulting in a more responsive interface.
Security and Integration
Both the REST API and WebSocket protocols use TLS encryption. The Cuica allows for the assignment of custom certificates and keys, ensuring secure integration with existing networks. Access control is enhanced through token-based and web session authentication. For quicker integration and automation, a standalone Linux-based CLI executable is available for download.
User-Friendly Web Interface
Complementing the back-end REST API, the Cuica includes a front-end web interface for debugging, manual testing or deployment, and overall configuration. The system supports both infrastructure mode and access point (AP) Wi-Fi modes, offering flexibility in various network environments. The web interface is mobile-friendly, enabling the use of inexpensive tablets as part of a test station without the need to install additional mobile apps.
Test Scripts and Suites
Device Programming and Testing
To perform validation, the Cuica programs the DUT with a Binary Image
provided by the CI/CD system as an artifact of the build stage
(e.g., an .elf
file). It then executes zero or more Test Scripts to
communicate with the DUT via the built-in Manifold Fixture. These Test
Scripts are written in MicroPython and compiled into bytecode, allowing
them to be executed directly by the Manifold Fixture and ensuring consistent
timing between test runs.
Data Capture and Storage
All output streams from Binary Image programming and Test Script runs are captured. The built-in cuica MicroPython module enables the storage of arbitrary data on-the-fly during test execution.
Orchestration with Test Suites
The orchestration of Test Script runs and Binary Image programming is managed through Test Suites. These can be created using the web interface or by defining a Test Suite specification in YAML or JSON. The specifications detail which Binary Images to program, which Test Scripts to run, and the order of execution.
Result Management
Results from all Test Suite runs, Test Script executions, and Binary Image programming are stored on the Cuica. They can be accessed, modified, and deleted using both the REST API and the web interface, providing comprehensive management of testing outcomes.
Integration and Use Cases
The Cuica is designed to integrate seamlessly with CI/CD systems, acting as a bridge between the system and the DUT, as illustrated on the right side of the block diagram. This integration enables automated testing and deployment processes within the CI/CD pipeline.
In addition to its role in automated environments, the Cuica can function as a standalone test station or a development and debugging tool. In the early stages of a project, there is often a need to send arbitrary data or components to a device. The Cuica supports interactive configurations independent of the CI/CD system, as shown on the left side of the block diagram, providing flexibility for various development needs.
Hardware Components
Manifold Fixture and Squeak Board
The Cuica includes a built-in Manifold Fixture that facilitates hardware interfacing with the DUT. For an easier electrical connection between the Cuica and the DUT, the optional Squeak Board is available. This board simplifies the setup process, allowing for quick and reliable connections.
Third-Party Programmer Support
While the Cuica is designed not to require a separate programmer, it offers flexibility by including a USB port that supports third-party programmers such as an ST-Link or J-Link. This feature allows users to integrate existing programming tools into their workflow as needed.