diff --git a/common/autoware_component_interface_tools/CMakeLists.txt b/common/autoware_component_interface_tools/CMakeLists.txt index ce4af924f4c28..f1199b93174fd 100644 --- a/common/autoware_component_interface_tools/CMakeLists.txt +++ b/common/autoware_component_interface_tools/CMakeLists.txt @@ -13,4 +13,14 @@ rclcpp_components_register_node(${PROJECT_NAME} EXECUTABLE service_log_checker_node ) +if(BUILD_TESTING) + ament_add_ros_isolated_gtest(test_${PROJECT_NAME} + test/test_autoware_component_interface_tools.cpp + ) + target_link_libraries(test_${PROJECT_NAME} + ${PROJECT_NAME} + ) + target_include_directories(test_${PROJECT_NAME} PRIVATE src) +endif() + ament_auto_package(INSTALL_TO_SHARE launch) diff --git a/common/autoware_component_interface_tools/package.xml b/common/autoware_component_interface_tools/package.xml index 20919e15acd13..0ae88b2d86b1c 100644 --- a/common/autoware_component_interface_tools/package.xml +++ b/common/autoware_component_interface_tools/package.xml @@ -8,6 +8,7 @@ Apache License 2.0 ament_cmake_auto + ament_cmake_test autoware_cmake diagnostic_updater @@ -17,8 +18,14 @@ tier4_system_msgs yaml_cpp_vendor + ament_cmake_ros + ament_index_python ament_lint_auto autoware_lint_common + diagnostic_updater + rclcpp + tier4_system_msgs + yaml_cpp_vendor ament_cmake diff --git a/common/autoware_component_interface_tools/test/test_autoware_component_interface_tools.cpp b/common/autoware_component_interface_tools/test/test_autoware_component_interface_tools.cpp new file mode 100644 index 0000000000000..631c8b4cc7083 --- /dev/null +++ b/common/autoware_component_interface_tools/test/test_autoware_component_interface_tools.cpp @@ -0,0 +1,63 @@ +// Copyright 2023 The Autoware Contributors +// +// 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 "service_log_checker.hpp" + +#include + +#include + +#include +#include + +using ServiceLog = tier4_system_msgs::msg::ServiceLog; +using DiagnosticArray = diagnostic_msgs::msg::DiagnosticArray; +using ServiceLogChecker = autoware::component_interface_tools::ServiceLogChecker; + +TEST(ServiceCheckerTest, ServiceChecker) +{ + class PubManager : public rclcpp::Node + { + public: + PubManager() : Node("test_pub_node") + { + pub_odom_ = create_publisher("service_log", 1); + sub_odom_ = create_subscription( + "/diagnostics", 1, std::bind(&PubManager::on_service_log, this, std::placeholders::_1)); + } + rclcpp::Publisher::SharedPtr pub_odom_; + rclcpp::Subscription::SharedPtr sub_odom_; + bool flag = false; + void on_service_log(const DiagnosticArray::ConstSharedPtr msg) + { + if (msg->status.size() > 0) { + auto diag_array = msg->status[0].message.c_str(); + EXPECT_EQ(diag_array, "ERROR"); + flag = true; + } + } + }; + + rclcpp::init(0, nullptr); + auto node_options = rclcpp::NodeOptions{}; + auto test_target_node = std::make_shared(node_options); + auto test_log = std::make_shared(); + ServiceLog log; + log.type = 6; + log.name = "test"; + log.node = "test_node"; + test_log->pub_odom_->publish(log); + + while (!test_log->flag) { + } +}