Skip to content

Commit e7f0639

Browse files
authored
add logger level service to lifecycle node. (#2277)
Signed-off-by: Tomoya Fujita <Tomoya.Fujita@sony.com>
1 parent ba17592 commit e7f0639

2 files changed

Lines changed: 37 additions & 0 deletions

File tree

rclcpp_lifecycle/src/lifecycle_node.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,10 @@ LifecycleNode::LifecycleNode(
144144
&LifecycleNodeInterface::on_deactivate, this,
145145
std::placeholders::_1));
146146
register_on_error(std::bind(&LifecycleNodeInterface::on_error, this, std::placeholders::_1));
147+
148+
if (options.enable_logger_service()) {
149+
node_logging_->create_logger_services(node_services_);
150+
}
147151
}
148152

149153
LifecycleNode::~LifecycleNode()

rclcpp_lifecycle/test/test_lifecycle_node.cpp

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@
2525
#include "lifecycle_msgs/msg/transition.hpp"
2626

2727
#include "rcl_lifecycle/rcl_lifecycle.h"
28+
#include "rcl_interfaces/srv/get_logger_levels.hpp"
29+
#include "rcl_interfaces/srv/set_logger_levels.hpp"
2830

2931
#include "rclcpp/rclcpp.hpp"
3032
#include "rclcpp_lifecycle/lifecycle_node.hpp"
@@ -34,6 +36,8 @@
3436
using lifecycle_msgs::msg::State;
3537
using lifecycle_msgs::msg::Transition;
3638

39+
using namespace std::chrono_literals;
40+
3741
static const std::chrono::nanoseconds DEFAULT_EVENT_TIMEOUT = std::chrono::seconds(3);
3842
static const std::chrono::nanoseconds DEFAULT_EVENT_SLEEP_PERIOD = std::chrono::milliseconds(100);
3943

@@ -249,6 +253,35 @@ TEST_F(TestDefaultStateMachine, empty_initializer_rcl_errors) {
249253
}
250254
}
251255

256+
TEST_F(TestDefaultStateMachine, check_logger_services_exist) {
257+
// Logger level services are disabled
258+
{
259+
rclcpp::NodeOptions options = rclcpp::NodeOptions();
260+
options.enable_logger_service(false);
261+
auto node = std::make_shared<rclcpp_lifecycle::LifecycleNode>(
262+
"test_logger_service", "/test", options);
263+
auto get_client = node->create_client<rcl_interfaces::srv::GetLoggerLevels>(
264+
"/test/test_logger_service/get_logger_levels");
265+
ASSERT_FALSE(get_client->wait_for_service(2s));
266+
auto set_client = node->create_client<rcl_interfaces::srv::SetLoggerLevels>(
267+
"/test/test_logger_service/set_logger_levels");
268+
ASSERT_FALSE(set_client->wait_for_service(2s));
269+
}
270+
// Logger level services are enabled
271+
{
272+
rclcpp::NodeOptions options = rclcpp::NodeOptions();
273+
options.enable_logger_service(true);
274+
auto node = std::make_shared<rclcpp_lifecycle::LifecycleNode>(
275+
"test_logger_service", "/test", options);
276+
auto get_client = node->create_client<rcl_interfaces::srv::GetLoggerLevels>(
277+
"/test/test_logger_service/get_logger_levels");
278+
ASSERT_TRUE(get_client->wait_for_service(2s));
279+
auto set_client = node->create_client<rcl_interfaces::srv::SetLoggerLevels>(
280+
"/test/test_logger_service/set_logger_levels");
281+
ASSERT_TRUE(set_client->wait_for_service(2s));
282+
}
283+
}
284+
252285
TEST_F(TestDefaultStateMachine, trigger_transition) {
253286
auto test_node = std::make_shared<EmptyLifecycleNode>("testnode");
254287

0 commit comments

Comments
 (0)