|
18 | 18 |
|
19 | 19 | import rclpy |
20 | 20 | import rclpy.action |
| 21 | +from rclpy.endpoint_info import EndpointTypeEnum |
21 | 22 |
|
22 | 23 | from ros2cli.node.daemon import DaemonNode |
23 | 24 | from ros2cli.node.daemon import is_daemon_running |
|
45 | 46 | history=rclpy.qos.HistoryPolicy.KEEP_LAST, |
46 | 47 | depth=8 |
47 | 48 | ) |
| 49 | +TEST_SERVICE_CLIENT_QOS = TEST_TOPIC_PUBLISHER_QOS |
| 50 | +TEST_SERVICE_SERVER_QOS = TEST_TOPIC_SUBSCRIPTION_QOS |
48 | 51 | TEST_SERVICE_NAME = '/test/service' |
49 | 52 | TEST_SERVICE_TYPE = 'test_msgs/srv/Empty' |
50 | 53 | TEST_ACTION_NAME = '/test/action' |
@@ -73,12 +76,14 @@ def local_node(): |
73 | 76 | service = node.create_service( |
74 | 77 | srv_type=test_msgs.srv.Empty, |
75 | 78 | srv_name=TEST_SERVICE_NAME, |
76 | | - callback=(lambda req, res: res) |
| 79 | + callback=(lambda req, res: res), |
| 80 | + qos_profile=TEST_SERVICE_SERVER_QOS |
77 | 81 | ) |
78 | 82 | service # to avoid "assigned by never used" warning |
79 | 83 | client = node.create_client( |
80 | 84 | srv_type=test_msgs.srv.Empty, |
81 | | - srv_name=TEST_SERVICE_NAME |
| 85 | + srv_name=TEST_SERVICE_NAME, |
| 86 | + qos_profile=TEST_SERVICE_CLIENT_QOS |
82 | 87 | ) |
83 | 88 | client # to avoid "assigned by never used" warning |
84 | 89 |
|
@@ -235,6 +240,42 @@ def test_get_subscriptions_info_by_topic(daemon_node): |
235 | 240 | TEST_TOPIC_SUBSCRIPTION_QOS.depth |
236 | 241 |
|
237 | 242 |
|
| 243 | +def test_get_clients_info_by_service(daemon_node): |
| 244 | + clients_info = daemon_node.get_clients_info_by_service(TEST_SERVICE_NAME) |
| 245 | + assert len(clients_info) == 1 |
| 246 | + test_client_info = clients_info[0] |
| 247 | + assert test_client_info.node_name == TEST_NODE_NAME |
| 248 | + assert test_client_info.node_namespace == TEST_NODE_NAMESPACE |
| 249 | + assert test_client_info.service_type == TEST_SERVICE_TYPE |
| 250 | + assert test_client_info.endpoint_type == EndpointTypeEnum.CLIENT |
| 251 | + assert (test_client_info.endpoint_count == 1 or test_client_info.endpoint_count == 2) |
| 252 | + assert len(test_client_info.qos_profiles) == test_client_info.endpoint_count |
| 253 | + assert len(test_client_info.endpoint_gids) == test_client_info.endpoint_count |
| 254 | + for i in range(test_client_info.endpoint_count): |
| 255 | + assert test_client_info.qos_profiles[i].durability == \ |
| 256 | + TEST_SERVICE_CLIENT_QOS.durability |
| 257 | + assert test_client_info.qos_profiles[i].reliability == \ |
| 258 | + TEST_SERVICE_CLIENT_QOS.reliability |
| 259 | + |
| 260 | + |
| 261 | +def test_get_servers_info_by_service(daemon_node): |
| 262 | + servers_info = daemon_node.get_servers_info_by_service(TEST_SERVICE_NAME) |
| 263 | + assert len(servers_info) == 1 |
| 264 | + test_server_info = servers_info[0] |
| 265 | + assert test_server_info.node_name == TEST_NODE_NAME |
| 266 | + assert test_server_info.node_namespace == TEST_NODE_NAMESPACE |
| 267 | + assert test_server_info.service_type == TEST_SERVICE_TYPE |
| 268 | + assert test_server_info.endpoint_type == EndpointTypeEnum.SERVER |
| 269 | + assert (test_server_info.endpoint_count == 1 or test_server_info.endpoint_count == 2) |
| 270 | + assert len(test_server_info.qos_profiles) == test_server_info.endpoint_count |
| 271 | + assert len(test_server_info.endpoint_gids) == test_server_info.endpoint_count |
| 272 | + for i in range(test_server_info.endpoint_count): |
| 273 | + assert test_server_info.qos_profiles[i].durability == \ |
| 274 | + TEST_SERVICE_SERVER_QOS.durability |
| 275 | + assert test_server_info.qos_profiles[i].reliability == \ |
| 276 | + TEST_SERVICE_SERVER_QOS.reliability |
| 277 | + |
| 278 | + |
238 | 279 | def test_count_publishers(daemon_node): |
239 | 280 | assert 1 == daemon_node.count_publishers(TEST_TOPIC_NAME) |
240 | 281 |
|
|
0 commit comments