|  | @@ -313,9 +313,7 @@ class BalancerServiceImpl : public BalancerService {
 | 
	
		
			
				|  |  |                      int delay_ms) {
 | 
	
		
			
				|  |  |      gpr_log(GPR_INFO, "LB[%p]: sleeping for %d ms...", this, delay_ms);
 | 
	
		
			
				|  |  |      if (delay_ms > 0) {
 | 
	
		
			
				|  |  | -      gpr_sleep_until(
 | 
	
		
			
				|  |  | -          gpr_time_add(gpr_now(GPR_CLOCK_REALTIME),
 | 
	
		
			
				|  |  | -                       gpr_time_from_millis(delay_ms, GPR_TIMESPAN)));
 | 
	
		
			
				|  |  | +      gpr_sleep_until(grpc_timeout_milliseconds_to_deadline(delay_ms));
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |      gpr_log(GPR_INFO, "LB[%p]: Woke up! Sending response '%s'", this,
 | 
	
		
			
				|  |  |              response.DebugString().c_str());
 | 
	
	
		
			
				|  | @@ -536,10 +534,10 @@ class GrpclbEnd2endTest : public ::testing::Test {
 | 
	
		
			
				|  |  |      return status;
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -  void CheckRpcSendOk(const size_t times = 1) {
 | 
	
		
			
				|  |  | +  void CheckRpcSendOk(const size_t times = 1, const int timeout_ms = 1000) {
 | 
	
		
			
				|  |  |      for (size_t i = 0; i < times; ++i) {
 | 
	
		
			
				|  |  |        EchoResponse response;
 | 
	
		
			
				|  |  | -      const Status status = SendRpc(&response);
 | 
	
		
			
				|  |  | +      const Status status = SendRpc(&response, timeout_ms);
 | 
	
		
			
				|  |  |        EXPECT_TRUE(status.ok()) << "code=" << status.error_code()
 | 
	
		
			
				|  |  |                                 << " message=" << status.error_message();
 | 
	
		
			
				|  |  |        EXPECT_EQ(response.message(), kRequestMessage_);
 | 
	
	
		
			
				|  | @@ -693,8 +691,7 @@ TEST_F(SingleBalancerTest, SecureNamingDeathTest) {
 | 
	
		
			
				|  |  |  TEST_F(SingleBalancerTest, InitiallyEmptyServerlist) {
 | 
	
		
			
				|  |  |    SetNextResolutionAllBalancers();
 | 
	
		
			
				|  |  |    const int kServerlistDelayMs = 500 * grpc_test_slowdown_factor();
 | 
	
		
			
				|  |  | -  const int kCallDeadlineMs = 1000 * grpc_test_slowdown_factor();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +  const int kCallDeadlineMs = kServerlistDelayMs * 2;
 | 
	
		
			
				|  |  |    // First response is an empty serverlist, sent right away.
 | 
	
		
			
				|  |  |    ScheduleResponseForBalancer(0, LoadBalanceResponse(), 0);
 | 
	
		
			
				|  |  |    // Send non-empty serverlist only after kServerlistDelayMs
 | 
	
	
		
			
				|  | @@ -704,20 +701,15 @@ TEST_F(SingleBalancerTest, InitiallyEmptyServerlist) {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    const auto t0 = system_clock::now();
 | 
	
		
			
				|  |  |    // Client will block: LB will initially send empty serverlist.
 | 
	
		
			
				|  |  | -  CheckRpcSendOk(num_backends_);
 | 
	
		
			
				|  |  | +  CheckRpcSendOk(1, kCallDeadlineMs);
 | 
	
		
			
				|  |  |    const auto ellapsed_ms =
 | 
	
		
			
				|  |  |        std::chrono::duration_cast<std::chrono::milliseconds>(
 | 
	
		
			
				|  |  |            system_clock::now() - t0);
 | 
	
		
			
				|  |  |    // but eventually, the LB sends a serverlist update that allows the call to
 | 
	
		
			
				|  |  |    // proceed. The call delay must be larger than the delay in sending the
 | 
	
		
			
				|  |  | -  // populated serverlist but under the call's deadline.
 | 
	
		
			
				|  |  | +  // populated serverlist but under the call's deadline (which is enforced by
 | 
	
		
			
				|  |  | +  // the call's deadline).
 | 
	
		
			
				|  |  |    EXPECT_GT(ellapsed_ms.count(), kServerlistDelayMs);
 | 
	
		
			
				|  |  | -  EXPECT_LT(ellapsed_ms.count(), kCallDeadlineMs);
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  // Each backend should have gotten 1 request.
 | 
	
		
			
				|  |  | -  for (size_t i = 0; i < backends_.size(); ++i) {
 | 
	
		
			
				|  |  | -    EXPECT_EQ(1U, backend_servers_[i].service_->request_count());
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  |    balancers_[0]->NotifyDoneWithServerlists();
 | 
	
		
			
				|  |  |    // The balancer got a single request.
 | 
	
		
			
				|  |  |    EXPECT_EQ(1U, balancer_servers_[0].service_->request_count());
 |