|
|
|
@ -210,8 +210,9 @@ class TestScenario { |
|
|
|
|
|
|
|
|
|
static std::ostream& operator<<(std::ostream& out, |
|
|
|
|
const TestScenario& scenario) { |
|
|
|
|
return out << "TestScenario{use_proxy=" |
|
|
|
|
<< (scenario.use_proxy ? "true" : "false") |
|
|
|
|
return out << "TestScenario{use_interceptors=" |
|
|
|
|
<< (scenario.use_interceptors ? "true" : "false") |
|
|
|
|
<< ", use_proxy=" << (scenario.use_proxy ? "true" : "false") |
|
|
|
|
<< ", inproc=" << (scenario.inproc ? "true" : "false") |
|
|
|
|
<< ", credentials='" << scenario.credentials_type << "'}"; |
|
|
|
|
} |
|
|
|
@ -275,6 +276,7 @@ class End2endTest : public ::testing::TestWithParam<TestScenario> { |
|
|
|
|
creators.push_back(std::unique_ptr<DummyInterceptorFactory>( |
|
|
|
|
new DummyInterceptorFactory())); |
|
|
|
|
} |
|
|
|
|
builder.experimental().SetInterceptorCreators(std::move(creators)); |
|
|
|
|
} |
|
|
|
|
builder.AddListeningPort(server_address_.str(), server_creds); |
|
|
|
|
builder.RegisterService(&service_); |
|
|
|
@ -308,10 +310,21 @@ class End2endTest : public ::testing::TestWithParam<TestScenario> { |
|
|
|
|
args.SetString(GRPC_ARG_SECONDARY_USER_AGENT_STRING, "end2end_test"); |
|
|
|
|
|
|
|
|
|
if (!GetParam().inproc) { |
|
|
|
|
channel_ = |
|
|
|
|
CreateCustomChannel(server_address_.str(), channel_creds, args); |
|
|
|
|
if (!GetParam().use_interceptors) { |
|
|
|
|
channel_ = |
|
|
|
|
CreateCustomChannel(server_address_.str(), channel_creds, args); |
|
|
|
|
} else { |
|
|
|
|
channel_ = CreateCustomChannelWithInterceptors( |
|
|
|
|
server_address_.str(), channel_creds, args, |
|
|
|
|
CreateDummyClientInterceptors()); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
channel_ = server_->InProcessChannel(args); |
|
|
|
|
if (!GetParam().use_interceptors) { |
|
|
|
|
channel_ = server_->InProcessChannel(args); |
|
|
|
|
} else { |
|
|
|
|
channel_ = server_->experimental().InProcessChannelWithInterceptors( |
|
|
|
|
args, CreateDummyClientInterceptors()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -336,6 +349,7 @@ class End2endTest : public ::testing::TestWithParam<TestScenario> { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
stub_ = grpc::testing::EchoTestService::NewStub(channel_); |
|
|
|
|
DummyInterceptor::Reset(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
bool is_server_started_; |
|
|
|
@ -392,6 +406,7 @@ class End2endServerTryCancelTest : public End2endTest { |
|
|
|
|
// NOTE: Do not call this function with server_try_cancel == DO_NOT_CANCEL.
|
|
|
|
|
void TestRequestStreamServerCancel( |
|
|
|
|
ServerTryCancelRequestPhase server_try_cancel, int num_msgs_to_send) { |
|
|
|
|
RestartServer(std::shared_ptr<AuthMetadataProcessor>()); |
|
|
|
|
ResetStub(); |
|
|
|
|
EchoRequest request; |
|
|
|
|
EchoResponse response; |
|
|
|
@ -448,6 +463,10 @@ class End2endServerTryCancelTest : public End2endTest { |
|
|
|
|
|
|
|
|
|
EXPECT_FALSE(s.ok()); |
|
|
|
|
EXPECT_EQ(grpc::StatusCode::CANCELLED, s.error_code()); |
|
|
|
|
// Make sure that the server interceptors were notified
|
|
|
|
|
if (GetParam().use_interceptors) { |
|
|
|
|
EXPECT_EQ(20, DummyInterceptor::GetNumTimesCancel()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Helper for testing server-streaming RPCs which are cancelled on the server.
|
|
|
|
@ -465,6 +484,7 @@ class End2endServerTryCancelTest : public End2endTest { |
|
|
|
|
// NOTE: Do not call this function with server_try_cancel == DO_NOT_CANCEL.
|
|
|
|
|
void TestResponseStreamServerCancel( |
|
|
|
|
ServerTryCancelRequestPhase server_try_cancel) { |
|
|
|
|
RestartServer(std::shared_ptr<AuthMetadataProcessor>()); |
|
|
|
|
ResetStub(); |
|
|
|
|
EchoRequest request; |
|
|
|
|
EchoResponse response; |
|
|
|
@ -524,7 +544,10 @@ class End2endServerTryCancelTest : public End2endTest { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
EXPECT_FALSE(s.ok()); |
|
|
|
|
EXPECT_EQ(grpc::StatusCode::CANCELLED, s.error_code()); |
|
|
|
|
// Make sure that the server interceptors were notified
|
|
|
|
|
if (GetParam().use_interceptors) { |
|
|
|
|
EXPECT_EQ(20, DummyInterceptor::GetNumTimesCancel()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Helper for testing bidirectional-streaming RPCs which are cancelled on the
|
|
|
|
@ -542,6 +565,7 @@ class End2endServerTryCancelTest : public End2endTest { |
|
|
|
|
// NOTE: Do not call this function with server_try_cancel == DO_NOT_CANCEL.
|
|
|
|
|
void TestBidiStreamServerCancel(ServerTryCancelRequestPhase server_try_cancel, |
|
|
|
|
int num_messages) { |
|
|
|
|
RestartServer(std::shared_ptr<AuthMetadataProcessor>()); |
|
|
|
|
ResetStub(); |
|
|
|
|
EchoRequest request; |
|
|
|
|
EchoResponse response; |
|
|
|
@ -608,6 +632,10 @@ class End2endServerTryCancelTest : public End2endTest { |
|
|
|
|
|
|
|
|
|
EXPECT_FALSE(s.ok()); |
|
|
|
|
EXPECT_EQ(grpc::StatusCode::CANCELLED, s.error_code()); |
|
|
|
|
// Make sure that the server interceptors were notified
|
|
|
|
|
if (GetParam().use_interceptors) { |
|
|
|
|
EXPECT_EQ(20, DummyInterceptor::GetNumTimesCancel()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
@ -1005,6 +1033,9 @@ TEST_P(End2endTest, CancelRpcBeforeStart) { |
|
|
|
|
Status s = stub_->Echo(&context, request, &response); |
|
|
|
|
EXPECT_EQ("", response.message()); |
|
|
|
|
EXPECT_EQ(grpc::StatusCode::CANCELLED, s.error_code()); |
|
|
|
|
if (GetParam().use_interceptors) { |
|
|
|
|
EXPECT_EQ(20, DummyInterceptor::GetNumTimesCancel()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Client cancels request stream after sending two messages
|
|
|
|
@ -1025,6 +1056,9 @@ TEST_P(End2endTest, ClientCancelsRequestStream) { |
|
|
|
|
EXPECT_EQ(grpc::StatusCode::CANCELLED, s.error_code()); |
|
|
|
|
|
|
|
|
|
EXPECT_EQ(response.message(), ""); |
|
|
|
|
if (GetParam().use_interceptors) { |
|
|
|
|
EXPECT_EQ(20, DummyInterceptor::GetNumTimesCancel()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Client cancels server stream after sending some messages
|
|
|
|
@ -1057,6 +1091,9 @@ TEST_P(End2endTest, ClientCancelsResponseStream) { |
|
|
|
|
// The final status could be either of CANCELLED or OK depending on
|
|
|
|
|
// who won the race.
|
|
|
|
|
EXPECT_GE(grpc::StatusCode::CANCELLED, s.error_code()); |
|
|
|
|
if (GetParam().use_interceptors) { |
|
|
|
|
EXPECT_EQ(20, DummyInterceptor::GetNumTimesCancel()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Client cancels bidi stream after sending some messages
|
|
|
|
@ -1090,6 +1127,9 @@ TEST_P(End2endTest, ClientCancelsBidi) { |
|
|
|
|
|
|
|
|
|
Status s = stream->Finish(); |
|
|
|
|
EXPECT_EQ(grpc::StatusCode::CANCELLED, s.error_code()); |
|
|
|
|
if (GetParam().use_interceptors) { |
|
|
|
|
EXPECT_EQ(20, DummyInterceptor::GetNumTimesCancel()); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
TEST_P(End2endTest, RpcMaxMessageSize) { |
|
|
|
|