Add node name and namespace validation to graph functions (#499)
Signed-off-by: ivanpauno <ivanpauno@ekumenlabs.com>
This commit is contained in:
parent
0ddc17a042
commit
17598ff6e6
3 changed files with 93 additions and 22 deletions
|
@ -75,6 +75,8 @@ typedef rmw_names_and_types_t rcl_names_and_types_t;
|
||||||
* \return `RCL_RET_OK` if the query was successful, or
|
* \return `RCL_RET_OK` if the query was successful, or
|
||||||
* \return `RCL_RET_NODE_INVALID` if the node is invalid, or
|
* \return `RCL_RET_NODE_INVALID` if the node is invalid, or
|
||||||
* \return `RCL_RET_INVALID_ARGUMENT` if any arguments are invalid, or
|
* \return `RCL_RET_INVALID_ARGUMENT` if any arguments are invalid, or
|
||||||
|
* \return `RCL_RET_NODE_INVALID_NAME` if the node name is invalid, or
|
||||||
|
* \return `RCL_RET_NODE_INVALID_NAMESPACE` if the node namespace is invalid, or
|
||||||
* \return `RCL_RET_ERROR` if an unspecified error occurs.
|
* \return `RCL_RET_ERROR` if an unspecified error occurs.
|
||||||
*/
|
*/
|
||||||
RCL_PUBLIC
|
RCL_PUBLIC
|
||||||
|
@ -122,6 +124,8 @@ rcl_get_publisher_names_and_types_by_node(
|
||||||
* \return `RCL_RET_OK` if the query was successful, or
|
* \return `RCL_RET_OK` if the query was successful, or
|
||||||
* \return `RCL_RET_NODE_INVALID` if the node is invalid, or
|
* \return `RCL_RET_NODE_INVALID` if the node is invalid, or
|
||||||
* \return `RCL_RET_INVALID_ARGUMENT` if any arguments are invalid, or
|
* \return `RCL_RET_INVALID_ARGUMENT` if any arguments are invalid, or
|
||||||
|
* \return `RCL_RET_NODE_INVALID_NAME` if the node name is invalid, or
|
||||||
|
* \return `RCL_RET_NODE_INVALID_NAMESPACE` if the node namespace is invalid, or
|
||||||
* \return `RCL_RET_ERROR` if an unspecified error occurs.
|
* \return `RCL_RET_ERROR` if an unspecified error occurs.
|
||||||
*/
|
*/
|
||||||
RCL_PUBLIC
|
RCL_PUBLIC
|
||||||
|
@ -168,6 +172,8 @@ rcl_get_subscriber_names_and_types_by_node(
|
||||||
* \return `RCL_RET_OK` if the query was successful, or
|
* \return `RCL_RET_OK` if the query was successful, or
|
||||||
* \return `RCL_RET_NODE_INVALID` if the node is invalid, or
|
* \return `RCL_RET_NODE_INVALID` if the node is invalid, or
|
||||||
* \return `RCL_RET_INVALID_ARGUMENT` if any arguments are invalid, or
|
* \return `RCL_RET_INVALID_ARGUMENT` if any arguments are invalid, or
|
||||||
|
* \return `RCL_RET_NODE_INVALID_NAME` if the node name is invalid, or
|
||||||
|
* \return `RCL_RET_NODE_INVALID_NAMESPACE` if the node namespace is invalid, or
|
||||||
* \return `RCL_RET_ERROR` if an unspecified error occurs.
|
* \return `RCL_RET_ERROR` if an unspecified error occurs.
|
||||||
*/
|
*/
|
||||||
RCL_PUBLIC
|
RCL_PUBLIC
|
||||||
|
@ -213,6 +219,8 @@ rcl_get_service_names_and_types_by_node(
|
||||||
* \return `RCL_RET_OK` if the query was successful, or
|
* \return `RCL_RET_OK` if the query was successful, or
|
||||||
* \return `RCL_RET_NODE_INVALID` if the node is invalid, or
|
* \return `RCL_RET_NODE_INVALID` if the node is invalid, or
|
||||||
* \return `RCL_RET_INVALID_ARGUMENT` if any arguments are invalid, or
|
* \return `RCL_RET_INVALID_ARGUMENT` if any arguments are invalid, or
|
||||||
|
* \return `RCL_RET_NODE_INVALID_NAME` if the node name is invalid, or
|
||||||
|
* \return `RCL_RET_NODE_INVALID_NAMESPACE` if the node namespace is invalid, or
|
||||||
* \return `RCL_RET_ERROR` if an unspecified error occurs.
|
* \return `RCL_RET_ERROR` if an unspecified error occurs.
|
||||||
*/
|
*/
|
||||||
RCL_PUBLIC
|
RCL_PUBLIC
|
||||||
|
@ -257,6 +265,8 @@ rcl_get_client_names_and_types_by_node(
|
||||||
* \return `RCL_RET_OK` if the query was successful, or
|
* \return `RCL_RET_OK` if the query was successful, or
|
||||||
* \return `RCL_RET_NODE_INVALID` if the node is invalid, or
|
* \return `RCL_RET_NODE_INVALID` if the node is invalid, or
|
||||||
* \return `RCL_RET_INVALID_ARGUMENT` if any arguments are invalid, or
|
* \return `RCL_RET_INVALID_ARGUMENT` if any arguments are invalid, or
|
||||||
|
* \return `RCL_RET_NODE_INVALID_NAME` if the node name is invalid, or
|
||||||
|
* \return `RCL_RET_NODE_INVALID_NAMESPACE` if the node namespace is invalid, or
|
||||||
* \return `RCL_RET_ERROR` if an unspecified error occurs.
|
* \return `RCL_RET_ERROR` if an unspecified error occurs.
|
||||||
*/
|
*/
|
||||||
RCL_PUBLIC
|
RCL_PUBLIC
|
||||||
|
|
|
@ -22,14 +22,50 @@ extern "C"
|
||||||
#include "rcl/error_handling.h"
|
#include "rcl/error_handling.h"
|
||||||
#include "rcutils/allocator.h"
|
#include "rcutils/allocator.h"
|
||||||
#include "rcutils/types.h"
|
#include "rcutils/types.h"
|
||||||
|
#include "rmw/error_handling.h"
|
||||||
#include "rmw/get_node_info_and_types.h"
|
#include "rmw/get_node_info_and_types.h"
|
||||||
#include "rmw/get_service_names_and_types.h"
|
#include "rmw/get_service_names_and_types.h"
|
||||||
#include "rmw/get_topic_names_and_types.h"
|
#include "rmw/get_topic_names_and_types.h"
|
||||||
#include "rmw/names_and_types.h"
|
#include "rmw/names_and_types.h"
|
||||||
#include "rmw/rmw.h"
|
#include "rmw/rmw.h"
|
||||||
|
#include "rmw/validate_namespace.h"
|
||||||
|
#include "rmw/validate_node_name.h"
|
||||||
|
|
||||||
#include "./common.h"
|
#include "./common.h"
|
||||||
|
|
||||||
|
rcl_ret_t
|
||||||
|
__validate_node_name_and_namespace(
|
||||||
|
const char * node_name,
|
||||||
|
const char * node_namespace)
|
||||||
|
{
|
||||||
|
int validation_result = 0;
|
||||||
|
rmw_ret_t rmw_ret = rmw_validate_namespace(node_namespace, &validation_result, NULL);
|
||||||
|
|
||||||
|
if (RMW_RET_OK != rmw_ret) {
|
||||||
|
RCL_SET_ERROR_MSG(rmw_get_error_string().str);
|
||||||
|
return rcl_convert_rmw_ret_to_rcl_ret(rmw_ret);
|
||||||
|
}
|
||||||
|
if (validation_result != RMW_NAMESPACE_VALID) {
|
||||||
|
const char * msg = rmw_namespace_validation_result_string(validation_result);
|
||||||
|
RCL_SET_ERROR_MSG_WITH_FORMAT_STRING("%s, result: %d", msg, validation_result);
|
||||||
|
return RCL_RET_NODE_INVALID_NAMESPACE;
|
||||||
|
}
|
||||||
|
|
||||||
|
validation_result = 0;
|
||||||
|
rmw_ret = rmw_validate_node_name(node_name, &validation_result, NULL);
|
||||||
|
if (RMW_RET_OK != rmw_ret) {
|
||||||
|
RCL_SET_ERROR_MSG(rmw_get_error_string().str);
|
||||||
|
return rcl_convert_rmw_ret_to_rcl_ret(rmw_ret);
|
||||||
|
}
|
||||||
|
if (RMW_NODE_NAME_VALID != validation_result) {
|
||||||
|
const char * msg = rmw_node_name_validation_result_string(validation_result);
|
||||||
|
RCL_SET_ERROR_MSG_WITH_FORMAT_STRING("%s, result: %d", msg, validation_result);
|
||||||
|
return RCL_RET_NODE_INVALID_NAME;
|
||||||
|
}
|
||||||
|
|
||||||
|
return RCL_RET_OK;
|
||||||
|
}
|
||||||
|
|
||||||
rcl_ret_t
|
rcl_ret_t
|
||||||
rcl_get_publisher_names_and_types_by_node(
|
rcl_get_publisher_names_and_types_by_node(
|
||||||
const rcl_node_t * node,
|
const rcl_node_t * node,
|
||||||
|
@ -51,11 +87,14 @@ rcl_get_publisher_names_and_types_by_node(
|
||||||
if (strlen(node_namespace) > 0) {
|
if (strlen(node_namespace) > 0) {
|
||||||
valid_namespace = node_namespace;
|
valid_namespace = node_namespace;
|
||||||
}
|
}
|
||||||
rmw_ret_t rmw_ret;
|
rmw_ret_t rmw_ret = rmw_names_and_types_check_zero(topic_names_and_types);
|
||||||
rmw_ret = rmw_names_and_types_check_zero(topic_names_and_types);
|
if (RMW_RET_OK != rmw_ret) {
|
||||||
if (rmw_ret != RMW_RET_OK) {
|
|
||||||
return rcl_convert_rmw_ret_to_rcl_ret(rmw_ret);
|
return rcl_convert_rmw_ret_to_rcl_ret(rmw_ret);
|
||||||
}
|
}
|
||||||
|
rcl_ret_t rcl_ret = __validate_node_name_and_namespace(node_name, valid_namespace);
|
||||||
|
if (RCL_RET_OK != rcl_ret) {
|
||||||
|
return rcl_ret;
|
||||||
|
}
|
||||||
rcutils_allocator_t rcutils_allocator = *allocator;
|
rcutils_allocator_t rcutils_allocator = *allocator;
|
||||||
rmw_ret = rmw_get_publisher_names_and_types_by_node(
|
rmw_ret = rmw_get_publisher_names_and_types_by_node(
|
||||||
rcl_node_get_rmw_handle(node),
|
rcl_node_get_rmw_handle(node),
|
||||||
|
@ -95,6 +134,10 @@ rcl_get_subscriber_names_and_types_by_node(
|
||||||
return rcl_convert_rmw_ret_to_rcl_ret(rmw_ret);
|
return rcl_convert_rmw_ret_to_rcl_ret(rmw_ret);
|
||||||
}
|
}
|
||||||
rcutils_allocator_t rcutils_allocator = *allocator;
|
rcutils_allocator_t rcutils_allocator = *allocator;
|
||||||
|
rcl_ret_t rcl_ret = __validate_node_name_and_namespace(node_name, valid_namespace);
|
||||||
|
if (RCL_RET_OK != rcl_ret) {
|
||||||
|
return rcl_ret;
|
||||||
|
}
|
||||||
rmw_ret = rmw_get_subscriber_names_and_types_by_node(
|
rmw_ret = rmw_get_subscriber_names_and_types_by_node(
|
||||||
rcl_node_get_rmw_handle(node),
|
rcl_node_get_rmw_handle(node),
|
||||||
&rcutils_allocator,
|
&rcutils_allocator,
|
||||||
|
@ -131,6 +174,10 @@ rcl_get_service_names_and_types_by_node(
|
||||||
if (rmw_ret != RMW_RET_OK) {
|
if (rmw_ret != RMW_RET_OK) {
|
||||||
return rcl_convert_rmw_ret_to_rcl_ret(rmw_ret);
|
return rcl_convert_rmw_ret_to_rcl_ret(rmw_ret);
|
||||||
}
|
}
|
||||||
|
rcl_ret_t rcl_ret = __validate_node_name_and_namespace(node_name, valid_namespace);
|
||||||
|
if (RCL_RET_OK != rcl_ret) {
|
||||||
|
return rcl_ret;
|
||||||
|
}
|
||||||
rcutils_allocator_t rcutils_allocator = *allocator;
|
rcutils_allocator_t rcutils_allocator = *allocator;
|
||||||
rmw_ret = rmw_get_service_names_and_types_by_node(
|
rmw_ret = rmw_get_service_names_and_types_by_node(
|
||||||
rcl_node_get_rmw_handle(node),
|
rcl_node_get_rmw_handle(node),
|
||||||
|
@ -167,6 +214,10 @@ rcl_get_client_names_and_types_by_node(
|
||||||
if (rmw_ret != RMW_RET_OK) {
|
if (rmw_ret != RMW_RET_OK) {
|
||||||
return rcl_convert_rmw_ret_to_rcl_ret(rmw_ret);
|
return rcl_convert_rmw_ret_to_rcl_ret(rmw_ret);
|
||||||
}
|
}
|
||||||
|
rcl_ret_t rcl_ret = __validate_node_name_and_namespace(node_name, valid_namespace);
|
||||||
|
if (RCL_RET_OK != rcl_ret) {
|
||||||
|
return rcl_ret;
|
||||||
|
}
|
||||||
rcutils_allocator_t rcutils_allocator = *allocator;
|
rcutils_allocator_t rcutils_allocator = *allocator;
|
||||||
rmw_ret = rmw_get_client_names_and_types_by_node(
|
rmw_ret = rmw_get_client_names_and_types_by_node(
|
||||||
rcl_node_get_rmw_handle(node),
|
rcl_node_get_rmw_handle(node),
|
||||||
|
|
|
@ -274,7 +274,7 @@ TEST_F(
|
||||||
rcl_allocator_t zero_allocator = static_cast<rcl_allocator_t>(
|
rcl_allocator_t zero_allocator = static_cast<rcl_allocator_t>(
|
||||||
rcutils_get_zero_initialized_allocator());
|
rcutils_get_zero_initialized_allocator());
|
||||||
rcl_node_t zero_node = rcl_get_zero_initialized_node();
|
rcl_node_t zero_node = rcl_get_zero_initialized_node();
|
||||||
const char * unknown_node_name = "/test_rcl_get_publisher_names_and_types_by_node";
|
const char * unknown_node_name = "test_rcl_get_publisher_names_and_types_by_node";
|
||||||
const char * unknown_node_ns = "/test/namespace";
|
const char * unknown_node_ns = "/test/namespace";
|
||||||
rcl_names_and_types_t nat = rcl_get_zero_initialized_names_and_types();
|
rcl_names_and_types_t nat = rcl_get_zero_initialized_names_and_types();
|
||||||
// invalid node
|
// invalid node
|
||||||
|
@ -311,15 +311,15 @@ TEST_F(
|
||||||
// test valid strings with invalid node names
|
// test valid strings with invalid node names
|
||||||
ret = rcl_get_publisher_names_and_types_by_node(
|
ret = rcl_get_publisher_names_and_types_by_node(
|
||||||
this->node_ptr, &allocator, false, "", "", &nat);
|
this->node_ptr, &allocator, false, "", "", &nat);
|
||||||
EXPECT_EQ(RCL_RET_ERROR, ret) << rcl_get_error_string().str;
|
EXPECT_EQ(RCL_RET_NODE_INVALID_NAME, ret) << rcl_get_error_string().str;
|
||||||
rcl_reset_error();
|
rcl_reset_error();
|
||||||
ret = rcl_get_publisher_names_and_types_by_node(
|
ret = rcl_get_publisher_names_and_types_by_node(
|
||||||
this->node_ptr, &allocator, false, "_InvalidNodeName", "", &nat);
|
this->node_ptr, &allocator, false, "_!InvalidNodeName", "", &nat);
|
||||||
EXPECT_EQ(RCL_RET_ERROR, ret) << rcl_get_error_string().str;
|
EXPECT_EQ(RCL_RET_NODE_INVALID_NAME, ret) << rcl_get_error_string().str;
|
||||||
rcl_reset_error();
|
rcl_reset_error();
|
||||||
ret = rcl_get_publisher_names_and_types_by_node(
|
ret = rcl_get_publisher_names_and_types_by_node(
|
||||||
this->node_ptr, &allocator, false, this->test_graph_node_name, "_!invalidNs", &nat);
|
this->node_ptr, &allocator, false, this->test_graph_node_name, "_!invalidNs", &nat);
|
||||||
EXPECT_EQ(RCL_RET_ERROR, ret) << rcl_get_error_string().str;
|
EXPECT_EQ(RCL_RET_NODE_INVALID_NAMESPACE, ret) << rcl_get_error_string().str;
|
||||||
rcl_reset_error();
|
rcl_reset_error();
|
||||||
// invalid names and types
|
// invalid names and types
|
||||||
ret = rcl_get_publisher_names_and_types_by_node(
|
ret = rcl_get_publisher_names_and_types_by_node(
|
||||||
|
@ -359,7 +359,7 @@ TEST_F(
|
||||||
rcl_allocator_t zero_allocator = static_cast<rcl_allocator_t>(
|
rcl_allocator_t zero_allocator = static_cast<rcl_allocator_t>(
|
||||||
rcutils_get_zero_initialized_allocator());
|
rcutils_get_zero_initialized_allocator());
|
||||||
rcl_node_t zero_node = rcl_get_zero_initialized_node();
|
rcl_node_t zero_node = rcl_get_zero_initialized_node();
|
||||||
const char * unknown_node_name = "/test_rcl_get_subscriber_names_and_types_by_node";
|
const char * unknown_node_name = "test_rcl_get_subscriber_names_and_types_by_node";
|
||||||
const char * unknown_node_ns = "/test/namespace";
|
const char * unknown_node_ns = "/test/namespace";
|
||||||
rcl_names_and_types_t nat = rcl_get_zero_initialized_names_and_types();
|
rcl_names_and_types_t nat = rcl_get_zero_initialized_names_and_types();
|
||||||
// invalid node
|
// invalid node
|
||||||
|
@ -396,15 +396,15 @@ TEST_F(
|
||||||
// test valid strings with invalid node names
|
// test valid strings with invalid node names
|
||||||
ret = rcl_get_subscriber_names_and_types_by_node(
|
ret = rcl_get_subscriber_names_and_types_by_node(
|
||||||
this->node_ptr, &allocator, false, "", "", &nat);
|
this->node_ptr, &allocator, false, "", "", &nat);
|
||||||
EXPECT_EQ(RCL_RET_ERROR, ret) << rcl_get_error_string().str;
|
EXPECT_EQ(RCL_RET_NODE_INVALID_NAME, ret) << rcl_get_error_string().str;
|
||||||
rcl_reset_error();
|
rcl_reset_error();
|
||||||
ret = rcl_get_subscriber_names_and_types_by_node(
|
ret = rcl_get_subscriber_names_and_types_by_node(
|
||||||
this->node_ptr, &allocator, false, "_InvalidNodeName", "", &nat);
|
this->node_ptr, &allocator, false, "_!InvalidNodeName", "", &nat);
|
||||||
EXPECT_EQ(RCL_RET_ERROR, ret) << rcl_get_error_string().str;
|
EXPECT_EQ(RCL_RET_NODE_INVALID_NAME, ret) << rcl_get_error_string().str;
|
||||||
rcl_reset_error();
|
rcl_reset_error();
|
||||||
ret = rcl_get_subscriber_names_and_types_by_node(
|
ret = rcl_get_subscriber_names_and_types_by_node(
|
||||||
this->node_ptr, &allocator, false, this->test_graph_node_name, "_!invalidNs", &nat);
|
this->node_ptr, &allocator, false, this->test_graph_node_name, "_!invalidNs", &nat);
|
||||||
EXPECT_EQ(RCL_RET_ERROR, ret) << rcl_get_error_string().str;
|
EXPECT_EQ(RCL_RET_NODE_INVALID_NAMESPACE, ret) << rcl_get_error_string().str;
|
||||||
rcl_reset_error();
|
rcl_reset_error();
|
||||||
// invalid names and types
|
// invalid names and types
|
||||||
ret = rcl_get_subscriber_names_and_types_by_node(
|
ret = rcl_get_subscriber_names_and_types_by_node(
|
||||||
|
@ -441,7 +441,7 @@ TEST_F(
|
||||||
rcl_allocator_t zero_allocator = static_cast<rcl_allocator_t>(
|
rcl_allocator_t zero_allocator = static_cast<rcl_allocator_t>(
|
||||||
rcutils_get_zero_initialized_allocator());
|
rcutils_get_zero_initialized_allocator());
|
||||||
rcl_node_t zero_node = rcl_get_zero_initialized_node();
|
rcl_node_t zero_node = rcl_get_zero_initialized_node();
|
||||||
const char * unknown_node_name = "/test_rcl_get_service_names_and_types_by_node";
|
const char * unknown_node_name = "test_rcl_get_service_names_and_types_by_node";
|
||||||
const char * unknown_node_ns = "/test/namespace";
|
const char * unknown_node_ns = "/test/namespace";
|
||||||
rcl_names_and_types_t nat = rcl_get_zero_initialized_names_and_types();
|
rcl_names_and_types_t nat = rcl_get_zero_initialized_names_and_types();
|
||||||
// invalid node
|
// invalid node
|
||||||
|
@ -478,15 +478,15 @@ TEST_F(
|
||||||
// test valid strings with invalid node names
|
// test valid strings with invalid node names
|
||||||
ret = rcl_get_service_names_and_types_by_node(
|
ret = rcl_get_service_names_and_types_by_node(
|
||||||
this->node_ptr, &allocator, "", "", &nat);
|
this->node_ptr, &allocator, "", "", &nat);
|
||||||
EXPECT_EQ(RCL_RET_ERROR, ret) << rcl_get_error_string().str;
|
EXPECT_EQ(RCL_RET_NODE_INVALID_NAME, ret) << rcl_get_error_string().str;
|
||||||
rcl_reset_error();
|
rcl_reset_error();
|
||||||
ret = rcl_get_service_names_and_types_by_node(
|
ret = rcl_get_service_names_and_types_by_node(
|
||||||
this->node_ptr, &allocator, "_InvalidNodeName", "", &nat);
|
this->node_ptr, &allocator, "_!InvalidNodeName", "", &nat);
|
||||||
EXPECT_EQ(RCL_RET_ERROR, ret) << rcl_get_error_string().str;
|
EXPECT_EQ(RCL_RET_NODE_INVALID_NAME, ret) << rcl_get_error_string().str;
|
||||||
rcl_reset_error();
|
rcl_reset_error();
|
||||||
ret = rcl_get_service_names_and_types_by_node(
|
ret = rcl_get_service_names_and_types_by_node(
|
||||||
this->node_ptr, &allocator, this->test_graph_node_name, "_!invalidNs", &nat);
|
this->node_ptr, &allocator, this->test_graph_node_name, "_!invalidNs", &nat);
|
||||||
EXPECT_EQ(RCL_RET_ERROR, ret) << rcl_get_error_string().str;
|
EXPECT_EQ(RCL_RET_NODE_INVALID_NAMESPACE, ret) << rcl_get_error_string().str;
|
||||||
rcl_reset_error();
|
rcl_reset_error();
|
||||||
// invalid names and types
|
// invalid names and types
|
||||||
ret = rcl_get_service_names_and_types_by_node(
|
ret = rcl_get_service_names_and_types_by_node(
|
||||||
|
@ -523,7 +523,8 @@ TEST_F(
|
||||||
rcl_allocator_t zero_allocator = static_cast<rcl_allocator_t>(
|
rcl_allocator_t zero_allocator = static_cast<rcl_allocator_t>(
|
||||||
rcutils_get_zero_initialized_allocator());
|
rcutils_get_zero_initialized_allocator());
|
||||||
rcl_node_t zero_node = rcl_get_zero_initialized_node();
|
rcl_node_t zero_node = rcl_get_zero_initialized_node();
|
||||||
const char * unknown_node_name = "/test_rcl_get_client_names_and_types_by_node";
|
const char * unknown_node_name = "test_rcl_get_client_names_and_types_by_node";
|
||||||
|
const char * unknown_node_ns = "/test/namespace";
|
||||||
rcl_names_and_types_t nat = rcl_get_zero_initialized_names_and_types();
|
rcl_names_and_types_t nat = rcl_get_zero_initialized_names_and_types();
|
||||||
// invalid node
|
// invalid node
|
||||||
ret = rcl_get_client_names_and_types_by_node(
|
ret = rcl_get_client_names_and_types_by_node(
|
||||||
|
@ -559,11 +560,15 @@ TEST_F(
|
||||||
// test valid strings with invalid node names
|
// test valid strings with invalid node names
|
||||||
ret = rcl_get_client_names_and_types_by_node(
|
ret = rcl_get_client_names_and_types_by_node(
|
||||||
this->node_ptr, &allocator, "", "", &nat);
|
this->node_ptr, &allocator, "", "", &nat);
|
||||||
EXPECT_EQ(RCL_RET_ERROR, ret) << rcl_get_error_string().str;
|
EXPECT_EQ(RCL_RET_NODE_INVALID_NAME, ret) << rcl_get_error_string().str;
|
||||||
rcl_reset_error();
|
rcl_reset_error();
|
||||||
ret = rcl_get_client_names_and_types_by_node(
|
ret = rcl_get_client_names_and_types_by_node(
|
||||||
this->node_ptr, &allocator, "_InvalidNodeName", "", &nat);
|
this->node_ptr, &allocator, "_!InvalidNodeName", "", &nat);
|
||||||
EXPECT_EQ(RCL_RET_ERROR, ret) << rcl_get_error_string().str;
|
EXPECT_EQ(RCL_RET_NODE_INVALID_NAME, ret) << rcl_get_error_string().str;
|
||||||
|
rcl_reset_error();
|
||||||
|
ret = rcl_get_client_names_and_types_by_node(
|
||||||
|
this->node_ptr, &allocator, this->test_graph_node_name, "_!invalidNs", &nat);
|
||||||
|
EXPECT_EQ(RCL_RET_NODE_INVALID_NAMESPACE, ret) << rcl_get_error_string().str;
|
||||||
rcl_reset_error();
|
rcl_reset_error();
|
||||||
// invalid names and types
|
// invalid names and types
|
||||||
ret = rcl_get_client_names_and_types_by_node(
|
ret = rcl_get_client_names_and_types_by_node(
|
||||||
|
@ -575,6 +580,11 @@ TEST_F(
|
||||||
this->node_ptr, &allocator, unknown_node_name, "", &nat);
|
this->node_ptr, &allocator, unknown_node_name, "", &nat);
|
||||||
EXPECT_EQ(RCL_RET_ERROR, ret) << rcl_get_error_string().str;
|
EXPECT_EQ(RCL_RET_ERROR, ret) << rcl_get_error_string().str;
|
||||||
rcl_reset_error();
|
rcl_reset_error();
|
||||||
|
// unknown node namespace
|
||||||
|
ret = rcl_get_client_names_and_types_by_node(
|
||||||
|
this->node_ptr, &allocator, this->test_graph_node_name, unknown_node_ns, &nat);
|
||||||
|
EXPECT_EQ(RCL_RET_ERROR, ret) << rcl_get_error_string().str;
|
||||||
|
rcl_reset_error();
|
||||||
// valid call
|
// valid call
|
||||||
ret = rcl_get_client_names_and_types_by_node(
|
ret = rcl_get_client_names_and_types_by_node(
|
||||||
this->node_ptr, &allocator, this->test_graph_node_name, "", &nat);
|
this->node_ptr, &allocator, this->test_graph_node_name, "", &nat);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue