diff --git a/test_rmw_implementation/test/test_client.cpp b/test_rmw_implementation/test/test_client.cpp index 9c911269..350359d5 100644 --- a/test_rmw_implementation/test/test_client.cpp +++ b/test_rmw_implementation/test/test_client.cpp @@ -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); } diff --git a/test_rmw_implementation/test/test_service.cpp b/test_rmw_implementation/test/test_service.cpp index cb5a3c47..830a7df1 100644 --- a/test_rmw_implementation/test/test_service.cpp +++ b/test_rmw_implementation/test/test_service.cpp @@ -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; @@ -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;