|
|
|
@ -860,25 +860,16 @@ TEST_F(SingleBalancerTest, AllServersUnreachableFailFast) { |
|
|
|
|
TEST_F(SingleBalancerTest, BackendsRestart) { |
|
|
|
|
SetNextResolution({}, kDefaultServiceConfig_.c_str()); |
|
|
|
|
SetNextResolutionForLbChannelAllBalancers(); |
|
|
|
|
const size_t kNumRpcsPerAddress = 100; |
|
|
|
|
ScheduleResponseForBalancer( |
|
|
|
|
0, BalancerServiceImpl::BuildResponseForBackends(GetBackendPorts(), {}), |
|
|
|
|
0); |
|
|
|
|
// Make sure that trying to connect works without a call.
|
|
|
|
|
channel_->GetState(true /* try_to_connect */); |
|
|
|
|
// Send kNumRpcsPerAddress RPCs per server.
|
|
|
|
|
CheckRpcSendOk(kNumRpcsPerAddress * num_backends_); |
|
|
|
|
balancers_[0]->service_.NotifyDoneWithServerlists(); |
|
|
|
|
// The balancer got a single request.
|
|
|
|
|
EXPECT_EQ(1U, balancers_[0]->service_.request_count()); |
|
|
|
|
// and sent a single response.
|
|
|
|
|
EXPECT_EQ(1U, balancers_[0]->service_.response_count()); |
|
|
|
|
WaitForAllBackends(); |
|
|
|
|
// Stop backends. RPCs should fail.
|
|
|
|
|
ShutdownAllBackends(); |
|
|
|
|
CheckRpcSendFailure(); |
|
|
|
|
// Restart all backends. RPCs should start succeeding again.
|
|
|
|
|
StartAllBackends(); |
|
|
|
|
CheckRpcSendOk(1 /* times */, 1000 /* timeout_ms */, |
|
|
|
|
CheckRpcSendOk(1 /* times */, 2000 /* timeout_ms */, |
|
|
|
|
true /* wait_for_ready */); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|