Increase test timeouts of slow running tests with rmw_connext_cpp (#1400)

* Increase test timeouts of slow running tests with rmw_connext_cpp

Signed-off-by: Stephen Brawner <brawner@gmail.com>

* Fix other issues with connext

Signed-off-by: Stephen Brawner <brawner@gmail.com>
This commit is contained in:
brawner 2020-10-14 10:33:12 -07:00
parent 5e8fff6549
commit 504e68bdab
3 changed files with 28 additions and 7 deletions

View file

@ -207,7 +207,8 @@ if(TARGET test_node_interfaces__node_clock)
target_link_libraries(test_node_interfaces__node_clock ${PROJECT_NAME}) target_link_libraries(test_node_interfaces__node_clock ${PROJECT_NAME})
endif() endif()
ament_add_gtest(test_node_interfaces__node_graph ament_add_gtest(test_node_interfaces__node_graph
rclcpp/node_interfaces/test_node_graph.cpp) rclcpp/node_interfaces/test_node_graph.cpp
TIMEOUT 120)
if(TARGET test_node_interfaces__node_graph) if(TARGET test_node_interfaces__node_graph)
ament_target_dependencies( ament_target_dependencies(
test_node_interfaces__node_graph test_node_interfaces__node_graph
@ -322,7 +323,7 @@ ament_add_gtest(test_parameter_map rclcpp/test_parameter_map.cpp)
if(TARGET test_parameter_map) if(TARGET test_parameter_map)
target_link_libraries(test_parameter_map ${PROJECT_NAME}) target_link_libraries(test_parameter_map ${PROJECT_NAME})
endif() endif()
ament_add_gtest(test_publisher rclcpp/test_publisher.cpp) ament_add_gtest(test_publisher rclcpp/test_publisher.cpp TIMEOUT 120)
if(TARGET test_publisher) if(TARGET test_publisher)
ament_target_dependencies(test_publisher ament_target_dependencies(test_publisher
"rcl" "rcl"
@ -405,7 +406,8 @@ if(TARGET test_service)
) )
target_link_libraries(test_service ${PROJECT_NAME} mimick) target_link_libraries(test_service ${PROJECT_NAME} mimick)
endif() endif()
ament_add_gtest(test_subscription rclcpp/test_subscription.cpp) # Creating and destroying nodes is slow with Connext, so this needs larger timeout.
ament_add_gtest(test_subscription rclcpp/test_subscription.cpp TIMEOUT 120)
if(TARGET test_subscription) if(TARGET test_subscription)
ament_target_dependencies(test_subscription ament_target_dependencies(test_subscription
"rcl_interfaces" "rcl_interfaces"
@ -556,7 +558,7 @@ if(TARGET test_multi_threaded_executor)
endif() endif()
ament_add_gtest(test_static_executor_entities_collector rclcpp/executors/test_static_executor_entities_collector.cpp ament_add_gtest(test_static_executor_entities_collector rclcpp/executors/test_static_executor_entities_collector.cpp
APPEND_LIBRARY_DIRS "${append_library_dirs}") APPEND_LIBRARY_DIRS "${append_library_dirs}" TIMEOUT 120)
if(TARGET test_static_executor_entities_collector) if(TARGET test_static_executor_entities_collector)
ament_target_dependencies(test_static_executor_entities_collector ament_target_dependencies(test_static_executor_entities_collector
"rcl" "rcl"
@ -632,7 +634,7 @@ endif()
ament_add_gtest(test_executor rclcpp/test_executor.cpp ament_add_gtest(test_executor rclcpp/test_executor.cpp
APPEND_LIBRARY_DIRS "${append_library_dirs}" APPEND_LIBRARY_DIRS "${append_library_dirs}"
) TIMEOUT 120)
if(TARGET test_executor) if(TARGET test_executor)
ament_target_dependencies(test_executor "rcl") ament_target_dependencies(test_executor "rcl")
target_link_libraries(test_executor ${PROJECT_NAME} mimick) target_link_libraries(test_executor ${PROJECT_NAME} mimick)

View file

@ -29,6 +29,10 @@
#include "test_msgs/msg/empty.hpp" #include "test_msgs/msg/empty.hpp"
// Note: This is a long running test with rmw_connext_cpp, if you change this file, please check
// that this test can complete fully, or adjust the timeout as necessary.
// See https://github.com/ros2/rmw_connext/issues/325 for resolution
class TestPublisher : public ::testing::Test class TestPublisher : public ::testing::Test
{ {
public: public:
@ -274,6 +278,9 @@ TEST_F(TestPublisher, serialized_message_publish) {
auto publisher = node->create_publisher<test_msgs::msg::Empty>("topic", 10, options); auto publisher = node->create_publisher<test_msgs::msg::Empty>("topic", 10, options);
rclcpp::SerializedMessage serialized_msg; rclcpp::SerializedMessage serialized_msg;
// Mock successful rcl publish because the serialized_msg above is poorly formed
auto mock = mocking_utils::patch_and_return(
"self", rcl_publish_serialized_message, RCL_RET_OK);
EXPECT_NO_THROW(publisher->publish(serialized_msg)); EXPECT_NO_THROW(publisher->publish(serialized_msg));
EXPECT_NO_THROW(publisher->publish(serialized_msg.get_rcl_serialized_message())); EXPECT_NO_THROW(publisher->publish(serialized_msg.get_rcl_serialized_message()));
@ -411,14 +418,22 @@ TEST_F(TestPublisher, inter_process_publish_failures) {
EXPECT_THROW(publisher->publish(msg), rclcpp::exceptions::RCLError); EXPECT_THROW(publisher->publish(msg), rclcpp::exceptions::RCLError);
} }
{
// Using 'self' instead of 'lib:rclcpp' because `rcl_publish_serialized_message` is entirely
// defined in a header. Also, this one requires mocking because the serialized_msg is poorly
// formed and this just tests rclcpp functionality.
auto mock = mocking_utils::patch_and_return(
"self", rcl_publish_serialized_message, RCL_RET_OK);
rclcpp::SerializedMessage serialized_msg; rclcpp::SerializedMessage serialized_msg;
EXPECT_NO_THROW(publisher->publish(serialized_msg)); EXPECT_NO_THROW(publisher->publish(serialized_msg));
}
{ {
// Using 'self' instead of 'lib:rclcpp' because `rcl_publish_serialized_message` is entirely // Using 'self' instead of 'lib:rclcpp' because `rcl_publish_serialized_message` is entirely
// defined in a header // defined in a header
auto mock = mocking_utils::patch_and_return( auto mock = mocking_utils::patch_and_return(
"self", rcl_publish_serialized_message, RCL_RET_ERROR); "self", rcl_publish_serialized_message, RCL_RET_ERROR);
rclcpp::SerializedMessage serialized_msg;
EXPECT_THROW(publisher->publish(serialized_msg), rclcpp::exceptions::RCLError); EXPECT_THROW(publisher->publish(serialized_msg), rclcpp::exceptions::RCLError);
} }

View file

@ -29,6 +29,10 @@
#include "test_msgs/msg/empty.hpp" #include "test_msgs/msg/empty.hpp"
// Note: This is a long running test with rmw_connext_cpp, if you change this file, please check
// that this test can complete fully, or adjust the timeout as necessary.
// See https://github.com/ros2/rmw_connext/issues/325 for resolution
using namespace std::chrono_literals; using namespace std::chrono_literals;
class TestSubscription : public ::testing::Test class TestSubscription : public ::testing::Test