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) {
+ }
+}