From bba11213081bf6fa2dbeb4d5d821a9a887754edd Mon Sep 17 00:00:00 2001 From: Jorge Perez Date: Fri, 11 Sep 2020 09:46:38 -0300 Subject: [PATCH 01/16] Add tests getters msg type support Signed-off-by: Jorge Perez --- rclcpp/test/CMakeLists.txt | 10 ++ rclcpp/test/rclcpp/test_type_support.cpp | 139 +++++++++++++++++++++++ 2 files changed, 149 insertions(+) create mode 100644 rclcpp/test/rclcpp/test_type_support.cpp diff --git a/rclcpp/test/CMakeLists.txt b/rclcpp/test/CMakeLists.txt index 62f53da5cd..11994058c6 100644 --- a/rclcpp/test/CMakeLists.txt +++ b/rclcpp/test/CMakeLists.txt @@ -407,6 +407,16 @@ if(TARGET test_subscription_traits) ) target_link_libraries(test_subscription_traits ${PROJECT_NAME}) endif() +ament_add_gtest(test_type_support rclcpp/test_type_support.cpp) +if(TARGET test_type_support) + ament_target_dependencies(test_type_support + "rmw" + "rosidl_runtime_cpp" + "rosidl_typesupport_cpp" + "test_msgs" + ) + target_link_libraries(test_type_support ${PROJECT_NAME}) +endif() ament_add_gtest(test_find_weak_nodes rclcpp/test_find_weak_nodes.cpp) if(TARGET test_find_weak_nodes) ament_target_dependencies(test_find_weak_nodes diff --git a/rclcpp/test/rclcpp/test_type_support.cpp b/rclcpp/test/rclcpp/test_type_support.cpp new file mode 100644 index 0000000000..4e2b3acff8 --- /dev/null +++ b/rclcpp/test/rclcpp/test_type_support.cpp @@ -0,0 +1,139 @@ +// Copyright 2017 Open Source Robotics Foundation, Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include + +#include +#include +#include + +#include "rclcpp/exceptions.hpp" +#include "rclcpp/rclcpp.hpp" +#include "rclcpp/type_support_decl.hpp" +#include "test_msgs/msg/empty.hpp" + +class TestPublisher : public ::testing::Test +{ +public: + static void SetUpTestCase() + { + if (!rclcpp::ok()) { + rclcpp::init(0, nullptr); + } + } + +protected: + void initialize(const rclcpp::NodeOptions & node_options = rclcpp::NodeOptions()) + { + node = std::make_shared("my_node", "/ns", node_options); + } + + void TearDown() + { + node.reset(); + } + + rclcpp::Node::SharedPtr node; +}; + +const rcl_publisher_options_t PublisherOptions() +{ + return rclcpp::PublisherOptionsWithAllocator>().template + to_rcl_publisher_options(rclcpp::QoS(10)); +} + +// Auxiliary classes used to test rosidl_message_type_support_t getters +// defined in type_support.hpp +const rosidl_message_type_support_t *ts_parameter_event = + rclcpp::type_support::get_parameter_event_msg_type_support(); + +class TestTSParameterEvent : public rclcpp::PublisherBase +{ +public: + explicit TestTSParameterEvent(rclcpp::Node * node) + : rclcpp::PublisherBase( + node->get_node_base_interface().get(), + "topicTSParameterEvent", + *ts_parameter_event, + PublisherOptions()) {} +}; + +const rosidl_message_type_support_t *ts_set_parameter_result = + rclcpp::type_support::get_set_parameters_result_msg_type_support(); + +class TestTSSetParameterResult : public rclcpp::PublisherBase +{ +public: + explicit TestTSSetParameterResult(rclcpp::Node * node) + : rclcpp::PublisherBase( + node->get_node_base_interface().get(), + "topicTSSetParameterResult", + *ts_set_parameter_result, + PublisherOptions()) {} +}; + +const rosidl_message_type_support_t *ts_parameter_descriptor = + rclcpp::type_support::get_parameter_descriptor_msg_type_support(); + +class TestTSParameterDescriptor : public rclcpp::PublisherBase +{ +public: + explicit TestTSParameterDescriptor(rclcpp::Node * node) + : rclcpp::PublisherBase( + node->get_node_base_interface().get(), + "topicTSParameterDescriptor", + *ts_parameter_descriptor, + PublisherOptions()) {} +}; + +const rosidl_message_type_support_t *ts_list_parameter_result = + rclcpp::type_support::get_list_parameters_result_msg_type_support(); + +class TestTSListParametersResult : public rclcpp::PublisherBase +{ +public: + explicit TestTSListParametersResult(rclcpp::Node * node) + : rclcpp::PublisherBase( + node->get_node_base_interface().get(), + "topicTSListParametersResult", + *ts_list_parameter_result, + PublisherOptions()) {} +}; + +/* + Test that the publisher is created properly for different msg typesupport + */ +TEST_F(TestPublisher, basic_getters) { + initialize(); + { + auto publisher = TestTSParameterEvent(node.get()); + std::shared_ptr publisher_handle = publisher.get_publisher_handle(); + EXPECT_NE(nullptr, publisher_handle); + } + { + auto publisher = TestTSSetParameterResult(node.get()); + std::shared_ptr publisher_handle = publisher.get_publisher_handle(); + EXPECT_NE(nullptr, publisher_handle); + } + { + auto publisher = TestTSParameterDescriptor(node.get()); + std::shared_ptr publisher_handle = publisher.get_publisher_handle(); + EXPECT_NE(nullptr, publisher_handle); + } + { + auto publisher = TestTSListParametersResult(node.get()); + std::shared_ptr publisher_handle = publisher.get_publisher_handle(); + EXPECT_NE(nullptr, publisher_handle); + } +} From b027cca25986ec400b0cc1f6c6f63cf37ec73402 Mon Sep 17 00:00:00 2001 From: Jorge Perez Date: Fri, 11 Sep 2020 10:07:58 -0300 Subject: [PATCH 02/16] Add missing fini Signed-off-by: Jorge Perez --- rclcpp/test/rclcpp/test_service.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/rclcpp/test/rclcpp/test_service.cpp b/rclcpp/test/rclcpp/test_service.cpp index 8043178b7e..92a35990dc 100644 --- a/rclcpp/test/rclcpp/test_service.cpp +++ b/rclcpp/test/rclcpp/test_service.cpp @@ -141,5 +141,9 @@ TEST_F(TestService, basic_public_getters) { // Use get_service_handle specific to const service std::shared_ptr const_service_handle = base.get_service_handle(); EXPECT_NE(nullptr, const_service_handle); + + EXPECT_EQ(RCL_RET_OK, rcl_service_fini( + &service_handle, + node_handle_int->get_node_base_interface()->get_rcl_node_handle())); } } From bdd02e7bb2b24234b67f6c5422aab7e21615ed02 Mon Sep 17 00:00:00 2001 From: Jorge Perez Date: Fri, 11 Sep 2020 10:49:06 -0300 Subject: [PATCH 03/16] Add tests type_support services Signed-off-by: Jorge Perez --- rclcpp/test/rclcpp/test_type_support.cpp | 117 ++++++++++++++++++++++- 1 file changed, 115 insertions(+), 2 deletions(-) diff --git a/rclcpp/test/rclcpp/test_type_support.cpp b/rclcpp/test/rclcpp/test_type_support.cpp index 4e2b3acff8..156c43775e 100644 --- a/rclcpp/test/rclcpp/test_type_support.cpp +++ b/rclcpp/test/rclcpp/test_type_support.cpp @@ -23,7 +23,7 @@ #include "rclcpp/type_support_decl.hpp" #include "test_msgs/msg/empty.hpp" -class TestPublisher : public ::testing::Test +class TestTypeSupport : public ::testing::Test { public: static void SetUpTestCase() @@ -114,7 +114,7 @@ class TestTSListParametersResult : public rclcpp::PublisherBase /* Test that the publisher is created properly for different msg typesupport */ -TEST_F(TestPublisher, basic_getters) { +TEST_F(TestTypeSupport, basic_getters) { initialize(); { auto publisher = TestTSParameterEvent(node.get()); @@ -137,3 +137,116 @@ TEST_F(TestPublisher, basic_getters) { EXPECT_NE(nullptr, publisher_handle); } } + +/* Testing type support getters */ +TEST_F(TestTypeSupport, test_service_getters) { + initialize(); + { + auto node_handle_int = rclcpp::Node::make_shared("base_node"); + rcl_service_t service_handle = rcl_get_zero_initialized_service(); + rcl_service_options_t service_options = rcl_service_get_default_options(); + const rosidl_service_type_support_t * ts = + rclcpp::type_support::get_get_parameters_srv_type_support(); + rcl_ret_t ret = rcl_service_init( + &service_handle, + node_handle_int->get_node_base_interface()->get_rcl_node_handle(), + ts, "base_node_service", &service_options); + if (ret != RCL_RET_OK) { + FAIL(); + return; + } + EXPECT_EQ(RCL_RET_OK, rcl_service_fini( + &service_handle, + node_handle_int->get_node_base_interface()->get_rcl_node_handle())); + } + { + auto node_handle_int = rclcpp::Node::make_shared("base_node"); + rcl_service_t service_handle = rcl_get_zero_initialized_service(); + rcl_service_options_t service_options = rcl_service_get_default_options(); + const rosidl_service_type_support_t * ts = + rclcpp::type_support::get_get_parameter_types_srv_type_support(); + rcl_ret_t ret = rcl_service_init( + &service_handle, + node_handle_int->get_node_base_interface()->get_rcl_node_handle(), + ts, "base_node_service", &service_options); + if (ret != RCL_RET_OK) { + FAIL(); + return; + } + EXPECT_EQ(RCL_RET_OK, rcl_service_fini( + &service_handle, + node_handle_int->get_node_base_interface()->get_rcl_node_handle())); + } + { + auto node_handle_int = rclcpp::Node::make_shared("base_node"); + rcl_service_t service_handle = rcl_get_zero_initialized_service(); + rcl_service_options_t service_options = rcl_service_get_default_options(); + const rosidl_service_type_support_t * ts = + rclcpp::type_support::get_set_parameters_srv_type_support(); + rcl_ret_t ret = rcl_service_init( + &service_handle, + node_handle_int->get_node_base_interface()->get_rcl_node_handle(), + ts, "base_node_service", &service_options); + if (ret != RCL_RET_OK) { + FAIL(); + return; + } + EXPECT_EQ(RCL_RET_OK, rcl_service_fini( + &service_handle, + node_handle_int->get_node_base_interface()->get_rcl_node_handle())); + } + { + auto node_handle_int = rclcpp::Node::make_shared("base_node"); + rcl_service_t service_handle = rcl_get_zero_initialized_service(); + rcl_service_options_t service_options = rcl_service_get_default_options(); + const rosidl_service_type_support_t * ts = + rclcpp::type_support::get_list_parameters_srv_type_support(); + rcl_ret_t ret = rcl_service_init( + &service_handle, + node_handle_int->get_node_base_interface()->get_rcl_node_handle(), + ts, "base_node_service", &service_options); + if (ret != RCL_RET_OK) { + FAIL(); + return; + } + EXPECT_EQ(RCL_RET_OK, rcl_service_fini( + &service_handle, + node_handle_int->get_node_base_interface()->get_rcl_node_handle())); + } + { + auto node_handle_int = rclcpp::Node::make_shared("base_node"); + rcl_service_t service_handle = rcl_get_zero_initialized_service(); + rcl_service_options_t service_options = rcl_service_get_default_options(); + const rosidl_service_type_support_t * ts = + rclcpp::type_support::get_describe_parameters_srv_type_support(); + rcl_ret_t ret = rcl_service_init( + &service_handle, + node_handle_int->get_node_base_interface()->get_rcl_node_handle(), + ts, "base_node_service", &service_options); + if (ret != RCL_RET_OK) { + FAIL(); + return; + } + EXPECT_EQ(RCL_RET_OK, rcl_service_fini( + &service_handle, + node_handle_int->get_node_base_interface()->get_rcl_node_handle())); + } + { + auto node_handle_int = rclcpp::Node::make_shared("base_node"); + rcl_service_t service_handle = rcl_get_zero_initialized_service(); + rcl_service_options_t service_options = rcl_service_get_default_options(); + const rosidl_service_type_support_t * ts = + rclcpp::type_support::get_set_parameters_atomically_srv_type_support(); + rcl_ret_t ret = rcl_service_init( + &service_handle, + node_handle_int->get_node_base_interface()->get_rcl_node_handle(), + ts, "base_node_service", &service_options); + if (ret != RCL_RET_OK) { + FAIL(); + return; + } + EXPECT_EQ(RCL_RET_OK, rcl_service_fini( + &service_handle, + node_handle_int->get_node_base_interface()->get_rcl_node_handle())); + } +} From 4bb4fe6161c34adeefa82a772d25e127cd7c78f5 Mon Sep 17 00:00:00 2001 From: Jorge Perez Date: Fri, 11 Sep 2020 11:02:04 -0300 Subject: [PATCH 04/16] Reformat to re use test structure Signed-off-by: Jorge Perez --- rclcpp/test/rclcpp/test_type_support.cpp | 112 ++++++----------------- 1 file changed, 28 insertions(+), 84 deletions(-) diff --git a/rclcpp/test/rclcpp/test_type_support.cpp b/rclcpp/test/rclcpp/test_type_support.cpp index 156c43775e..ba458244ad 100644 --- a/rclcpp/test/rclcpp/test_type_support.cpp +++ b/rclcpp/test/rclcpp/test_type_support.cpp @@ -138,115 +138,59 @@ TEST_F(TestTypeSupport, basic_getters) { } } +void test_type_support_init_fini(const rosidl_service_type_support_t * ts){ + auto node_handle_int = rclcpp::Node::make_shared("base_node"); + rcl_service_t service_handle = rcl_get_zero_initialized_service(); + rcl_service_options_t service_options = rcl_service_get_default_options(); + rcl_ret_t ret = rcl_service_init( + &service_handle, + node_handle_int->get_node_base_interface()->get_rcl_node_handle(), + ts, "base_node_service", &service_options); + if (ret != RCL_RET_OK) { + FAIL(); + return; + } + EXPECT_EQ(RCL_RET_OK, rcl_service_fini( + &service_handle, + node_handle_int->get_node_base_interface()->get_rcl_node_handle())); +} + /* Testing type support getters */ TEST_F(TestTypeSupport, test_service_getters) { initialize(); { - auto node_handle_int = rclcpp::Node::make_shared("base_node"); - rcl_service_t service_handle = rcl_get_zero_initialized_service(); - rcl_service_options_t service_options = rcl_service_get_default_options(); const rosidl_service_type_support_t * ts = rclcpp::type_support::get_get_parameters_srv_type_support(); - rcl_ret_t ret = rcl_service_init( - &service_handle, - node_handle_int->get_node_base_interface()->get_rcl_node_handle(), - ts, "base_node_service", &service_options); - if (ret != RCL_RET_OK) { - FAIL(); - return; - } - EXPECT_EQ(RCL_RET_OK, rcl_service_fini( - &service_handle, - node_handle_int->get_node_base_interface()->get_rcl_node_handle())); + test_type_support_init_fini(ts); + } + { + const rosidl_service_type_support_t * ts = + rclcpp::type_support::get_get_parameters_srv_type_support(); + test_type_support_init_fini(ts); } { - auto node_handle_int = rclcpp::Node::make_shared("base_node"); - rcl_service_t service_handle = rcl_get_zero_initialized_service(); - rcl_service_options_t service_options = rcl_service_get_default_options(); const rosidl_service_type_support_t * ts = rclcpp::type_support::get_get_parameter_types_srv_type_support(); - rcl_ret_t ret = rcl_service_init( - &service_handle, - node_handle_int->get_node_base_interface()->get_rcl_node_handle(), - ts, "base_node_service", &service_options); - if (ret != RCL_RET_OK) { - FAIL(); - return; - } - EXPECT_EQ(RCL_RET_OK, rcl_service_fini( - &service_handle, - node_handle_int->get_node_base_interface()->get_rcl_node_handle())); + test_type_support_init_fini(ts); } { - auto node_handle_int = rclcpp::Node::make_shared("base_node"); - rcl_service_t service_handle = rcl_get_zero_initialized_service(); - rcl_service_options_t service_options = rcl_service_get_default_options(); const rosidl_service_type_support_t * ts = rclcpp::type_support::get_set_parameters_srv_type_support(); - rcl_ret_t ret = rcl_service_init( - &service_handle, - node_handle_int->get_node_base_interface()->get_rcl_node_handle(), - ts, "base_node_service", &service_options); - if (ret != RCL_RET_OK) { - FAIL(); - return; - } - EXPECT_EQ(RCL_RET_OK, rcl_service_fini( - &service_handle, - node_handle_int->get_node_base_interface()->get_rcl_node_handle())); + test_type_support_init_fini(ts); } { - auto node_handle_int = rclcpp::Node::make_shared("base_node"); - rcl_service_t service_handle = rcl_get_zero_initialized_service(); - rcl_service_options_t service_options = rcl_service_get_default_options(); const rosidl_service_type_support_t * ts = rclcpp::type_support::get_list_parameters_srv_type_support(); - rcl_ret_t ret = rcl_service_init( - &service_handle, - node_handle_int->get_node_base_interface()->get_rcl_node_handle(), - ts, "base_node_service", &service_options); - if (ret != RCL_RET_OK) { - FAIL(); - return; - } - EXPECT_EQ(RCL_RET_OK, rcl_service_fini( - &service_handle, - node_handle_int->get_node_base_interface()->get_rcl_node_handle())); + test_type_support_init_fini(ts); } { - auto node_handle_int = rclcpp::Node::make_shared("base_node"); - rcl_service_t service_handle = rcl_get_zero_initialized_service(); - rcl_service_options_t service_options = rcl_service_get_default_options(); const rosidl_service_type_support_t * ts = rclcpp::type_support::get_describe_parameters_srv_type_support(); - rcl_ret_t ret = rcl_service_init( - &service_handle, - node_handle_int->get_node_base_interface()->get_rcl_node_handle(), - ts, "base_node_service", &service_options); - if (ret != RCL_RET_OK) { - FAIL(); - return; - } - EXPECT_EQ(RCL_RET_OK, rcl_service_fini( - &service_handle, - node_handle_int->get_node_base_interface()->get_rcl_node_handle())); + test_type_support_init_fini(ts); } { - auto node_handle_int = rclcpp::Node::make_shared("base_node"); - rcl_service_t service_handle = rcl_get_zero_initialized_service(); - rcl_service_options_t service_options = rcl_service_get_default_options(); const rosidl_service_type_support_t * ts = rclcpp::type_support::get_set_parameters_atomically_srv_type_support(); - rcl_ret_t ret = rcl_service_init( - &service_handle, - node_handle_int->get_node_base_interface()->get_rcl_node_handle(), - ts, "base_node_service", &service_options); - if (ret != RCL_RET_OK) { - FAIL(); - return; - } - EXPECT_EQ(RCL_RET_OK, rcl_service_fini( - &service_handle, - node_handle_int->get_node_base_interface()->get_rcl_node_handle())); + test_type_support_init_fini(ts); } } From 0ba143926fc38c345031a9c419e79391a03eb5cd Mon Sep 17 00:00:00 2001 From: Jorge Perez Date: Fri, 11 Sep 2020 18:17:01 -0300 Subject: [PATCH 05/16] Fix uncrustify Signed-off-by: Jorge Perez --- rclcpp/test/rclcpp/test_service.cpp | 7 ++++--- rclcpp/test/rclcpp/test_type_support.cpp | 17 +++++++++-------- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/rclcpp/test/rclcpp/test_service.cpp b/rclcpp/test/rclcpp/test_service.cpp index 92a35990dc..7ad25e71e5 100644 --- a/rclcpp/test/rclcpp/test_service.cpp +++ b/rclcpp/test/rclcpp/test_service.cpp @@ -142,8 +142,9 @@ TEST_F(TestService, basic_public_getters) { std::shared_ptr const_service_handle = base.get_service_handle(); EXPECT_NE(nullptr, const_service_handle); - EXPECT_EQ(RCL_RET_OK, rcl_service_fini( - &service_handle, - node_handle_int->get_node_base_interface()->get_rcl_node_handle())); + EXPECT_EQ( + RCL_RET_OK, rcl_service_fini( + &service_handle, + node_handle_int->get_node_base_interface()->get_rcl_node_handle())); } } diff --git a/rclcpp/test/rclcpp/test_type_support.cpp b/rclcpp/test/rclcpp/test_type_support.cpp index ba458244ad..6ed75268b6 100644 --- a/rclcpp/test/rclcpp/test_type_support.cpp +++ b/rclcpp/test/rclcpp/test_type_support.cpp @@ -55,7 +55,7 @@ const rcl_publisher_options_t PublisherOptions() // Auxiliary classes used to test rosidl_message_type_support_t getters // defined in type_support.hpp -const rosidl_message_type_support_t *ts_parameter_event = +const rosidl_message_type_support_t * ts_parameter_event = rclcpp::type_support::get_parameter_event_msg_type_support(); class TestTSParameterEvent : public rclcpp::PublisherBase @@ -69,7 +69,7 @@ class TestTSParameterEvent : public rclcpp::PublisherBase PublisherOptions()) {} }; -const rosidl_message_type_support_t *ts_set_parameter_result = +const rosidl_message_type_support_t * ts_set_parameter_result = rclcpp::type_support::get_set_parameters_result_msg_type_support(); class TestTSSetParameterResult : public rclcpp::PublisherBase @@ -83,7 +83,7 @@ class TestTSSetParameterResult : public rclcpp::PublisherBase PublisherOptions()) {} }; -const rosidl_message_type_support_t *ts_parameter_descriptor = +const rosidl_message_type_support_t * ts_parameter_descriptor = rclcpp::type_support::get_parameter_descriptor_msg_type_support(); class TestTSParameterDescriptor : public rclcpp::PublisherBase @@ -97,7 +97,7 @@ class TestTSParameterDescriptor : public rclcpp::PublisherBase PublisherOptions()) {} }; -const rosidl_message_type_support_t *ts_list_parameter_result = +const rosidl_message_type_support_t * ts_list_parameter_result = rclcpp::type_support::get_list_parameters_result_msg_type_support(); class TestTSListParametersResult : public rclcpp::PublisherBase @@ -138,7 +138,7 @@ TEST_F(TestTypeSupport, basic_getters) { } } -void test_type_support_init_fini(const rosidl_service_type_support_t * ts){ +void test_type_support_init_fini(const rosidl_service_type_support_t * ts) { auto node_handle_int = rclcpp::Node::make_shared("base_node"); rcl_service_t service_handle = rcl_get_zero_initialized_service(); rcl_service_options_t service_options = rcl_service_get_default_options(); @@ -150,9 +150,10 @@ void test_type_support_init_fini(const rosidl_service_type_support_t * ts){ FAIL(); return; } - EXPECT_EQ(RCL_RET_OK, rcl_service_fini( - &service_handle, - node_handle_int->get_node_base_interface()->get_rcl_node_handle())); + EXPECT_EQ( + RCL_RET_OK, rcl_service_fini( + &service_handle, + node_handle_int->get_node_base_interface()->get_rcl_node_handle())); } /* Testing type support getters */ From 624d35c791af1f8a4bb77869f51e5d57fa00a2fe Mon Sep 17 00:00:00 2001 From: Jorge Perez Date: Fri, 11 Sep 2020 18:38:08 -0300 Subject: [PATCH 06/16] Fix linter Signed-off-by: Jorge Perez --- rclcpp/test/rclcpp/test_type_support.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/rclcpp/test/rclcpp/test_type_support.cpp b/rclcpp/test/rclcpp/test_type_support.cpp index 6ed75268b6..9f21bd2038 100644 --- a/rclcpp/test/rclcpp/test_type_support.cpp +++ b/rclcpp/test/rclcpp/test_type_support.cpp @@ -138,7 +138,8 @@ TEST_F(TestTypeSupport, basic_getters) { } } -void test_type_support_init_fini(const rosidl_service_type_support_t * ts) { +void test_type_support_init_fini(const rosidl_service_type_support_t * ts) +{ auto node_handle_int = rclcpp::Node::make_shared("base_node"); rcl_service_t service_handle = rcl_get_zero_initialized_service(); rcl_service_options_t service_options = rcl_service_get_default_options(); From 05d3db00bdb03adfca2da5f902de0c9549a45eca Mon Sep 17 00:00:00 2001 From: Jorge Perez Date: Fri, 11 Sep 2020 18:42:34 -0300 Subject: [PATCH 07/16] Remove not needed headers Signed-off-by: Jorge Perez --- rclcpp/test/rclcpp/test_type_support.cpp | 3 --- 1 file changed, 3 deletions(-) diff --git a/rclcpp/test/rclcpp/test_type_support.cpp b/rclcpp/test/rclcpp/test_type_support.cpp index 9f21bd2038..90acc5fa78 100644 --- a/rclcpp/test/rclcpp/test_type_support.cpp +++ b/rclcpp/test/rclcpp/test_type_support.cpp @@ -14,11 +14,8 @@ #include -#include #include -#include -#include "rclcpp/exceptions.hpp" #include "rclcpp/rclcpp.hpp" #include "rclcpp/type_support_decl.hpp" #include "test_msgs/msg/empty.hpp" From 040abc43d3850269aa7d7d86bb003db2e1aa3456 Mon Sep 17 00:00:00 2001 From: Jorge Perez Date: Fri, 11 Sep 2020 18:43:20 -0300 Subject: [PATCH 08/16] Change copyright year Signed-off-by: Jorge Perez --- rclcpp/test/rclcpp/test_type_support.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rclcpp/test/rclcpp/test_type_support.cpp b/rclcpp/test/rclcpp/test_type_support.cpp index 90acc5fa78..ef9fc53570 100644 --- a/rclcpp/test/rclcpp/test_type_support.cpp +++ b/rclcpp/test/rclcpp/test_type_support.cpp @@ -1,4 +1,4 @@ -// Copyright 2017 Open Source Robotics Foundation, Inc. +// Copyright 2020 Open Source Robotics Foundation, Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. From f9df8871eb04dfbb41e9de23f6cd49d8e5f4cd49 Mon Sep 17 00:00:00 2001 From: Jorge Perez Date: Fri, 11 Sep 2020 19:11:08 -0300 Subject: [PATCH 09/16] Improve teardown test cases Signed-off-by: Jorge Perez --- rclcpp/test/rclcpp/test_type_support.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/rclcpp/test/rclcpp/test_type_support.cpp b/rclcpp/test/rclcpp/test_type_support.cpp index ef9fc53570..fb95cb812c 100644 --- a/rclcpp/test/rclcpp/test_type_support.cpp +++ b/rclcpp/test/rclcpp/test_type_support.cpp @@ -30,15 +30,15 @@ class TestTypeSupport : public ::testing::Test } } -protected: - void initialize(const rclcpp::NodeOptions & node_options = rclcpp::NodeOptions()) + static void TearDownTestCase() { - node = std::make_shared("my_node", "/ns", node_options); + rclcpp::shutdown(); } - void TearDown() +protected: + void initialize(const rclcpp::NodeOptions & node_options = rclcpp::NodeOptions()) { - node.reset(); + node = std::make_shared("my_node", "/ns", node_options); } rclcpp::Node::SharedPtr node; From 35f474d961a353665b4389f09f9d631063b10850 Mon Sep 17 00:00:00 2001 From: Jorge Perez Date: Fri, 11 Sep 2020 19:18:00 -0300 Subject: [PATCH 10/16] Add nullptr checks to type_support tests Signed-off-by: Jorge Perez --- rclcpp/test/rclcpp/test_type_support.cpp | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/rclcpp/test/rclcpp/test_type_support.cpp b/rclcpp/test/rclcpp/test_type_support.cpp index fb95cb812c..b4b9dbbe07 100644 --- a/rclcpp/test/rclcpp/test_type_support.cpp +++ b/rclcpp/test/rclcpp/test_type_support.cpp @@ -160,36 +160,43 @@ TEST_F(TestTypeSupport, test_service_getters) { { const rosidl_service_type_support_t * ts = rclcpp::type_support::get_get_parameters_srv_type_support(); + EXPECT_NE(nullptr, ts); test_type_support_init_fini(ts); } { const rosidl_service_type_support_t * ts = rclcpp::type_support::get_get_parameters_srv_type_support(); + EXPECT_NE(nullptr, ts); test_type_support_init_fini(ts); } { const rosidl_service_type_support_t * ts = rclcpp::type_support::get_get_parameter_types_srv_type_support(); + EXPECT_NE(nullptr, ts); test_type_support_init_fini(ts); } { const rosidl_service_type_support_t * ts = rclcpp::type_support::get_set_parameters_srv_type_support(); + EXPECT_NE(nullptr, ts); test_type_support_init_fini(ts); } { const rosidl_service_type_support_t * ts = rclcpp::type_support::get_list_parameters_srv_type_support(); + EXPECT_NE(nullptr, ts); test_type_support_init_fini(ts); } { const rosidl_service_type_support_t * ts = rclcpp::type_support::get_describe_parameters_srv_type_support(); + EXPECT_NE(nullptr, ts); test_type_support_init_fini(ts); } { const rosidl_service_type_support_t * ts = rclcpp::type_support::get_set_parameters_atomically_srv_type_support(); + EXPECT_NE(nullptr, ts); test_type_support_init_fini(ts); } } From 811ad25b89bbaa26a8830f017df28fcfbf9d009d Mon Sep 17 00:00:00 2001 From: Jorge Perez Date: Fri, 11 Sep 2020 20:01:06 -0300 Subject: [PATCH 11/16] Reformat type_support testing Signed-off-by: Jorge Perez --- rclcpp/test/rclcpp/test_type_support.cpp | 133 +++++++++++------------ 1 file changed, 66 insertions(+), 67 deletions(-) diff --git a/rclcpp/test/rclcpp/test_type_support.cpp b/rclcpp/test/rclcpp/test_type_support.cpp index b4b9dbbe07..e4e99b715e 100644 --- a/rclcpp/test/rclcpp/test_type_support.cpp +++ b/rclcpp/test/rclcpp/test_type_support.cpp @@ -35,13 +35,29 @@ class TestTypeSupport : public ::testing::Test rclcpp::shutdown(); } -protected: - void initialize(const rclcpp::NodeOptions & node_options = rclcpp::NodeOptions()) + ::testing::AssertionResult test_type_support_init_fini(const rosidl_service_type_support_t * ts) { - node = std::make_shared("my_node", "/ns", node_options); + rcl_service_t service_handle = rcl_get_zero_initialized_service(); + rcl_service_options_t service_options = rcl_service_get_default_options(); + rcl_ret_t ret = rcl_service_init( + &service_handle, + node->get_node_base_interface()->get_rcl_node_handle(), + ts, "base_node_service", &service_options); + if (ret != RCL_RET_OK) { + return ::testing::AssertionFailure() << "Failed ts init"; + } + EXPECT_EQ( + RCL_RET_OK, rcl_service_fini( + &service_handle, + node->get_node_base_interface()->get_rcl_node_handle())); + if (ret != RCL_RET_OK) { + return ::testing::AssertionFailure() << "Failed ts fini"; + } + return ::testing::AssertionSuccess(); } - rclcpp::Node::SharedPtr node; +protected: + rclcpp::Node::SharedPtr node = std::make_shared("my_node", "/ns"); }; const rcl_publisher_options_t PublisherOptions() @@ -112,7 +128,6 @@ class TestTSListParametersResult : public rclcpp::PublisherBase Test that the publisher is created properly for different msg typesupport */ TEST_F(TestTypeSupport, basic_getters) { - initialize(); { auto publisher = TestTSParameterEvent(node.get()); std::shared_ptr publisher_handle = publisher.get_publisher_handle(); @@ -135,68 +150,52 @@ TEST_F(TestTypeSupport, basic_getters) { } } -void test_type_support_init_fini(const rosidl_service_type_support_t * ts) -{ - auto node_handle_int = rclcpp::Node::make_shared("base_node"); - rcl_service_t service_handle = rcl_get_zero_initialized_service(); - rcl_service_options_t service_options = rcl_service_get_default_options(); - rcl_ret_t ret = rcl_service_init( - &service_handle, - node_handle_int->get_node_base_interface()->get_rcl_node_handle(), - ts, "base_node_service", &service_options); - if (ret != RCL_RET_OK) { - FAIL(); - return; - } - EXPECT_EQ( - RCL_RET_OK, rcl_service_fini( - &service_handle, - node_handle_int->get_node_base_interface()->get_rcl_node_handle())); +/* Testing type support getters */ +TEST_F(TestTypeSupport, test_service_ts_get_params_srv) { + const rosidl_service_type_support_t * ts = + rclcpp::type_support::get_get_parameters_srv_type_support(); + EXPECT_NE(nullptr, ts); + EXPECT_TRUE(test_type_support_init_fini(ts)); } -/* Testing type support getters */ -TEST_F(TestTypeSupport, test_service_getters) { - initialize(); - { - const rosidl_service_type_support_t * ts = - rclcpp::type_support::get_get_parameters_srv_type_support(); - EXPECT_NE(nullptr, ts); - test_type_support_init_fini(ts); - } - { - const rosidl_service_type_support_t * ts = - rclcpp::type_support::get_get_parameters_srv_type_support(); - EXPECT_NE(nullptr, ts); - test_type_support_init_fini(ts); - } - { - const rosidl_service_type_support_t * ts = - rclcpp::type_support::get_get_parameter_types_srv_type_support(); - EXPECT_NE(nullptr, ts); - test_type_support_init_fini(ts); - } - { - const rosidl_service_type_support_t * ts = - rclcpp::type_support::get_set_parameters_srv_type_support(); - EXPECT_NE(nullptr, ts); - test_type_support_init_fini(ts); - } - { - const rosidl_service_type_support_t * ts = - rclcpp::type_support::get_list_parameters_srv_type_support(); - EXPECT_NE(nullptr, ts); - test_type_support_init_fini(ts); - } - { - const rosidl_service_type_support_t * ts = - rclcpp::type_support::get_describe_parameters_srv_type_support(); - EXPECT_NE(nullptr, ts); - test_type_support_init_fini(ts); - } - { - const rosidl_service_type_support_t * ts = - rclcpp::type_support::get_set_parameters_atomically_srv_type_support(); - EXPECT_NE(nullptr, ts); - test_type_support_init_fini(ts); - } +TEST_F(TestTypeSupport, test_service_ts_get_params_srv_type) { + const rosidl_service_type_support_t * ts = + rclcpp::type_support::get_get_parameters_srv_type_support(); + EXPECT_NE(nullptr, ts); + EXPECT_TRUE(test_type_support_init_fini(ts)); +} + +TEST_F(TestTypeSupport, test_service_ts_get_parameters_types_srv) { + const rosidl_service_type_support_t * ts = + rclcpp::type_support::get_get_parameter_types_srv_type_support(); + EXPECT_NE(nullptr, ts); + EXPECT_TRUE(test_type_support_init_fini(ts)); +} + +TEST_F(TestTypeSupport, test_service_ts_set_params_srv) { + const rosidl_service_type_support_t * ts = + rclcpp::type_support::get_set_parameters_srv_type_support(); + EXPECT_NE(nullptr, ts); + EXPECT_TRUE(test_type_support_init_fini(ts)); +} + +TEST_F(TestTypeSupport, test_service_ts_list_params_srv) { + const rosidl_service_type_support_t * ts = + rclcpp::type_support::get_list_parameters_srv_type_support(); + EXPECT_NE(nullptr, ts); + EXPECT_TRUE(test_type_support_init_fini(ts)); +} + +TEST_F(TestTypeSupport, test_service_ts_describe_params_srv) { + const rosidl_service_type_support_t * ts = + rclcpp::type_support::get_describe_parameters_srv_type_support(); + EXPECT_NE(nullptr, ts); + EXPECT_TRUE(test_type_support_init_fini(ts)); +} + +TEST_F(TestTypeSupport, test_service_ts_set_params_atomically_srv) { + const rosidl_service_type_support_t * ts = + rclcpp::type_support::get_set_parameters_atomically_srv_type_support(); + EXPECT_NE(nullptr, ts); + EXPECT_TRUE(test_type_support_init_fini(ts)); } From 5b0137c399d8435d4cba99c300f8778f6dcddefe Mon Sep 17 00:00:00 2001 From: Jorge Perez Date: Mon, 14 Sep 2020 12:42:24 -0300 Subject: [PATCH 12/16] Replace expect tests with asserts Signed-off-by: Jorge Perez --- rclcpp/test/rclcpp/test_type_support.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/rclcpp/test/rclcpp/test_type_support.cpp b/rclcpp/test/rclcpp/test_type_support.cpp index e4e99b715e..41c6d745e5 100644 --- a/rclcpp/test/rclcpp/test_type_support.cpp +++ b/rclcpp/test/rclcpp/test_type_support.cpp @@ -154,48 +154,48 @@ TEST_F(TestTypeSupport, basic_getters) { TEST_F(TestTypeSupport, test_service_ts_get_params_srv) { const rosidl_service_type_support_t * ts = rclcpp::type_support::get_get_parameters_srv_type_support(); - EXPECT_NE(nullptr, ts); + ASSERT_NE(nullptr, ts); EXPECT_TRUE(test_type_support_init_fini(ts)); } TEST_F(TestTypeSupport, test_service_ts_get_params_srv_type) { const rosidl_service_type_support_t * ts = rclcpp::type_support::get_get_parameters_srv_type_support(); - EXPECT_NE(nullptr, ts); + ASSERT_NE(nullptr, ts); EXPECT_TRUE(test_type_support_init_fini(ts)); } TEST_F(TestTypeSupport, test_service_ts_get_parameters_types_srv) { const rosidl_service_type_support_t * ts = rclcpp::type_support::get_get_parameter_types_srv_type_support(); - EXPECT_NE(nullptr, ts); + ASSERT_NE(nullptr, ts); EXPECT_TRUE(test_type_support_init_fini(ts)); } TEST_F(TestTypeSupport, test_service_ts_set_params_srv) { const rosidl_service_type_support_t * ts = rclcpp::type_support::get_set_parameters_srv_type_support(); - EXPECT_NE(nullptr, ts); + ASSERT_NE(nullptr, ts); EXPECT_TRUE(test_type_support_init_fini(ts)); } TEST_F(TestTypeSupport, test_service_ts_list_params_srv) { const rosidl_service_type_support_t * ts = rclcpp::type_support::get_list_parameters_srv_type_support(); - EXPECT_NE(nullptr, ts); + ASSERT_NE(nullptr, ts); EXPECT_TRUE(test_type_support_init_fini(ts)); } TEST_F(TestTypeSupport, test_service_ts_describe_params_srv) { const rosidl_service_type_support_t * ts = rclcpp::type_support::get_describe_parameters_srv_type_support(); - EXPECT_NE(nullptr, ts); + ASSERT_NE(nullptr, ts); EXPECT_TRUE(test_type_support_init_fini(ts)); } TEST_F(TestTypeSupport, test_service_ts_set_params_atomically_srv) { const rosidl_service_type_support_t * ts = rclcpp::type_support::get_set_parameters_atomically_srv_type_support(); - EXPECT_NE(nullptr, ts); + ASSERT_NE(nullptr, ts); EXPECT_TRUE(test_type_support_init_fini(ts)); } From 2c9b77e610d77faeb3d47902f973ff647c4911be Mon Sep 17 00:00:00 2001 From: Jorge Perez Date: Mon, 14 Sep 2020 13:00:42 -0300 Subject: [PATCH 13/16] "Improve error msg for rcl_service_ini/fini fail" Signed-off-by: Jorge Perez --- rclcpp/test/rclcpp/test_type_support.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/rclcpp/test/rclcpp/test_type_support.cpp b/rclcpp/test/rclcpp/test_type_support.cpp index 41c6d745e5..bd962e615e 100644 --- a/rclcpp/test/rclcpp/test_type_support.cpp +++ b/rclcpp/test/rclcpp/test_type_support.cpp @@ -44,14 +44,16 @@ class TestTypeSupport : public ::testing::Test node->get_node_base_interface()->get_rcl_node_handle(), ts, "base_node_service", &service_options); if (ret != RCL_RET_OK) { - return ::testing::AssertionFailure() << "Failed ts init"; + return ::testing::AssertionFailure() + << "Failed rcl_service_init with error string: " << rcl_get_error_string().str; } EXPECT_EQ( RCL_RET_OK, rcl_service_fini( &service_handle, node->get_node_base_interface()->get_rcl_node_handle())); if (ret != RCL_RET_OK) { - return ::testing::AssertionFailure() << "Failed ts fini"; + return ::testing::AssertionFailure() + << "Failed rcl_service_fini with error string: " << rcl_get_error_string().str; } return ::testing::AssertionSuccess(); } From 82d7ae702fc293481999012f82fa94b634969504 Mon Sep 17 00:00:00 2001 From: Jorge Perez Date: Mon, 14 Sep 2020 13:04:21 -0300 Subject: [PATCH 14/16] Improve test readability Signed-off-by: Jorge Perez --- rclcpp/test/rclcpp/test_type_support.cpp | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/rclcpp/test/rclcpp/test_type_support.cpp b/rclcpp/test/rclcpp/test_type_support.cpp index bd962e615e..8e30b98a38 100644 --- a/rclcpp/test/rclcpp/test_type_support.cpp +++ b/rclcpp/test/rclcpp/test_type_support.cpp @@ -39,18 +39,14 @@ class TestTypeSupport : public ::testing::Test { rcl_service_t service_handle = rcl_get_zero_initialized_service(); rcl_service_options_t service_options = rcl_service_get_default_options(); + auto node_handle = node->get_node_base_interface()->get_rcl_node_handle(); rcl_ret_t ret = rcl_service_init( - &service_handle, - node->get_node_base_interface()->get_rcl_node_handle(), - ts, "base_node_service", &service_options); + &service_handle, node_handle, ts, "base_node_service", &service_options); if (ret != RCL_RET_OK) { return ::testing::AssertionFailure() << "Failed rcl_service_init with error string: " << rcl_get_error_string().str; } - EXPECT_EQ( - RCL_RET_OK, rcl_service_fini( - &service_handle, - node->get_node_base_interface()->get_rcl_node_handle())); + ret = rcl_service_fini(&service_handle, node_handle); if (ret != RCL_RET_OK) { return ::testing::AssertionFailure() << "Failed rcl_service_fini with error string: " << rcl_get_error_string().str; From e8af00e1cb0a20e9eee8bef69d2e4be9474c9a3a Mon Sep 17 00:00:00 2001 From: Jorge Perez Date: Mon, 14 Sep 2020 13:16:04 -0300 Subject: [PATCH 15/16] Fix linters Signed-off-by: Jorge Perez --- rclcpp/test/rclcpp/test_type_support.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/rclcpp/test/rclcpp/test_type_support.cpp b/rclcpp/test/rclcpp/test_type_support.cpp index 8e30b98a38..776cbf327f 100644 --- a/rclcpp/test/rclcpp/test_type_support.cpp +++ b/rclcpp/test/rclcpp/test_type_support.cpp @@ -43,13 +43,13 @@ class TestTypeSupport : public ::testing::Test rcl_ret_t ret = rcl_service_init( &service_handle, node_handle, ts, "base_node_service", &service_options); if (ret != RCL_RET_OK) { - return ::testing::AssertionFailure() - << "Failed rcl_service_init with error string: " << rcl_get_error_string().str; + return ::testing::AssertionFailure() << + "Failed rcl_service_init with error string: " << rcl_get_error_string().str; } ret = rcl_service_fini(&service_handle, node_handle); if (ret != RCL_RET_OK) { - return ::testing::AssertionFailure() - << "Failed rcl_service_fini with error string: " << rcl_get_error_string().str; + return ::testing::AssertionFailure() << + "Failed rcl_service_fini with error string: " << rcl_get_error_string().str; } return ::testing::AssertionSuccess(); } From 7add35f680eaaa2299633eea22b6397fd2918775 Mon Sep 17 00:00:00 2001 From: Jorge Perez Date: Mon, 14 Sep 2020 15:01:01 -0300 Subject: [PATCH 16/16] Fix uncrustify Signed-off-by: Jorge Perez --- rclcpp/test/rclcpp/test_type_support.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rclcpp/test/rclcpp/test_type_support.cpp b/rclcpp/test/rclcpp/test_type_support.cpp index 776cbf327f..1732031029 100644 --- a/rclcpp/test/rclcpp/test_type_support.cpp +++ b/rclcpp/test/rclcpp/test_type_support.cpp @@ -44,12 +44,12 @@ class TestTypeSupport : public ::testing::Test &service_handle, node_handle, ts, "base_node_service", &service_options); if (ret != RCL_RET_OK) { return ::testing::AssertionFailure() << - "Failed rcl_service_init with error string: " << rcl_get_error_string().str; + "Failed rcl_service_init with error string: " << rcl_get_error_string().str; } ret = rcl_service_fini(&service_handle, node_handle); if (ret != RCL_RET_OK) { return ::testing::AssertionFailure() << - "Failed rcl_service_fini with error string: " << rcl_get_error_string().str; + "Failed rcl_service_fini with error string: " << rcl_get_error_string().str; } return ::testing::AssertionSuccess(); }