From 09558e9052afa36552dfc30034b43d41642e7629 Mon Sep 17 00:00:00 2001 From: Vignesh Babu Date: Wed, 24 Aug 2022 16:50:45 -0700 Subject: [PATCH] Adjust rpc timeouts in xds tests to reduce Deadline exceeded errors in msan (#30732) --- .../end2end/xds/xds_cluster_end2end_test.cc | 7 ++-- .../end2end/xds/xds_ring_hash_end2end_test.cc | 8 ++--- .../end2end/xds/xds_routing_end2end_test.cc | 32 ++++++++++++------- 3 files changed, 30 insertions(+), 17 deletions(-) diff --git a/test/cpp/end2end/xds/xds_cluster_end2end_test.cc b/test/cpp/end2end/xds/xds_cluster_end2end_test.cc index 9c73811cfb2..731026e2d54 100644 --- a/test/cpp/end2end/xds/xds_cluster_end2end_test.cc +++ b/test/cpp/end2end/xds/xds_cluster_end2end_test.cc @@ -115,7 +115,9 @@ TEST_P(CdsTest, AcceptsEdsConfigSourceOfTypeAds) { balancer_->ads_service()->SetCdsResource(cluster); EdsResourceArgs args({{"locality0", CreateEndpointsForBackends()}}); balancer_->ads_service()->SetEdsResource(BuildEdsResource(args)); - WaitForAllBackends(DEBUG_LOCATION); + WaitForAllBackends(DEBUG_LOCATION, /*start_index=*/0, /*stop_index=*/0, + /*check_status=*/nullptr, WaitForBackendOptions(), + RpcOptions().set_timeout_ms(5000)); auto response_state = balancer_->ads_service()->cds_response_state(); ASSERT_TRUE(response_state.has_value()); EXPECT_EQ(response_state->state, AdsServiceImpl::ResponseState::ACKED); @@ -199,7 +201,8 @@ TEST_P(CdsTest, EdsServiceNameDefaultsToClusterName) { Cluster cluster = default_cluster_; cluster.mutable_eds_cluster_config()->clear_service_name(); balancer_->ads_service()->SetCdsResource(cluster); - CheckRpcSendOk(DEBUG_LOCATION); + CheckRpcSendOk(DEBUG_LOCATION, /*times=*/1, + RpcOptions().set_timeout_ms(5000)); } // Tests switching over from one cluster to another. diff --git a/test/cpp/end2end/xds/xds_ring_hash_end2end_test.cc b/test/cpp/end2end/xds/xds_ring_hash_end2end_test.cc index 7d8dd4e9e9f..fec40a1f08a 100644 --- a/test/cpp/end2end/xds/xds_ring_hash_end2end_test.cc +++ b/test/cpp/end2end/xds/xds_ring_hash_end2end_test.cc @@ -139,7 +139,7 @@ TEST_P(RingHashTest, AggregateClusterFallBackFromRingHashAtStartup) { new_route_config); // Verifying that we are using ring hash as only 1 endpoint is receiving all // the traffic. - CheckRpcSendOk(DEBUG_LOCATION, 100); + CheckRpcSendOk(DEBUG_LOCATION, 100, RpcOptions().set_timeout_ms(5000)); bool found = false; for (size_t i = 0; i < backends_.size(); ++i) { if (backends_[i]->backend_service()->request_count() > 0) { @@ -289,7 +289,7 @@ TEST_P(RingHashTest, SetUpChannel(&channel_args); // Start an RPC in the background. LongRunningRpc rpc; - rpc.StartRpc(stub_.get(), RpcOptions()); + rpc.StartRpc(stub_.get(), RpcOptions().set_timeout_ms(5000)); // Wait for connection attempt to the backend. hold->Wait(); // Channel should report CONNECTING here, and any RPC should be queued. @@ -303,7 +303,7 @@ TEST_P(RingHashTest, // because if the priority policy fails to update the picker, then the // pick for the first RPC will not be retried. LongRunningRpc rpc2; - rpc2.StartRpc(stub_.get(), RpcOptions()); + rpc2.StartRpc(stub_.get(), RpcOptions().set_timeout_ms(5000)); // Allow the connection attempt to complete. hold->Resume(); // Now the RPCs should complete successfully. @@ -334,7 +334,7 @@ TEST_P(RingHashTest, ChannelIdHashing) { new_route_config); EdsResourceArgs args({{"locality0", CreateEndpointsForBackends()}}); balancer_->ads_service()->SetEdsResource(BuildEdsResource(args)); - CheckRpcSendOk(DEBUG_LOCATION, 100); + CheckRpcSendOk(DEBUG_LOCATION, 100, RpcOptions().set_timeout_ms(5000)); bool found = false; for (size_t i = 0; i < backends_.size(); ++i) { if (backends_[i]->backend_service()->request_count() > 0) { diff --git a/test/cpp/end2end/xds/xds_routing_end2end_test.cc b/test/cpp/end2end/xds/xds_routing_end2end_test.cc index b5771296244..32c81f7d2d7 100644 --- a/test/cpp/end2end/xds/xds_routing_end2end_test.cc +++ b/test/cpp/end2end/xds/xds_routing_end2end_test.cc @@ -1017,7 +1017,9 @@ TEST_P(LdsRdsTest, XdsRoutingPathMatching) { default_route->mutable_match()->set_prefix(""); default_route->mutable_route()->set_cluster(kDefaultClusterName); SetRouteConfiguration(balancer_.get(), new_route_config); - WaitForAllBackends(DEBUG_LOCATION, 0, 2); + WaitForAllBackends(DEBUG_LOCATION, 0, 2, /*check_status=*/nullptr, + WaitForBackendOptions(), + RpcOptions().set_timeout_ms(5000)); CheckRpcSendOk(DEBUG_LOCATION, kNumEchoRpcs, RpcOptions().set_wait_for_ready(true)); CheckRpcSendOk(DEBUG_LOCATION, kNumEcho1Rpcs, @@ -1557,13 +1559,17 @@ TEST_P(LdsRdsTest, XdsRoutingWeightedClusterUpdateWeights) { default_route->mutable_match()->set_prefix(""); default_route->mutable_route()->set_cluster(kDefaultClusterName); SetRouteConfiguration(balancer_.get(), new_route_config); - WaitForAllBackends(DEBUG_LOCATION, 0, 1); - WaitForAllBackends(DEBUG_LOCATION, 1, 3, /*check_status=*/nullptr, + WaitForAllBackends(DEBUG_LOCATION, 0, 1, /*check_status=*/nullptr, WaitForBackendOptions(), - RpcOptions().set_rpc_service(SERVICE_ECHO1)); - CheckRpcSendOk(DEBUG_LOCATION, kNumEchoRpcs); - CheckRpcSendOk(DEBUG_LOCATION, kNumEcho1Rpcs7525, - RpcOptions().set_rpc_service(SERVICE_ECHO1)); + RpcOptions().set_timeout_ms(5000)); + WaitForAllBackends( + DEBUG_LOCATION, 1, 3, /*check_status=*/nullptr, WaitForBackendOptions(), + RpcOptions().set_rpc_service(SERVICE_ECHO1).set_timeout_ms(5000)); + CheckRpcSendOk(DEBUG_LOCATION, kNumEchoRpcs, + RpcOptions().set_timeout_ms(5000)); + CheckRpcSendOk( + DEBUG_LOCATION, kNumEcho1Rpcs7525, + RpcOptions().set_rpc_service(SERVICE_ECHO1).set_timeout_ms(5000)); // Make sure RPCs all go to the correct backend. EXPECT_EQ(kNumEchoRpcs, backends_[0]->backend_service()->request_count()); EXPECT_EQ(0, backends_[0]->backend_service1()->request_count()); @@ -1590,10 +1596,14 @@ TEST_P(LdsRdsTest, XdsRoutingWeightedClusterUpdateWeights) { default_route->mutable_route()->set_cluster(kNewCluster3Name); SetRouteConfiguration(balancer_.get(), new_route_config); ResetBackendCounters(); - WaitForAllBackends(DEBUG_LOCATION, 3, 4); - CheckRpcSendOk(DEBUG_LOCATION, kNumEchoRpcs); - CheckRpcSendOk(DEBUG_LOCATION, kNumEcho1Rpcs5050, - RpcOptions().set_rpc_service(SERVICE_ECHO1)); + WaitForAllBackends(DEBUG_LOCATION, 3, 4, /*check_status=*/nullptr, + WaitForBackendOptions(), + RpcOptions().set_timeout_ms(5000)); + CheckRpcSendOk(DEBUG_LOCATION, kNumEchoRpcs, + RpcOptions().set_timeout_ms(5000)); + CheckRpcSendOk( + DEBUG_LOCATION, kNumEcho1Rpcs5050, + RpcOptions().set_rpc_service(SERVICE_ECHO1).set_timeout_ms(5000)); // Make sure RPCs all go to the correct backend. EXPECT_EQ(0, backends_[0]->backend_service()->request_count()); EXPECT_EQ(0, backends_[0]->backend_service1()->request_count());