From 0a3d53f508a36808439588b014923b7327b26e59 Mon Sep 17 00:00:00 2001 From: SuperJappie08 <36795178+SuperJappie08@users.noreply.github.com> Date: Thu, 23 Oct 2025 13:54:39 +0200 Subject: [PATCH 1/2] Enable tests Signed-off-by: SuperJappie08 <36795178+SuperJappie08@users.noreply.github.com> --- composition/CMakeLists.txt | 3 +++ .../test/test_api_pubsub_composition.py.in | 6 ++--- .../test/test_api_srv_composition.py.in | 6 ++--- ...est_api_srv_composition_client_first.py.in | 24 ++++++++++++------- 4 files changed, 24 insertions(+), 15 deletions(-) diff --git a/composition/CMakeLists.txt b/composition/CMakeLists.txt index cd985ef7e..590bcad50 100644 --- a/composition/CMakeLists.txt +++ b/composition/CMakeLists.txt @@ -170,6 +170,9 @@ if(BUILD_TESTING) "test_dlopen_composition" "test_linktime_composition" "test_manual_composition" + "test_api_pubsub_composition" + "test_api_srv_composition_client_first" + "test_api_srv_composition" ) foreach(test_name IN LISTS test_names) configure_file( diff --git a/composition/test/test_api_pubsub_composition.py.in b/composition/test/test_api_pubsub_composition.py.in index de1c30f27..3f0b14634 100644 --- a/composition/test/test_api_pubsub_composition.py.in +++ b/composition/test/test_api_pubsub_composition.py.in @@ -26,7 +26,7 @@ import launch_testing_ros def generate_test_description(): launch_description = LaunchDescription() process_under_test = ExecuteProcess( - cmd=['@API_COMPOSITION_EXECUTABLE@'], + cmd=['ros2', 'run', 'rclcpp_components', 'component_container'], name='test_api_composition', output='screen' ) @@ -34,7 +34,7 @@ def generate_test_description(): launch_description.add_action( ExecuteProcess( cmd=[ - '@API_COMPOSITION_CLI_EXECUTABLE@', + 'ros2', 'component', 'load', '/ComponentManager', 'composition', 'composition::Talker' ], name='load_talker_component' @@ -43,7 +43,7 @@ def generate_test_description(): launch_description.add_action( ExecuteProcess( cmd=[ - '@API_COMPOSITION_CLI_EXECUTABLE@', + 'ros2', 'component', 'load', '/ComponentManager', 'composition', 'composition::Listener' ], name='load_listener_component' diff --git a/composition/test/test_api_srv_composition.py.in b/composition/test/test_api_srv_composition.py.in index 423de906a..24d0ac1fe 100644 --- a/composition/test/test_api_srv_composition.py.in +++ b/composition/test/test_api_srv_composition.py.in @@ -26,7 +26,7 @@ import launch_testing_ros def generate_test_description(): launch_description = LaunchDescription() process_under_test = ExecuteProcess( - cmd=['@API_COMPOSITION_EXECUTABLE@'], + cmd=['ros2', 'run', 'rclcpp_components', 'component_container'], name='test_api_composition', output='screen' ) @@ -34,7 +34,7 @@ def generate_test_description(): launch_description.add_action( ExecuteProcess( cmd=[ - '@API_COMPOSITION_CLI_EXECUTABLE@', + 'ros2', 'component', 'load', '/ComponentManager', 'composition', 'composition::Server' ], name='load_server_component' @@ -43,7 +43,7 @@ def generate_test_description(): launch_description.add_action( ExecuteProcess( cmd=[ - '@API_COMPOSITION_CLI_EXECUTABLE@', + 'ros2', 'component', 'load', '/ComponentManager', 'composition', 'composition::Client' ], name='load_client_component' diff --git a/composition/test/test_api_srv_composition_client_first.py.in b/composition/test/test_api_srv_composition_client_first.py.in index fe927661d..216262ae6 100644 --- a/composition/test/test_api_srv_composition_client_first.py.in +++ b/composition/test/test_api_srv_composition_client_first.py.in @@ -16,6 +16,7 @@ import unittest from launch import LaunchDescription from launch.actions import ExecuteProcess +from launch.actions import TimerAction import launch_testing import launch_testing.actions @@ -26,7 +27,7 @@ import launch_testing_ros def generate_test_description(): launch_description = LaunchDescription() process_under_test = ExecuteProcess( - cmd=['@API_COMPOSITION_EXECUTABLE@'], + cmd=['ros2', 'run', 'rclcpp_components', 'component_container'], name='test_api_composition', output='screen' ) @@ -34,20 +35,25 @@ def generate_test_description(): launch_description.add_action( ExecuteProcess( cmd=[ - '@API_COMPOSITION_CLI_EXECUTABLE@', + 'ros2', 'component', 'load', '/ComponentManager', 'composition', 'composition::Client' ], name='load_client_component' ) ) launch_description.add_action( - ExecuteProcess( - cmd=[ - '@API_COMPOSITION_CLI_EXECUTABLE@', - 'composition', 'composition::Server', - '--delay', '5000' - ], - name='load_server_component' + TimerAction( + period=5.0, + actions=[ + ExecuteProcess( + cmd=[ + 'ros2', 'component', + 'load', '/ComponentManager', + 'composition', 'composition::Server', + ], + name='load_server_component' + ) + ] ) ) launch_description.add_action( From 9c081b1422e8f7b08904bd60feb6149de97b9948 Mon Sep 17 00:00:00 2001 From: SuperJappie08 <36795178+SuperJappie08@users.noreply.github.com> Date: Sat, 10 Jan 2026 13:40:55 +0100 Subject: [PATCH 2/2] Update api composition tests to use launch_ros Signed-off-by: SuperJappie08 <36795178+SuperJappie08@users.noreply.github.com> --- .../test/test_api_pubsub_composition.py.in | 35 ++++++++----------- .../test/test_api_srv_composition.py.in | 32 ++++++++++------- ...est_api_srv_composition_client_first.py.in | 33 +++++++++-------- 3 files changed, 52 insertions(+), 48 deletions(-) diff --git a/composition/test/test_api_pubsub_composition.py.in b/composition/test/test_api_pubsub_composition.py.in index 3f0b14634..5c537f8f8 100644 --- a/composition/test/test_api_pubsub_composition.py.in +++ b/composition/test/test_api_pubsub_composition.py.in @@ -15,7 +15,8 @@ import unittest from launch import LaunchDescription -from launch.actions import ExecuteProcess +from launch_ros.actions import ComposableNodeContainer +from launch_ros.descriptions import ComposableNode import launch_testing import launch_testing.actions @@ -25,30 +26,22 @@ import launch_testing_ros def generate_test_description(): launch_description = LaunchDescription() - process_under_test = ExecuteProcess( - cmd=['ros2', 'run', 'rclcpp_components', 'component_container'], + process_under_test = ComposableNodeContainer( name='test_api_composition', + namespace='', + package='rclcpp_components', + executable='component_container', + composable_node_descriptions=[ + ComposableNode( + package='composition', + plugin='composition::Talker'), + ComposableNode( + package='composition', + plugin='composition::Listener'), + ], output='screen' ) launch_description.add_action(process_under_test) - launch_description.add_action( - ExecuteProcess( - cmd=[ - 'ros2', 'component', 'load', '/ComponentManager', - 'composition', 'composition::Talker' - ], - name='load_talker_component' - ) - ) - launch_description.add_action( - ExecuteProcess( - cmd=[ - 'ros2', 'component', 'load', '/ComponentManager', - 'composition', 'composition::Listener' - ], - name='load_listener_component' - ) - ) launch_description.add_action( launch_testing.actions.ReadyToTest() ) diff --git a/composition/test/test_api_srv_composition.py.in b/composition/test/test_api_srv_composition.py.in index 24d0ac1fe..ec35bbf39 100644 --- a/composition/test/test_api_srv_composition.py.in +++ b/composition/test/test_api_srv_composition.py.in @@ -15,7 +15,9 @@ import unittest from launch import LaunchDescription -from launch.actions import ExecuteProcess +from launch_ros.actions import ComposableNodeContainer +from launch_ros.actions import LoadComposableNodes +from launch_ros.descriptions import ComposableNode import launch_testing import launch_testing.actions @@ -25,28 +27,32 @@ import launch_testing_ros def generate_test_description(): launch_description = LaunchDescription() - process_under_test = ExecuteProcess( - cmd=['ros2', 'run', 'rclcpp_components', 'component_container'], + process_under_test = ComposableNodeContainer( name='test_api_composition', + namespace='', + package='rclcpp_components', + executable='component_container', output='screen' ) launch_description.add_action(process_under_test) launch_description.add_action( - ExecuteProcess( - cmd=[ - 'ros2', 'component', 'load', '/ComponentManager', - 'composition', 'composition::Server' + LoadComposableNodes( + composable_node_descriptions=[ + ComposableNode( + package='composition', + plugin='composition::Server') ], - name='load_server_component' + target_container=process_under_test ) ) launch_description.add_action( - ExecuteProcess( - cmd=[ - 'ros2', 'component', 'load', '/ComponentManager', - 'composition', 'composition::Client' + LoadComposableNodes( + composable_node_descriptions=[ + ComposableNode( + package='composition', + plugin='composition::Client') ], - name='load_client_component' + target_container=process_under_test ) ) launch_description.add_action( diff --git a/composition/test/test_api_srv_composition_client_first.py.in b/composition/test/test_api_srv_composition_client_first.py.in index 216262ae6..f4f66ca69 100644 --- a/composition/test/test_api_srv_composition_client_first.py.in +++ b/composition/test/test_api_srv_composition_client_first.py.in @@ -15,8 +15,10 @@ import unittest from launch import LaunchDescription -from launch.actions import ExecuteProcess from launch.actions import TimerAction +from launch_ros.actions import ComposableNodeContainer +from launch_ros.actions import LoadComposableNodes +from launch_ros.descriptions import ComposableNode import launch_testing import launch_testing.actions @@ -26,32 +28,35 @@ import launch_testing_ros def generate_test_description(): launch_description = LaunchDescription() - process_under_test = ExecuteProcess( - cmd=['ros2', 'run', 'rclcpp_components', 'component_container'], + process_under_test = ComposableNodeContainer( name='test_api_composition', + namespace='', + package='rclcpp_components', + executable='component_container', output='screen' ) launch_description.add_action(process_under_test) launch_description.add_action( - ExecuteProcess( - cmd=[ - 'ros2', 'component', 'load', '/ComponentManager', - 'composition', 'composition::Client' + LoadComposableNodes( + composable_node_descriptions=[ + ComposableNode( + package='composition', + plugin='composition::Client') ], - name='load_client_component' + target_container=process_under_test ) ) launch_description.add_action( TimerAction( period=5.0, actions=[ - ExecuteProcess( - cmd=[ - 'ros2', 'component', - 'load', '/ComponentManager', - 'composition', 'composition::Server', + LoadComposableNodes( + composable_node_descriptions=[ + ComposableNode( + package='composition', + plugin='composition::Server') ], - name='load_server_component' + target_container=process_under_test ) ] )