diff --git a/test/cpp/end2end/grpclb_end2end_test.cc b/test/cpp/end2end/grpclb_end2end_test.cc index ec12788b521..ce06ac83e93 100644 --- a/test/cpp/end2end/grpclb_end2end_test.cc +++ b/test/cpp/end2end/grpclb_end2end_test.cc @@ -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( 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());