aboutsummaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorGravatar Craig Tiller <craig.tiller@gmail.com>2015-04-28 17:09:56 -0700
committerGravatar Craig Tiller <craig.tiller@gmail.com>2015-04-28 17:09:56 -0700
commitc8667056d5a62d00eed33c2a30125e89e17e367c (patch)
tree1d9b7b26b3a5fc23da6dd661e367c4dca4d281dc /test
parent6eda2d7c8e4f0bcdfc3eb0a178bd8824fa66516f (diff)
parent68d615737b5bf968d3fa4bee37125bd81fc4fa1a (diff)
Merge pull request #1367 from yang-g/interop
Add two scenarios in interop test
Diffstat (limited to 'test')
-rw-r--r--test/cpp/interop/client.cc9
-rw-r--r--test/cpp/interop/interop_client.cc44
-rw-r--r--test/cpp/interop/interop_client.h2
3 files changed, 55 insertions, 0 deletions
diff --git a/test/cpp/interop/client.cc b/test/cpp/interop/client.cc
index 072968f7cd..65ce2e9c2a 100644
--- a/test/cpp/interop/client.cc
+++ b/test/cpp/interop/client.cc
@@ -62,6 +62,8 @@ DEFINE_string(test_case, "large_unary",
" streaming with slow client consumer; "
"half_duplex : half-duplex streaming; "
"ping_pong : full-duplex streaming; "
+ "cancel_after_begin : cancel stream after starting it; "
+ "cancel_after_first_response: cancel on first response; "
"service_account_creds : large_unary with service_account auth; "
"compute_engine_creds: large_unary with compute engine auth; "
"jwt_token_creds: large_unary with JWT token auth; "
@@ -95,6 +97,10 @@ int main(int argc, char** argv) {
client.DoHalfDuplex();
} else if (FLAGS_test_case == "ping_pong") {
client.DoPingPong();
+ } else if (FLAGS_test_case == "cancel_after_begin") {
+ client.DoCancelAfterBegin();
+ } else if (FLAGS_test_case == "cancel_after_first_response") {
+ client.DoCancelAfterFirstResponse();
} else if (FLAGS_test_case == "service_account_creds") {
grpc::string json_key = GetServiceAccountJsonKey();
client.DoServiceAccountCreds(json_key, FLAGS_oauth_scope);
@@ -111,6 +117,8 @@ int main(int argc, char** argv) {
client.DoResponseStreaming();
client.DoHalfDuplex();
client.DoPingPong();
+ client.DoCancelAfterBegin();
+ client.DoCancelAfterFirstResponse();
// service_account_creds and jwt_token_creds can only run with ssl.
if (FLAGS_enable_ssl) {
grpc::string json_key = GetServiceAccountJsonKey();
@@ -123,6 +131,7 @@ int main(int argc, char** argv) {
GPR_ERROR,
"Unsupported test case %s. Valid options are all|empty_unary|"
"large_unary|client_streaming|server_streaming|half_duplex|ping_pong|"
+ "cancel_after_begin|cancel_after_first_response|"
"service_account_creds|compute_engine_creds|jwt_token_creds",
FLAGS_test_case.c_str());
ret = 1;
diff --git a/test/cpp/interop/interop_client.cc b/test/cpp/interop/interop_client.cc
index 7f5757d2ba..874510e54f 100644
--- a/test/cpp/interop/interop_client.cc
+++ b/test/cpp/interop/interop_client.cc
@@ -307,5 +307,49 @@ void InteropClient::DoPingPong() {
gpr_log(GPR_INFO, "Ping pong streaming done.");
}
+void InteropClient::DoCancelAfterBegin() {
+ gpr_log(GPR_INFO, "Sending request steaming rpc ...");
+ std::unique_ptr<TestService::Stub> stub(TestService::NewStub(channel_));
+
+ ClientContext context;
+ StreamingInputCallRequest request;
+ StreamingInputCallResponse response;
+
+ std::unique_ptr<ClientWriter<StreamingInputCallRequest>> stream(
+ stub->StreamingInputCall(&context, &response));
+
+ gpr_log(GPR_INFO, "Trying to cancel...");
+ context.TryCancel();
+ Status s = stream->Finish();
+ GPR_ASSERT(s.code() == StatusCode::CANCELLED);
+ gpr_log(GPR_INFO, "Canceling streaming done.");
+}
+
+void InteropClient::DoCancelAfterFirstResponse() {
+ gpr_log(GPR_INFO, "Sending Ping Pong streaming rpc ...");
+ std::unique_ptr<TestService::Stub> stub(TestService::NewStub(channel_));
+
+ ClientContext context;
+ std::unique_ptr<ClientReaderWriter<StreamingOutputCallRequest,
+ StreamingOutputCallResponse>>
+ stream(stub->FullDuplexCall(&context));
+
+ StreamingOutputCallRequest request;
+ request.set_response_type(PayloadType::COMPRESSABLE);
+ ResponseParameters* response_parameter = request.add_response_parameters();
+ response_parameter->set_size(31415);
+ request.mutable_payload()->set_body(grpc::string(27182, '\0'));
+ StreamingOutputCallResponse response;
+ GPR_ASSERT(stream->Write(request));
+ GPR_ASSERT(stream->Read(&response));
+ GPR_ASSERT(response.payload().has_body());
+ GPR_ASSERT(response.payload().body() == grpc::string(31415, '\0'));
+ gpr_log(GPR_INFO, "Trying to cancel...");
+ context.TryCancel();
+
+ Status s = stream->Finish();
+ gpr_log(GPR_INFO, "Canceling pingpong streaming done.");
+}
+
} // namespace testing
} // namespace grpc
diff --git a/test/cpp/interop/interop_client.h b/test/cpp/interop/interop_client.h
index 3161f7f875..d9c895dfd9 100644
--- a/test/cpp/interop/interop_client.h
+++ b/test/cpp/interop/interop_client.h
@@ -57,6 +57,8 @@ class InteropClient {
void DoRequestStreaming();
void DoResponseStreaming();
void DoResponseStreamingWithSlowConsumer();
+ void DoCancelAfterBegin();
+ void DoCancelAfterFirstResponse();
// Auth tests.
// username is a string containing the user email
void DoJwtTokenCreds(const grpc::string& username);