Skip to content

Commit

Permalink
Wait for server in test_rmw_implementation service tests (#191)
Browse files Browse the repository at this point in the history
Signed-off-by: Michel Hidalgo <michel@ekumenlabs.com>
  • Loading branch information
hidmic authored May 6, 2021
1 parent 58a3ccf commit 6454f91
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 18 deletions.
33 changes: 15 additions & 18 deletions test_rmw_implementation/test/test_client.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -385,29 +385,26 @@ TEST_F(CLASSNAME(TestClientUse, RMW_IMPLEMENTATION), service_server_is_available
TEST_F(CLASSNAME(TestClientUse, RMW_IMPLEMENTATION), service_server_is_available_good_args)
{
bool is_available = false;
rmw_ret_t ret = RMW_RET_ERROR;
SLEEP_AND_RETRY_UNTIL(rmw_intraprocess_discovery_delay, rmw_intraprocess_discovery_delay * 10) {
ret = rmw_service_server_is_available(node, client, &is_available);
if (RMW_RET_OK == ret && is_available) {
break;
}
}
EXPECT_EQ(ret, RMW_RET_OK) << rmw_get_error_string().str;
EXPECT_FALSE(is_available) << rmw_get_error_string().str;
rmw_reset_error();
rmw_ret_t ret = rmw_service_server_is_available(node, client, &is_available);
ASSERT_EQ(RMW_RET_OK, ret) << rmw_get_error_string().str;
ASSERT_FALSE(is_available);

rmw_service_t * service = rmw_create_service(node, ts, service_name, &qos_profile);
ASSERT_NE(nullptr, client) << rcutils_get_error_string().str;
ASSERT_NE(nullptr, client) << rmw_get_error_string().str;
OSRF_TESTING_TOOLS_CPP_SCOPE_EXIT(
{
rmw_ret_t ret = rmw_destroy_service(node, service);
EXPECT_EQ(RMW_RET_OK, ret) << rmw_get_error_string().str;
rmw_reset_error();
});

is_available = false;
SLEEP_AND_RETRY_UNTIL(rmw_intraprocess_discovery_delay, rmw_intraprocess_discovery_delay * 10) {
ret = rmw_service_server_is_available(node, client, &is_available);
if (RMW_RET_OK == ret && is_available) {
ASSERT_EQ(RMW_RET_OK, ret) << rmw_get_error_string().str;
if (is_available) {
break;
}
}
EXPECT_EQ(ret, RMW_RET_OK) << rmw_get_error_string().str;
EXPECT_TRUE(is_available) << rmw_get_error_string().str;
rmw_reset_error();

ret = rmw_destroy_service(node, service);
EXPECT_EQ(RMW_RET_OK, ret) << rmw_get_error_string().str;
ASSERT_TRUE(is_available);
}
22 changes: 22 additions & 0 deletions test_rmw_implementation/test/test_service.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -358,6 +358,17 @@ TEST_F(CLASSNAME(TestService, RMW_IMPLEMENTATION), send_reponse_with_bad_argumen
EXPECT_EQ(RMW_RET_OK, ret) << rcutils_get_error_string().str;
});

bool is_available = false;
SLEEP_AND_RETRY_UNTIL(rmw_intraprocess_discovery_delay, rmw_intraprocess_discovery_delay * 10) {
rmw_ret_t ret = rmw_service_server_is_available(node, client, &is_available);
EXPECT_EQ(RMW_RET_OK, ret) << rmw_get_error_string().str;
rmw_reset_error();
if (is_available) {
break;
}
}
ASSERT_TRUE(is_available);

rmw_ret_t ret = rmw_send_request(client, &request, &sequence_number);
ASSERT_EQ(RMW_RET_OK, ret) << rmw_get_error_string().str;

Expand Down Expand Up @@ -453,6 +464,17 @@ TEST_F(CLASSNAME(TestService, RMW_IMPLEMENTATION), send_reponse_with_client_gone
}
});

bool is_available = false;
SLEEP_AND_RETRY_UNTIL(rmw_intraprocess_discovery_delay, rmw_intraprocess_discovery_delay * 10) {
rmw_ret_t ret = rmw_service_server_is_available(node, client, &is_available);
EXPECT_EQ(RMW_RET_OK, ret) << rmw_get_error_string().str;
rmw_reset_error();
if (is_available) {
break;
}
}
ASSERT_TRUE(is_available);

rmw_ret_t ret = rmw_send_request(client, &request, &sequence_number);
ASSERT_EQ(RMW_RET_OK, ret) << rmw_get_error_string().str;

Expand Down

0 comments on commit 6454f91

Please sign in to comment.