|
18 | 18 | */
|
19 | 19 |
|
20 | 20 | #include <gtest/gtest.h>
|
| 21 | +#include <algorithm> |
| 22 | +#include <array> |
21 | 23 | #include <chrono>
|
22 | 24 | #include <memory>
|
23 | 25 | #include <mutex>
|
24 | 26 | #include <string>
|
25 | 27 | #include <thread>
|
| 28 | +#include <utility> |
26 | 29 | #include <vector>
|
27 | 30 |
|
28 | 31 | #include "lifecycle_msgs/msg/state.hpp"
|
@@ -368,26 +371,34 @@ TEST_F(TestLifecycleServiceClient, lifecycle_transitions) {
|
368 | 371 |
|
369 | 372 | TEST_F(TestLifecycleServiceClient, get_service_names_and_types_by_node)
|
370 | 373 | {
|
371 |
| - auto node1 = std::make_shared<LifecycleServiceClient>("client1"); |
372 |
| - auto node2 = std::make_shared<LifecycleServiceClient>("client2"); |
373 |
| - |
374 |
| - auto node_graph = node1->get_node_graph_interface(); |
375 |
| - ASSERT_NE(nullptr, node_graph); |
376 |
| - |
377 | 374 | EXPECT_THROW(
|
378 |
| - node_graph->get_service_names_and_types_by_node("not_a_node", "not_absolute_namespace"), |
| 375 | + lifecycle_node()->get_service_names_and_types_by_node("not_a_node", "not_absolute_namespace"), |
379 | 376 | std::runtime_error);
|
380 |
| - auto service_names_and_types1 = node_graph->get_service_names_and_types_by_node("client1", "/"); |
381 |
| - auto service_names_and_types2 = node_graph->get_service_names_and_types_by_node("client2", "/"); |
| 377 | + auto service_names_and_types = |
| 378 | + lifecycle_node()->get_service_names_and_types_by_node(lifecycle_node_name, "/"); |
382 | 379 | auto start = std::chrono::steady_clock::now();
|
383 |
| - while (0 == service_names_and_types1.size() || |
384 |
| - service_names_and_types1.size() != service_names_and_types2.size() || |
| 380 | + while (0 == service_names_and_types.size() || |
385 | 381 | (std::chrono::steady_clock::now() - start) < std::chrono::seconds(1))
|
386 | 382 | {
|
387 |
| - service_names_and_types1 = node_graph->get_service_names_and_types_by_node("client1", "/"); |
388 |
| - service_names_and_types2 = node_graph->get_service_names_and_types_by_node("client2", "/"); |
| 383 | + service_names_and_types = |
| 384 | + lifecycle_node()->get_service_names_and_types_by_node(lifecycle_node_name, "/"); |
| 385 | + } |
| 386 | + const std::array services = { |
| 387 | + std::make_pair(node_get_state_topic, "lifecycle_msgs/srv/GetState"), |
| 388 | + std::make_pair(node_change_state_topic, "lifecycle_msgs/srv/ChangeState"), |
| 389 | + std::make_pair(node_get_available_states_topic, "lifecycle_msgs/srv/GetAvailableStates"), |
| 390 | + std::make_pair( |
| 391 | + node_get_available_transitions_topic, "lifecycle_msgs/srv/GetAvailableTransitions"), |
| 392 | + std::make_pair(node_get_transition_graph_topic, "lifecycle_msgs/srv/GetAvailableTransitions"), |
| 393 | + }; |
| 394 | + for (const auto & [service_name, service_type] : services) { |
| 395 | + ASSERT_TRUE(service_names_and_types.find(service_name) != service_names_and_types.end()) |
| 396 | + << service_name; |
| 397 | + const auto service_types = service_names_and_types.at(service_name); |
| 398 | + EXPECT_TRUE( |
| 399 | + std::find(service_types.cbegin(), service_types.cend(), service_type) != service_types.cend()) |
| 400 | + << service_name; |
389 | 401 | }
|
390 |
| - EXPECT_EQ(service_names_and_types1.size(), service_names_and_types2.size()); |
391 | 402 | }
|
392 | 403 |
|
393 | 404 | TEST_F(TestLifecycleServiceClient, declare_parameter_with_no_initial_values)
|
|
0 commit comments