@@ -219,6 +219,49 @@ void test_components_api(bool use_dedicated_executor)
219219 EXPECT_EQ (result->unique_id , 0u );
220220 }
221221
222+ {
223+ // forward_global_arguments
224+ auto request = std::make_shared<composition_interfaces::srv::LoadNode::Request>();
225+ request->package_name = " rclcpp_components" ;
226+ request->plugin_name = " test_rclcpp_components::TestComponentFoo" ;
227+ request->node_name = " test_component_global_arguments" ;
228+ rclcpp::Parameter forward_global_arguments (" forward_global_arguments" ,
229+ rclcpp::ParameterValue (true ));
230+ request->extra_arguments .push_back (forward_global_arguments.to_parameter_msg ());
231+
232+ auto future = composition_client->async_send_request (request);
233+ auto ret = exec->spin_until_future_complete (future, 5s); // Wait for the result.
234+ auto result = future.get ();
235+ EXPECT_EQ (ret, rclcpp::FutureReturnCode::SUCCESS);
236+ EXPECT_EQ (result->success , true );
237+ EXPECT_EQ (result->error_message , " " );
238+ EXPECT_EQ (result->full_node_name , " /test_component_global_arguments" );
239+ EXPECT_EQ (result->unique_id , 7u );
240+ }
241+
242+ {
243+ // forward_global_arguments is not a bool type parameter
244+ auto request = std::make_shared<composition_interfaces::srv::LoadNode::Request>();
245+ request->package_name = " rclcpp_components" ;
246+ request->plugin_name = " test_rclcpp_components::TestComponentFoo" ;
247+ request->node_name = " test_component_global_arguments_str" ;
248+
249+ rclcpp::Parameter forward_global_arguments (" forward_global_arguments" ,
250+ rclcpp::ParameterValue (" hello" ));
251+ request->extra_arguments .push_back (forward_global_arguments.to_parameter_msg ());
252+
253+ auto future = composition_client->async_send_request (request);
254+ auto ret = exec->spin_until_future_complete (future, 5s); // Wait for the result.
255+ auto result = future.get ();
256+ EXPECT_EQ (ret, rclcpp::FutureReturnCode::SUCCESS);
257+ EXPECT_EQ (result->success , false );
258+ EXPECT_EQ (
259+ result->error_message ,
260+ " Extra component argument 'forward_global_arguments' must be a boolean" );
261+ EXPECT_EQ (result->full_node_name , " " );
262+ EXPECT_EQ (result->unique_id , 0u );
263+ }
264+
222265 auto node_names = node->get_node_names ();
223266
224267 auto find_in_nodes = [node_names](std::string name) {
@@ -247,20 +290,22 @@ void test_components_api(bool use_dedicated_executor)
247290 auto result_node_names = result->full_node_names ;
248291 auto result_unique_ids = result->unique_ids ;
249292
250- EXPECT_EQ (result_node_names.size (), 6u );
293+ EXPECT_EQ (result_node_names.size (), 7u );
251294 EXPECT_EQ (result_node_names[0 ], " /test_component_foo" );
252295 EXPECT_EQ (result_node_names[1 ], " /test_component_bar" );
253296 EXPECT_EQ (result_node_names[2 ], " /test_component_baz" );
254297 EXPECT_EQ (result_node_names[3 ], " /ns/test_component_bing" );
255298 EXPECT_EQ (result_node_names[4 ], " /test_component_remap" );
256299 EXPECT_EQ (result_node_names[5 ], " /test_component_intra_process" );
257- EXPECT_EQ (result_unique_ids.size (), 6u );
300+ EXPECT_EQ (result_node_names[6 ], " /test_component_global_arguments" );
301+ EXPECT_EQ (result_unique_ids.size (), 7u );
258302 EXPECT_EQ (result_unique_ids[0 ], 1u );
259303 EXPECT_EQ (result_unique_ids[1 ], 2u );
260304 EXPECT_EQ (result_unique_ids[2 ], 3u );
261305 EXPECT_EQ (result_unique_ids[3 ], 4u );
262306 EXPECT_EQ (result_unique_ids[4 ], 5u );
263307 EXPECT_EQ (result_unique_ids[5 ], 6u );
308+ EXPECT_EQ (result_unique_ids[6 ], 7u );
264309 }
265310 }
266311
@@ -314,18 +359,20 @@ void test_components_api(bool use_dedicated_executor)
314359 auto result_node_names = result->full_node_names ;
315360 auto result_unique_ids = result->unique_ids ;
316361
317- EXPECT_EQ (result_node_names.size (), 5u );
362+ EXPECT_EQ (result_node_names.size (), 6u );
318363 EXPECT_EQ (result_node_names[0 ], " /test_component_bar" );
319364 EXPECT_EQ (result_node_names[1 ], " /test_component_baz" );
320365 EXPECT_EQ (result_node_names[2 ], " /ns/test_component_bing" );
321366 EXPECT_EQ (result_node_names[3 ], " /test_component_remap" );
322367 EXPECT_EQ (result_node_names[4 ], " /test_component_intra_process" );
323- EXPECT_EQ (result_unique_ids.size (), 5u );
368+ EXPECT_EQ (result_node_names[5 ], " /test_component_global_arguments" );
369+ EXPECT_EQ (result_unique_ids.size (), 6u );
324370 EXPECT_EQ (result_unique_ids[0 ], 2u );
325371 EXPECT_EQ (result_unique_ids[1 ], 3u );
326372 EXPECT_EQ (result_unique_ids[2 ], 4u );
327373 EXPECT_EQ (result_unique_ids[3 ], 5u );
328374 EXPECT_EQ (result_unique_ids[4 ], 6u );
375+ EXPECT_EQ (result_unique_ids[5 ], 7u );
329376 }
330377 }
331378}
0 commit comments