aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/cpp/end2end/grpclb_end2end_test.cc
diff options
context:
space:
mode:
authorGravatar David Garcia Quintas <dgq@google.com>2018-03-01 16:27:43 -0800
committerGravatar David Garcia Quintas <dgq@google.com>2018-03-01 16:39:52 -0800
commite3438c43a02374ff7ed661187817dd98136dcd7d (patch)
treefcc1e3578c848a619cfb0ca187576529107f1f5a /test/cpp/end2end/grpclb_end2end_test.cc
parentfa0c3314cff8e1b5f300645b5e8043a3f3aed330 (diff)
Fix and simplify SingleBalancerTest.InitiallyEmptyServerlist
Diffstat (limited to 'test/cpp/end2end/grpclb_end2end_test.cc')
-rw-r--r--test/cpp/end2end/grpclb_end2end_test.cc22
1 files changed, 7 insertions, 15 deletions
diff --git a/test/cpp/end2end/grpclb_end2end_test.cc b/test/cpp/end2end/grpclb_end2end_test.cc
index ec12788b52..ce06ac83e9 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<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());