Integration Event - 23-13
Summary
You're a Test Engineer at SkySurge (a division of SkyShield) working in a software integration and test role. SkySurge's mission is to deliver innovation with speed and accuracy.
Your team's mission to field a new version of SkyShield's popular reconnaissance drone. This drone is focused on "search" and "rescue" missions, and is a lighter version of its predecessor which is focused on "scan" and "hover" style missions. To help accelerate delivery, SkyShield has leveraged the same basic design, but, based on different camera capabilities, has had to modify the drone's software.
Your job is to verify that the software performs as expected, based on the stated design.
Your team is evaluating the effectiveness of an integration tool like Tangram Pro to do exactly that.
Prerequisites
- A Tangram Pro™ account, with the Verifier Toolkit
- Access to Tangram Flex Gitlab
- Log in here: https://qa.tangramflex.io/
- If you don't have an account, please try to "Log in with Okta"
- If that fails, let us know in the Slack
#integration-events
channel
Scenario
Review the System Designed
The system to be fielded leverages a previous design containing two components: a Ground Control station and a Drone which communicate via OpenUxAS LMCP messages:
This previous design supports two missions, called "Scan" and "Rescue":
- Scan
- The Ground Control sends an empty
GimbalState
, to learn the Drone's configuration. - The Drone sends a
GimbalConfiguration
to report. - The Ground Control sends a
GimbalAngleAction
, instructing where the Drone should it should aim its instrument - The Drone sends a
GimbalConfiguration
to report.
- The Ground Control sends an empty
- Rescue
- The Ground Control sends a new
Mission
- The Drone reports its location in 3D space via an
AirVehicleState
. - The Ground Control directs it to a new location, via a
GoToWaypoint
command - The Drone flies to that location and again reports an
AirVehicleState
.
- The Ground Control sends a new
These two missions are well understood in their design, and well tested in field operations.
Review the Software Delivered
Other engineers at SkyShield have already implemented the new code to power Search and Rescue drone. They have provided you with a Docker container containing that code.
The Ground Control system software is still being implemented, however, the software for the drone needs verified immediately to begin flight test and certification. This means you can not use the Ground Control system to test the drone software.
Fortunately, the Tangram Pro Verifier Toolkit can be used to test that a piece of software performs and communicates as intended, independent of the larger system.
Likewise, Tangram Pro already supports the LMCP message set, so you're ready to begin testing.
Design and Verify
Design the System
Let's get started by creating a Team.
- Create a team and add members.
- Authorize a Container Registry for your team
To verify the drone code, you'll need Tangram Pro to integrate with an external Container Registry
Your team members at SkyShield are using Gitlab Enterprise, so you will need to create credentials in (Tangram Flex's) Gitlab via a Personal Access Token.
- Host URL:
registry-gitlab.tangramflex.tech
- Username: (your Gitlab username)
- Token: (created at Gitlab)
After it's added, click the Check Connection button and enter this path int-events/ie23-13/search-rescue
to verify the connection is working
-
Create a project and set the owner to the team you just made.
-
Design the system
Create two components:
GroundControl
andSearchRescue
and add the packageOpenUxAS::LMCP::v3
to each.Add a Transport:
ZeroMQ
.Create a connection from
GroundControl
toSearchRescue
, and add the following LMCP messages:CameraAction
*CameraState
*GimbalAngleAction
GimbalState
GoToWaypointAction
MissionCommand
Waypoint
Create a connection from
SearchRescue
toGroundControl
, and add the following LMCP messages:AirVehicleState
CameraConfiguration
*GimbalConfiguration
note* - These messages were not specified in the system design, but are included in this scenario for the sake of time.
When you are done, your design should look similar to this:
Verify the Mission
Now that your system design is in Tangram Pro, you can now specify your components behaviors.
-
Click on the "Verify" tab
Select the
SearchRescue
component -
Specify the "Rescue" mission in a Sequence.
Click the "Add Sequence" button. Enter a Sequence Name of "Rescue".
Click the "Add Initial Sequence Message", select the
MissionCommand
message, and click "Save Message".Open the "dot" menu to the left of the
Input
label of the MissionCommand message and select "Add Message After", then selectAirVehicleState
.Repeat this process for
GoToWaypointAction
.Finally, repeat one more time for another
AirVehicleState
.Compare the Sequence in Tangram Pro to the system design at the beginning of this document.
-
Begin a Verifier test build
infoVerifier leverages your components messages configuration to generate the code needed for testing.
This takes some time, so you should begin the test build right away.
Click the "New Test Build Required" button to prepare for your first Verifier run. This should take about 15 minutes.
-
Verify the Code.
Once the test build is complete, click the "Setup New Test" button.
Your team has delivered the Drone code to a Container Registry, which you configured before.
Select the "Use Container Registry" option and chose the Registry in the list. Enter an image path of
int-events/ie23-13/search-rescue
and click the "Check" button to ensure that image is available.Change "Max Path Retries" to 5 and click "Begin Verifier Test".
-
Return to the component sequences tab and create a new sequence called "Scan".
Review the messages needed for the "Scan" mission from the Requirements at the top of the page.
Implement that Sequence following similar steps to Section 2 above, then attempt to Verify.
Note, use the "Component Logs" or "Debug Logs" to diagnose issues.
Regroup with Your Team
After a few unsuccessful attempts to verify the "Scan" mission, you conference with systems engineers and software developers to diagnose.
Discussion reveals that the software implemented skewed from design. However, this in turn revealed a need to refine the design.
The newer drone has a fixed-mount camera instead of a gimbal-based camera.
Your team updates the design accordingly:
- Scan
- The Ground Control sends an empty
CameraState
, to learn the Drone's configuration. - The Drone sends a
CameraConfiguration
to report. - The Ground Control sends a
CameraAction
, instructing the Drone to begin filming. - The Drone sends a
CameraConfiguration
to report.
- The Ground Control sends an empty
Verify the New Design
Edit the "Scan" Sequence in the Verify tab to the new Design.
You can either delete the entire Sequence or click on each node and select the "Edit Message" option.
Run another Verify test and ensure that the component successfully fulfills both Missions.
Key Take-aways
For simplicity, this Integration Event did not leverage Message Constraints or Templates.
These features allow users to specify ranges of valid values at the message property level to more closely verify component behavior. These features will be apart of the Tangram Pro v2.1.0 release.
It is possible to verify component software communication behaviors with Tangram Pro Verifier.
Talking Points:
- New "Verify" tab in the Workspace
- Verifier leverages the same system design that is at the core of a Project
- whether this design is created manually, or imported
- But Verifier works on software from external sources
- you don't need any other Toolkits to verify software implementation
- Verifier leverages the same Flex information about the communication protocol
- so, Design > Develop > Verify is a real use-case
- Verifier focuses on message communication flows, but also shows logs to help diagnose problems
Feedback topics:
- What did Tangram Pro do that you found helpful?
- What parts were difficult?
- What opportunities exist for improvement?