Skip to content

Commit 2431ed6

Browse files
eboassonivanpauno
authored andcommitted
Allow get_node_names to return result in any order (ros2#488)
Signed-off-by: Erik Boasson <eb@ilities.com>
1 parent 8a4c004 commit 2431ed6

File tree

1 file changed

+16
-11
lines changed

1 file changed

+16
-11
lines changed

rcl/test/rcl/test_get_node_names.cpp

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,9 @@
1818
#include <iostream>
1919
#include <sstream>
2020
#include <thread>
21+
#include <string>
22+
#include <set>
23+
#include <utility>
2124

2225
#include "rcutils/types.h"
2326

@@ -62,13 +65,16 @@ TEST_F(CLASSNAME(TestGetNodeNames, RMW_IMPLEMENTATION), test_rcl_get_node_names)
6265
EXPECT_EQ(RCL_RET_OK, rcl_shutdown(&context)) << rcl_get_error_string().str;
6366
EXPECT_EQ(RCL_RET_OK, rcl_context_fini(&context)) << rcl_get_error_string().str;
6467
});
68+
std::set<std::pair<std::string, std::string>> expected_nodes, discovered_nodes;
69+
6570
auto node1_ptr = new rcl_node_t;
6671
*node1_ptr = rcl_get_zero_initialized_node();
6772
const char * node1_name = "node1";
6873
const char * node1_namespace = "/";
6974
rcl_node_options_t node1_options = rcl_node_get_default_options();
7075
ret = rcl_node_init(node1_ptr, node1_name, node1_namespace, &context, &node1_options);
7176
ASSERT_EQ(RCL_RET_OK, ret) << rcl_get_error_string().str;
77+
expected_nodes.insert(std::make_pair(std::string(node1_name), std::string(node1_namespace)));
7278

7379
auto node2_ptr = new rcl_node_t;
7480
*node2_ptr = rcl_get_zero_initialized_node();
@@ -77,6 +83,7 @@ TEST_F(CLASSNAME(TestGetNodeNames, RMW_IMPLEMENTATION), test_rcl_get_node_names)
7783
rcl_node_options_t node2_options = rcl_node_get_default_options();
7884
ret = rcl_node_init(node2_ptr, node2_name, node2_namespace, &context, &node2_options);
7985
ASSERT_EQ(RCL_RET_OK, ret) << rcl_get_error_string().str;
86+
expected_nodes.insert(std::make_pair(std::string(node2_name), std::string(node2_namespace)));
8087

8188
auto node3_ptr = new rcl_node_t;
8289
*node3_ptr = rcl_get_zero_initialized_node();
@@ -85,6 +92,7 @@ TEST_F(CLASSNAME(TestGetNodeNames, RMW_IMPLEMENTATION), test_rcl_get_node_names)
8592
rcl_node_options_t node3_options = rcl_node_get_default_options();
8693
ret = rcl_node_init(node3_ptr, node3_name, node3_namespace, &context, &node3_options);
8794
ASSERT_EQ(RCL_RET_OK, ret) << rcl_get_error_string().str;
95+
expected_nodes.insert(std::make_pair(std::string(node3_name), std::string(node3_namespace)));
8896

8997
auto node4_ptr = new rcl_node_t;
9098
*node4_ptr = rcl_get_zero_initialized_node();
@@ -93,6 +101,7 @@ TEST_F(CLASSNAME(TestGetNodeNames, RMW_IMPLEMENTATION), test_rcl_get_node_names)
93101
rcl_node_options_t node4_options = rcl_node_get_default_options();
94102
ret = rcl_node_init(node4_ptr, node4_name, node4_namespace, &context, &node4_options);
95103
ASSERT_EQ(RCL_RET_OK, ret) << rcl_get_error_string().str;
104+
expected_nodes.insert(std::make_pair(std::string(node4_name), std::string(node4_namespace)));
96105

97106
std::this_thread::sleep_for(1s);
98107

@@ -106,17 +115,13 @@ TEST_F(CLASSNAME(TestGetNodeNames, RMW_IMPLEMENTATION), test_rcl_get_node_names)
106115
for (size_t i = 0; i < node_names.size; ++i) {
107116
ss << node_names.data[i] << std::endl;
108117
}
109-
EXPECT_EQ(size_t(4), node_names.size) << ss.str();
110-
EXPECT_STREQ(node1_name, node_names.data[0]);
111-
EXPECT_STREQ(node2_name, node_names.data[1]);
112-
EXPECT_STREQ(node3_name, node_names.data[2]);
113-
EXPECT_STREQ(node4_name, node_names.data[3]);
114-
115-
EXPECT_EQ(size_t(4), node_namespaces.size) << ss.str();
116-
EXPECT_STREQ(node1_namespace, node_namespaces.data[0]);
117-
EXPECT_STREQ(node2_namespace, node_namespaces.data[1]);
118-
EXPECT_STREQ(node3_namespace, node_namespaces.data[2]);
119-
EXPECT_STREQ(node4_namespace, node_namespaces.data[3]);
118+
EXPECT_EQ(node_names.size, node_namespaces.size) << ss.str();
119+
120+
for (size_t i = 0; i < node_names.size; ++i) {
121+
discovered_nodes.insert(std::make_pair(std::string(node_names.data[i]),
122+
std::string(node_namespaces.data[i])));
123+
}
124+
EXPECT_EQ(discovered_nodes, expected_nodes);
120125

121126
ret = rcutils_string_array_fini(&node_names);
122127
ASSERT_EQ(RCUTILS_RET_OK, ret);

0 commit comments

Comments
 (0)