| 
														
															@@ -212,13 +212,14 @@ class ClientLbEnd2endTest : public ::testing::Test { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   bool SendRpc( 
														 | 
														
														 | 
														
															   bool SendRpc( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       const std::unique_ptr<grpc::testing::EchoTestService::Stub>& stub, 
														 | 
														
														 | 
														
															       const std::unique_ptr<grpc::testing::EchoTestService::Stub>& stub, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       EchoResponse* response = nullptr, int timeout_ms = 1000, 
														 | 
														
														 | 
														
															       EchoResponse* response = nullptr, int timeout_ms = 1000, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-      Status* result = nullptr) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      Status* result = nullptr, bool wait_for_ready = false) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     const bool local_response = (response == nullptr); 
														 | 
														
														 | 
														
															     const bool local_response = (response == nullptr); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     if (local_response) response = new EchoResponse; 
														 | 
														
														 | 
														
															     if (local_response) response = new EchoResponse; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     EchoRequest request; 
														 | 
														
														 | 
														
															     EchoRequest request; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     request.set_message(kRequestMessage_); 
														 | 
														
														 | 
														
															     request.set_message(kRequestMessage_); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     ClientContext context; 
														 | 
														
														 | 
														
															     ClientContext context; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     context.set_deadline(grpc_timeout_milliseconds_to_deadline(timeout_ms)); 
														 | 
														
														 | 
														
															     context.set_deadline(grpc_timeout_milliseconds_to_deadline(timeout_ms)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    if (wait_for_ready) context.set_wait_for_ready(true); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     Status status = stub->Echo(&context, request, response); 
														 | 
														
														 | 
														
															     Status status = stub->Echo(&context, request, response); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     if (result != nullptr) *result = status; 
														 | 
														
														 | 
														
															     if (result != nullptr) *result = status; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     if (local_response) delete response; 
														 | 
														
														 | 
														
															     if (local_response) delete response; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -227,10 +228,11 @@ class ClientLbEnd2endTest : public ::testing::Test { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															   void CheckRpcSendOk( 
														 | 
														
														 | 
														
															   void CheckRpcSendOk( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       const std::unique_ptr<grpc::testing::EchoTestService::Stub>& stub, 
														 | 
														
														 | 
														
															       const std::unique_ptr<grpc::testing::EchoTestService::Stub>& stub, 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-      const grpc_core::DebugLocation& location) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+      const grpc_core::DebugLocation& location, bool wait_for_ready = false) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     EchoResponse response; 
														 | 
														
														 | 
														
															     EchoResponse response; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     Status status; 
														 | 
														
														 | 
														
															     Status status; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    const bool success = SendRpc(stub, &response, 2000, &status); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    const bool success = 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        SendRpc(stub, &response, 2000, &status, wait_for_ready); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     ASSERT_TRUE(success) << "From " << location.file() << ":" << location.line() 
														 | 
														
														 | 
														
															     ASSERT_TRUE(success) << "From " << location.file() << ":" << location.line() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                          << "\n" 
														 | 
														
														 | 
														
															                          << "\n" 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                          << "Error: " << status.error_message() << " " 
														 | 
														
														 | 
														
															                          << "Error: " << status.error_message() << " " 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -301,7 +303,7 @@ class ClientLbEnd2endTest : public ::testing::Test { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       if (ignore_failure) { 
														 | 
														
														 | 
														
															       if (ignore_failure) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         SendRpc(stub); 
														 | 
														
														 | 
														
															         SendRpc(stub); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       } else { 
														 | 
														
														 | 
														
															       } else { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        CheckRpcSendOk(stub, location); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        CheckRpcSendOk(stub, location, true); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															       } 
														 | 
														
														 | 
														
															       } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } while (servers_[server_idx]->service_.request_count() == 0); 
														 | 
														
														 | 
														
															     } while (servers_[server_idx]->service_.request_count() == 0); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     ResetCounters(); 
														 | 
														
														 | 
														
															     ResetCounters(); 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -506,7 +508,7 @@ TEST_F(ClientLbEnd2endTest, PickFirstUpdates) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   do { 
														 | 
														
														 | 
														
															   do { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     channel_state = channel->GetState(true /* try to connect */); 
														 | 
														
														 | 
														
															     channel_state = channel->GetState(true /* try to connect */); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   } while (channel_state == GRPC_CHANNEL_READY); 
														 | 
														
														 | 
														
															   } while (channel_state == GRPC_CHANNEL_READY); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-  GPR_ASSERT(channel_state != GRPC_CHANNEL_READY); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  ASSERT_NE(channel_state, GRPC_CHANNEL_READY); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   servers_[0]->service_.ResetCounters(); 
														 | 
														
														 | 
														
															   servers_[0]->service_.ResetCounters(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															   // Next update introduces servers_[1], making the channel recover. 
														 | 
														
														 | 
														
															   // Next update introduces servers_[1], making the channel recover. 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -830,7 +832,7 @@ TEST_F(ClientLbEnd2endTest, RoundRobinUpdates) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   do { 
														 | 
														
														 | 
														
															   do { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     channel_state = channel->GetState(true /* try to connect */); 
														 | 
														
														 | 
														
															     channel_state = channel->GetState(true /* try to connect */); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   } while (channel_state == GRPC_CHANNEL_READY); 
														 | 
														
														 | 
														
															   } while (channel_state == GRPC_CHANNEL_READY); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-  GPR_ASSERT(channel_state != GRPC_CHANNEL_READY); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  ASSERT_NE(channel_state, GRPC_CHANNEL_READY); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   servers_[0]->service_.ResetCounters(); 
														 | 
														
														 | 
														
															   servers_[0]->service_.ResetCounters(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															   // Next update introduces servers_[1], making the channel recover. 
														 | 
														
														 | 
														
															   // Next update introduces servers_[1], making the channel recover. 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -839,7 +841,7 @@ TEST_F(ClientLbEnd2endTest, RoundRobinUpdates) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   SetNextResolution(ports); 
														 | 
														
														 | 
														
															   SetNextResolution(ports); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   WaitForServer(stub, 1, DEBUG_LOCATION); 
														 | 
														
														 | 
														
															   WaitForServer(stub, 1, DEBUG_LOCATION); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   channel_state = channel->GetState(false /* try to connect */); 
														 | 
														
														 | 
														
															   channel_state = channel->GetState(false /* try to connect */); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-  GPR_ASSERT(channel_state == GRPC_CHANNEL_READY); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  ASSERT_EQ(channel_state, GRPC_CHANNEL_READY); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															   // Check LB policy name for the channel. 
														 | 
														
														 | 
														
															   // Check LB policy name for the channel. 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   EXPECT_EQ("round_robin", channel->GetLoadBalancingPolicyName()); 
														 | 
														
														 | 
														
															   EXPECT_EQ("round_robin", channel->GetLoadBalancingPolicyName()); 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -952,7 +954,7 @@ TEST_F(ClientLbEnd2endTest, RoundRobinReresolve) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     if (SendRpc(stub)) break; 
														 | 
														
														 | 
														
															     if (SendRpc(stub)) break; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     now = gpr_now(GPR_CLOCK_MONOTONIC); 
														 | 
														
														 | 
														
															     now = gpr_now(GPR_CLOCK_MONOTONIC); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															   } 
														 | 
														
														 | 
														
															   } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-  GPR_ASSERT(gpr_time_cmp(deadline, now) > 0); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+  ASSERT_GT(gpr_time_cmp(deadline, now), 0); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 TEST_F(ClientLbEnd2endTest, RoundRobinSingleReconnect) { 
														 | 
														
														 | 
														
															 TEST_F(ClientLbEnd2endTest, RoundRobinSingleReconnect) { 
														 |