Merge pull request #22833 from markdroth/grpclb_status_fix

grpclb: Add test showing that backend status is returned to client.
reviewable/pr22830/r3^2
Mark D. Roth 5 years ago committed by GitHub
commit d29865bb44
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 24
      test/cpp/end2end/grpclb_end2end_test.cc

@ -618,11 +618,17 @@ class GrpclbEnd2endTest : public ::testing::Test {
}
Status SendRpc(EchoResponse* response = nullptr, int timeout_ms = 1000,
bool wait_for_ready = false) {
bool wait_for_ready = false,
const Status& expected_status = Status::OK) {
const bool local_response = (response == nullptr);
if (local_response) response = new EchoResponse;
EchoRequest request;
request.set_message(kRequestMessage_);
if (!expected_status.ok()) {
auto* error = request.mutable_param()->mutable_expected_error();
error->set_code(expected_status.error_code());
error->set_error_message(expected_status.error_message());
}
ClientContext context;
context.set_deadline(grpc_timeout_milliseconds_to_deadline(timeout_ms));
if (wait_for_ready) context.set_wait_for_ready(true);
@ -751,6 +757,22 @@ TEST_F(SingleBalancerTest, Vanilla) {
EXPECT_EQ("grpclb", channel_->GetLoadBalancingPolicyName());
}
TEST_F(SingleBalancerTest, ReturnServerStatus) {
SetNextResolutionAllBalancers();
ScheduleResponseForBalancer(
0, BalancerServiceImpl::BuildResponseForBackends(GetBackendPorts(), {}),
0);
// We need to wait for all backends to come online.
WaitForAllBackends();
// Send a request that the backend will fail, and make sure we get
// back the right status.
Status expected(StatusCode::INVALID_ARGUMENT, "He's dead, Jim!");
Status actual = SendRpc(/*response=*/nullptr, /*timeout_ms=*/1000,
/*wait_for_ready=*/false, expected);
EXPECT_EQ(actual.error_code(), expected.error_code());
EXPECT_EQ(actual.error_message(), expected.error_message());
}
TEST_F(SingleBalancerTest, SelectGrpclbWithMigrationServiceConfig) {
SetNextResolutionAllBalancers(
"{\n"

Loading…
Cancel
Save