diff --git a/rcl_action/CMakeLists.txt b/rcl_action/CMakeLists.txt index ffb1fa6..620c9aa 100644 --- a/rcl_action/CMakeLists.txt +++ b/rcl_action/CMakeLists.txt @@ -153,12 +153,8 @@ if(BUILD_TESTING) custom_test_c(test_action_interaction "test/rcl_action/test_action_interaction.cpp") - # TODO(jacobperron): Graph tests fail with opensplice. Re-enable after resolving - # https://github.com/ros2/ros2/issues/677 - if(NOT rmw_implementation STREQUAL "rmw_opensplice_cpp") - custom_test_c(test_graph - "test/rcl_action/test_graph.cpp") - endif() + custom_test_c(test_graph + "test/rcl_action/test_graph.cpp") endmacro() call_for_each_rmw_implementation(targets) diff --git a/rcl_action/test/rcl_action/test_graph.cpp b/rcl_action/test/rcl_action/test_graph.cpp index c35ac5b..43b6694 100644 --- a/rcl_action/test/rcl_action/test_graph.cpp +++ b/rcl_action/test/rcl_action/test_graph.cpp @@ -15,6 +15,7 @@ #include #include +#include #include #include "rcl_action/action_client.h" @@ -35,6 +36,9 @@ # define CLASSNAME(NAME, SUFFIX) NAME #endif +const bool is_opensplice = + std::string(rmw_get_implementation_identifier()).find("rmw_opensplice") == 0; + class CLASSNAME (TestActionGraphFixture, RMW_IMPLEMENTATION) : public ::testing::Test { public: @@ -132,10 +136,13 @@ TEST_F( EXPECT_EQ(RCL_RET_ERROR, ret) << rcl_get_error_string().str; rcl_reset_error(); // Non-existent node - ret = rcl_action_get_client_names_and_types_by_node( - &this->node, &this->allocator, this->test_graph_old_node_name, "", &nat); - EXPECT_EQ(RCL_RET_ERROR, ret) << rcl_get_error_string().str; - rcl_reset_error(); + // Note, Opensplice successfully reports graph information about finalized nodes + if (!is_opensplice) { + ret = rcl_action_get_client_names_and_types_by_node( + &this->node, &this->allocator, this->test_graph_old_node_name, "", &nat); + EXPECT_EQ(RCL_RET_ERROR, ret) << rcl_get_error_string().str; + rcl_reset_error(); + } // Invalid names and types ret = rcl_action_get_client_names_and_types_by_node( &this->node, &this->allocator, this->test_graph_node_name, "", nullptr); @@ -185,10 +192,13 @@ TEST_F( EXPECT_EQ(RCL_RET_ERROR, ret) << rcl_get_error_string().str; rcl_reset_error(); // Non-existent node - ret = rcl_action_get_server_names_and_types_by_node( - &this->node, &this->allocator, this->test_graph_old_node_name, "", &nat); - EXPECT_EQ(RCL_RET_ERROR, ret) << rcl_get_error_string().str; - rcl_reset_error(); + // Note, Opensplice successfully reports graph information about finalized nodes + if (!is_opensplice) { + ret = rcl_action_get_server_names_and_types_by_node( + &this->node, &this->allocator, this->test_graph_old_node_name, "", &nat); + EXPECT_EQ(RCL_RET_ERROR, ret) << rcl_get_error_string().str; + rcl_reset_error(); + } // Invalid names and types ret = rcl_action_get_server_names_and_types_by_node( &this->node, &this->allocator, this->test_graph_node_name, "", nullptr); @@ -391,7 +401,7 @@ TEST_F(TestActionGraphMultiNodeFixture, test_action_get_names_and_types) { ASSERT_EQ(nat.names.size, 1u); EXPECT_STREQ(nat.names.data[0], client_action_name); ASSERT_EQ(nat.types[0].size, 1u); - EXPECT_STREQ(nat.types[0].data[0], "test_msgs/Fibonacci"); + EXPECT_STREQ(nat.types[0].data[0], "test_msgs/action/Fibonacci"); ret = rcl_names_and_types_fini(&nat); EXPECT_EQ(RCL_RET_OK, ret) << rcl_get_error_string().str; @@ -427,9 +437,9 @@ TEST_F(TestActionGraphMultiNodeFixture, test_action_get_names_and_types) { EXPECT_STREQ(nat.names.data[0], client_action_name); EXPECT_STREQ(nat.names.data[1], server_action_name); ASSERT_EQ(nat.types[0].size, 1u); - EXPECT_STREQ(nat.types[0].data[0], "test_msgs/Fibonacci"); + EXPECT_STREQ(nat.types[0].data[0], "test_msgs/action/Fibonacci"); ASSERT_EQ(nat.types[1].size, 1u); - EXPECT_STREQ(nat.types[1].data[0], "test_msgs/Fibonacci"); + EXPECT_STREQ(nat.types[1].data[0], "test_msgs/action/Fibonacci"); ret = rcl_names_and_types_fini(&nat); EXPECT_EQ(RCL_RET_OK, ret) << rcl_get_error_string().str; @@ -492,7 +502,7 @@ TEST_F(TestActionGraphMultiNodeFixture, test_action_get_server_names_and_types_b ASSERT_EQ(nat.names.size, 1u); EXPECT_STREQ(nat.names.data[0], this->action_name); ASSERT_EQ(nat.types[0].size, 1u); - EXPECT_STREQ(nat.types[0].data[0], "test_msgs/Fibonacci"); + EXPECT_STREQ(nat.types[0].data[0], "test_msgs/action/Fibonacci"); ret = rcl_names_and_types_fini(&nat); EXPECT_EQ(RCL_RET_OK, ret) << rcl_get_error_string().str; @@ -556,7 +566,7 @@ TEST_F(TestActionGraphMultiNodeFixture, test_action_get_client_names_and_types_b ASSERT_EQ(nat.names.size, 1u); EXPECT_STREQ(nat.names.data[0], this->action_name); ASSERT_EQ(nat.types[0].size, 1u); - EXPECT_STREQ(nat.types[0].data[0], "test_msgs/Fibonacci"); + EXPECT_STREQ(nat.types[0].data[0], "test_msgs/action/Fibonacci"); ret = rcl_names_and_types_fini(&nat); EXPECT_EQ(RCL_RET_OK, ret) << rcl_get_error_string().str;