|
|
|
@ -82,8 +82,46 @@ CompressionType GetInteropCompressionTypeFromCompressionAlgorithm( |
|
|
|
|
} |
|
|
|
|
} // namespace
|
|
|
|
|
|
|
|
|
|
InteropClient::ServiceStub::ServiceStub(std::shared_ptr<Channel> channel, |
|
|
|
|
bool new_stub_every_call) |
|
|
|
|
: channel_(channel), new_stub_every_call_(new_stub_every_call) { |
|
|
|
|
// If new_stub_every_call is false, then this is our chance to initialize
|
|
|
|
|
// stub_. (see Get())
|
|
|
|
|
if (!new_stub_every_call) { |
|
|
|
|
stub_ = TestService::NewStub(channel); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
TestService::Stub* InteropClient::ServiceStub::Get() { |
|
|
|
|
if (new_stub_every_call_) { |
|
|
|
|
stub_ = TestService::NewStub(channel_); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return stub_.get(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void InteropClient::ServiceStub::Reset(std::shared_ptr<Channel> channel) { |
|
|
|
|
channel_ = channel; |
|
|
|
|
|
|
|
|
|
// Update stub_ as well. Note: If new_stub_every_call_ is true, we can set
|
|
|
|
|
// stub_ to nullptr since the next call to Get() will create a new stub
|
|
|
|
|
if (new_stub_every_call_) { |
|
|
|
|
stub_.reset(nullptr); |
|
|
|
|
} else { |
|
|
|
|
stub_ = TestService::NewStub(channel); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void InteropClient::Reset(std::shared_ptr<Channel> channel) { |
|
|
|
|
serviceStub_.Reset(channel); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
InteropClient::InteropClient(std::shared_ptr<Channel> channel) |
|
|
|
|
: channel_(channel), stub_(TestService::NewStub(channel)) {} |
|
|
|
|
: serviceStub_(channel, true) {} |
|
|
|
|
|
|
|
|
|
InteropClient::InteropClient(std::shared_ptr<Channel> channel, |
|
|
|
|
bool new_stub_every_test_case) |
|
|
|
|
: serviceStub_(channel, new_stub_every_test_case) {} |
|
|
|
|
|
|
|
|
|
void InteropClient::AssertOkOrPrintErrorStatus(const Status& s) { |
|
|
|
|
if (s.ok()) { |
|
|
|
@ -101,7 +139,7 @@ void InteropClient::DoEmpty() { |
|
|
|
|
Empty response = Empty::default_instance(); |
|
|
|
|
ClientContext context; |
|
|
|
|
|
|
|
|
|
Status s = stub_->EmptyCall(&context, request, &response); |
|
|
|
|
Status s = serviceStub_.Get()->EmptyCall(&context, request, &response); |
|
|
|
|
AssertOkOrPrintErrorStatus(s); |
|
|
|
|
|
|
|
|
|
gpr_log(GPR_INFO, "Empty rpc done."); |
|
|
|
@ -110,7 +148,6 @@ void InteropClient::DoEmpty() { |
|
|
|
|
// Shared code to set large payload, make rpc and check response payload.
|
|
|
|
|
void InteropClient::PerformLargeUnary(SimpleRequest* request, |
|
|
|
|
SimpleResponse* response) { |
|
|
|
|
|
|
|
|
|
ClientContext context; |
|
|
|
|
InteropClientContextInspector inspector(context); |
|
|
|
|
// If the request doesn't already specify the response type, default to
|
|
|
|
@ -119,7 +156,7 @@ void InteropClient::PerformLargeUnary(SimpleRequest* request, |
|
|
|
|
grpc::string payload(kLargeRequestSize, '\0'); |
|
|
|
|
request->mutable_payload()->set_body(payload.c_str(), kLargeRequestSize); |
|
|
|
|
|
|
|
|
|
Status s = stub_->UnaryCall(&context, *request, response); |
|
|
|
|
Status s = serviceStub_.Get()->UnaryCall(&context, *request, response); |
|
|
|
|
|
|
|
|
|
// Compression related checks.
|
|
|
|
|
GPR_ASSERT(request->response_compression() == |
|
|
|
@ -188,7 +225,7 @@ void InteropClient::DoOauth2AuthToken(const grpc::string& username, |
|
|
|
|
|
|
|
|
|
ClientContext context; |
|
|
|
|
|
|
|
|
|
Status s = stub_->UnaryCall(&context, request, &response); |
|
|
|
|
Status s = serviceStub_.Get()->UnaryCall(&context, request, &response); |
|
|
|
|
|
|
|
|
|
AssertOkOrPrintErrorStatus(s); |
|
|
|
|
GPR_ASSERT(!response.username().empty()); |
|
|
|
@ -212,7 +249,7 @@ void InteropClient::DoPerRpcCreds(const grpc::string& json_key) { |
|
|
|
|
|
|
|
|
|
context.set_credentials(creds); |
|
|
|
|
|
|
|
|
|
Status s = stub_->UnaryCall(&context, request, &response); |
|
|
|
|
Status s = serviceStub_.Get()->UnaryCall(&context, request, &response); |
|
|
|
|
|
|
|
|
|
AssertOkOrPrintErrorStatus(s); |
|
|
|
|
GPR_ASSERT(!response.username().empty()); |
|
|
|
@ -271,7 +308,7 @@ void InteropClient::DoRequestStreaming() { |
|
|
|
|
StreamingInputCallResponse response; |
|
|
|
|
|
|
|
|
|
std::unique_ptr<ClientWriter<StreamingInputCallRequest>> stream( |
|
|
|
|
stub_->StreamingInputCall(&context, &response)); |
|
|
|
|
serviceStub_.Get()->StreamingInputCall(&context, &response)); |
|
|
|
|
|
|
|
|
|
int aggregated_payload_size = 0; |
|
|
|
|
for (unsigned int i = 0; i < request_stream_sizes.size(); ++i) { |
|
|
|
@ -299,7 +336,7 @@ void InteropClient::DoResponseStreaming() { |
|
|
|
|
} |
|
|
|
|
StreamingOutputCallResponse response; |
|
|
|
|
std::unique_ptr<ClientReader<StreamingOutputCallResponse>> stream( |
|
|
|
|
stub_->StreamingOutputCall(&context, request)); |
|
|
|
|
serviceStub_.Get()->StreamingOutputCall(&context, request)); |
|
|
|
|
|
|
|
|
|
unsigned int i = 0; |
|
|
|
|
while (stream->Read(&response)) { |
|
|
|
@ -314,7 +351,6 @@ void InteropClient::DoResponseStreaming() { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
void InteropClient::DoResponseCompressedStreaming() { |
|
|
|
|
|
|
|
|
|
const CompressionType compression_types[] = {NONE, GZIP, DEFLATE}; |
|
|
|
|
const PayloadType payload_types[] = {COMPRESSABLE, UNCOMPRESSABLE, RANDOM}; |
|
|
|
|
for (size_t i = 0; i < GPR_ARRAY_SIZE(payload_types); i++) { |
|
|
|
@ -341,7 +377,7 @@ void InteropClient::DoResponseCompressedStreaming() { |
|
|
|
|
StreamingOutputCallResponse response; |
|
|
|
|
|
|
|
|
|
std::unique_ptr<ClientReader<StreamingOutputCallResponse>> stream( |
|
|
|
|
stub_->StreamingOutputCall(&context, request)); |
|
|
|
|
serviceStub_.Get()->StreamingOutputCall(&context, request)); |
|
|
|
|
|
|
|
|
|
size_t k = 0; |
|
|
|
|
while (stream->Read(&response)) { |
|
|
|
@ -404,7 +440,7 @@ void InteropClient::DoResponseStreamingWithSlowConsumer() { |
|
|
|
|
} |
|
|
|
|
StreamingOutputCallResponse response; |
|
|
|
|
std::unique_ptr<ClientReader<StreamingOutputCallResponse>> stream( |
|
|
|
|
stub_->StreamingOutputCall(&context, request)); |
|
|
|
|
serviceStub_.Get()->StreamingOutputCall(&context, request)); |
|
|
|
|
|
|
|
|
|
int i = 0; |
|
|
|
|
while (stream->Read(&response)) { |
|
|
|
@ -427,7 +463,7 @@ void InteropClient::DoHalfDuplex() { |
|
|
|
|
ClientContext context; |
|
|
|
|
std::unique_ptr<ClientReaderWriter<StreamingOutputCallRequest, |
|
|
|
|
StreamingOutputCallResponse>> |
|
|
|
|
stream(stub_->HalfDuplexCall(&context)); |
|
|
|
|
stream(serviceStub_.Get()->HalfDuplexCall(&context)); |
|
|
|
|
|
|
|
|
|
StreamingOutputCallRequest request; |
|
|
|
|
ResponseParameters* response_parameter = request.add_response_parameters(); |
|
|
|
@ -456,7 +492,7 @@ void InteropClient::DoPingPong() { |
|
|
|
|
ClientContext context; |
|
|
|
|
std::unique_ptr<ClientReaderWriter<StreamingOutputCallRequest, |
|
|
|
|
StreamingOutputCallResponse>> |
|
|
|
|
stream(stub_->FullDuplexCall(&context)); |
|
|
|
|
stream(serviceStub_.Get()->FullDuplexCall(&context)); |
|
|
|
|
|
|
|
|
|
StreamingOutputCallRequest request; |
|
|
|
|
request.set_response_type(PayloadType::COMPRESSABLE); |
|
|
|
@ -487,7 +523,7 @@ void InteropClient::DoCancelAfterBegin() { |
|
|
|
|
StreamingInputCallResponse response; |
|
|
|
|
|
|
|
|
|
std::unique_ptr<ClientWriter<StreamingInputCallRequest>> stream( |
|
|
|
|
stub_->StreamingInputCall(&context, &response)); |
|
|
|
|
serviceStub_.Get()->StreamingInputCall(&context, &response)); |
|
|
|
|
|
|
|
|
|
gpr_log(GPR_INFO, "Trying to cancel..."); |
|
|
|
|
context.TryCancel(); |
|
|
|
@ -502,7 +538,7 @@ void InteropClient::DoCancelAfterFirstResponse() { |
|
|
|
|
ClientContext context; |
|
|
|
|
std::unique_ptr<ClientReaderWriter<StreamingOutputCallRequest, |
|
|
|
|
StreamingOutputCallResponse>> |
|
|
|
|
stream(stub_->FullDuplexCall(&context)); |
|
|
|
|
stream(serviceStub_.Get()->FullDuplexCall(&context)); |
|
|
|
|
|
|
|
|
|
StreamingOutputCallRequest request; |
|
|
|
|
request.set_response_type(PayloadType::COMPRESSABLE); |
|
|
|
@ -529,7 +565,7 @@ void InteropClient::DoTimeoutOnSleepingServer() { |
|
|
|
|
context.set_deadline(deadline); |
|
|
|
|
std::unique_ptr<ClientReaderWriter<StreamingOutputCallRequest, |
|
|
|
|
StreamingOutputCallResponse>> |
|
|
|
|
stream(stub_->FullDuplexCall(&context)); |
|
|
|
|
stream(serviceStub_.Get()->FullDuplexCall(&context)); |
|
|
|
|
|
|
|
|
|
StreamingOutputCallRequest request; |
|
|
|
|
request.mutable_payload()->set_body(grpc::string(27182, '\0')); |
|
|
|
@ -546,7 +582,7 @@ void InteropClient::DoEmptyStream() { |
|
|
|
|
ClientContext context; |
|
|
|
|
std::unique_ptr<ClientReaderWriter<StreamingOutputCallRequest, |
|
|
|
|
StreamingOutputCallResponse>> |
|
|
|
|
stream(stub_->FullDuplexCall(&context)); |
|
|
|
|
stream(serviceStub_.Get()->FullDuplexCall(&context)); |
|
|
|
|
stream->WritesDone(); |
|
|
|
|
StreamingOutputCallResponse response; |
|
|
|
|
GPR_ASSERT(stream->Read(&response) == false); |
|
|
|
@ -566,7 +602,7 @@ void InteropClient::DoStatusWithMessage() { |
|
|
|
|
grpc::string test_msg = "This is a test message"; |
|
|
|
|
requested_status->set_message(test_msg); |
|
|
|
|
|
|
|
|
|
Status s = stub_->UnaryCall(&context, request, &response); |
|
|
|
|
Status s = serviceStub_.Get()->UnaryCall(&context, request, &response); |
|
|
|
|
|
|
|
|
|
GPR_ASSERT(s.error_code() == grpc::StatusCode::UNKNOWN); |
|
|
|
|
GPR_ASSERT(s.error_message() == test_msg); |
|
|
|
|