Merge pull request #12939 from vjpai/proxy_e2e

Add a little sleep in end2end_test service to make short deadlines actually expire
pull/12920/merge
Vijay Pai 7 years ago committed by GitHub
commit ca46ce10b0
  1. 1
      src/proto/grpc/testing/echo_messages.proto
  2. 15
      test/cpp/end2end/end2end_test.cc
  3. 8
      test/cpp/end2end/test_service_impl.cc

@ -45,6 +45,7 @@ message RequestParams {
bool server_die = 12; // Server should not see a request with this set. bool server_die = 12; // Server should not see a request with this set.
string binary_error_details = 13; string binary_error_details = 13;
ErrorStatus expected_error = 14; ErrorStatus expected_error = 14;
int32 server_sleep_us = 15; // Amount to sleep when invoking server
} }
message EchoRequest { message EchoRequest {

@ -1280,6 +1280,8 @@ TEST_P(ProxyEnd2endTest, RpcDeadlineExpires) {
EchoResponse response; EchoResponse response;
request.set_message("Hello"); request.set_message("Hello");
request.mutable_param()->set_skip_cancelled_check(true); request.mutable_param()->set_skip_cancelled_check(true);
// Let server sleep for 2 ms first to guarantee expiry
request.mutable_param()->set_server_sleep_us(2 * 1000);
ClientContext context; ClientContext context;
std::chrono::system_clock::time_point deadline = std::chrono::system_clock::time_point deadline =
@ -1407,6 +1409,10 @@ TEST_P(ProxyEnd2endTest, HugeResponse) {
} }
TEST_P(ProxyEnd2endTest, Peer) { TEST_P(ProxyEnd2endTest, Peer) {
// Peer is not meaningful for inproc
if (GetParam().inproc) {
return;
}
ResetStub(); ResetStub();
EchoRequest request; EchoRequest request;
EchoResponse response; EchoResponse response;
@ -1775,11 +1781,10 @@ std::vector<TestScenario> CreateTestScenarios(bool use_proxy,
credentials_types.push_back(kInsecureCredentialsType); credentials_types.push_back(kInsecureCredentialsType);
} }
GPR_ASSERT(!credentials_types.empty()); GPR_ASSERT(!credentials_types.empty());
for (auto it = credentials_types.begin(); it != credentials_types.end(); for (const auto& cred : credentials_types) {
++it) { scenarios.emplace_back(false, false, cred);
scenarios.emplace_back(false, false, *it);
if (use_proxy) { if (use_proxy) {
scenarios.emplace_back(true, false, *it); scenarios.emplace_back(true, false, cred);
} }
} }
if (test_inproc && insec_ok()) { if (test_inproc && insec_ok()) {
@ -1798,7 +1803,7 @@ INSTANTIATE_TEST_CASE_P(End2endServerTryCancel, End2endServerTryCancelTest,
INSTANTIATE_TEST_CASE_P(ProxyEnd2end, ProxyEnd2endTest, INSTANTIATE_TEST_CASE_P(ProxyEnd2end, ProxyEnd2endTest,
::testing::ValuesIn(CreateTestScenarios(true, true, ::testing::ValuesIn(CreateTestScenarios(true, true,
true, false))); true, true)));
INSTANTIATE_TEST_CASE_P(SecureEnd2end, SecureEnd2endTest, INSTANTIATE_TEST_CASE_P(SecureEnd2end, SecureEnd2endTest,
::testing::ValuesIn(CreateTestScenarios(false, false, ::testing::ValuesIn(CreateTestScenarios(false, false,

@ -73,6 +73,14 @@ void CheckServerAuthContext(
Status TestServiceImpl::Echo(ServerContext* context, const EchoRequest* request, Status TestServiceImpl::Echo(ServerContext* context, const EchoRequest* request,
EchoResponse* response) { EchoResponse* response) {
// A bit of sleep to make sure that short deadline tests fail
if (request->has_param() && request->param().server_sleep_us() > 0) {
gpr_sleep_until(
gpr_time_add(gpr_now(GPR_CLOCK_MONOTONIC),
gpr_time_from_micros(request->param().server_sleep_us(),
GPR_TIMESPAN)));
}
if (request->has_param() && request->param().server_die()) { if (request->has_param() && request->param().server_die()) {
gpr_log(GPR_ERROR, "The request should not reach application handler."); gpr_log(GPR_ERROR, "The request should not reach application handler.");
GPR_ASSERT(0); GPR_ASSERT(0);

Loading…
Cancel
Save