|
|
|
@ -845,6 +845,49 @@ bool InteropClient::DoStatusWithMessage() { |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
bool InteropClient::DoCacheableUnary() { |
|
|
|
|
gpr_log(GPR_DEBUG, "Sending RPC with cacheable response"); |
|
|
|
|
|
|
|
|
|
SimpleRequest request; |
|
|
|
|
request.set_response_size(16); |
|
|
|
|
grpc::string payload(16, '\0'); |
|
|
|
|
request.mutable_payload()->set_body(payload.c_str(), 16); |
|
|
|
|
|
|
|
|
|
// Request 1
|
|
|
|
|
ClientContext context1; |
|
|
|
|
SimpleResponse response1; |
|
|
|
|
context1.set_cacheable(true); |
|
|
|
|
// Add fake user IP since some proxy's (GFE) won't cache requests from
|
|
|
|
|
// localhost.
|
|
|
|
|
context1.AddMetadata("x-user-ip", "1.2.3.4"); |
|
|
|
|
Status s1 = |
|
|
|
|
serviceStub_.Get()->CacheableUnaryCall(&context1, request, &response1); |
|
|
|
|
if (!AssertStatusOk(s1)) { |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
gpr_log(GPR_DEBUG, "response 1 payload: %s", |
|
|
|
|
response1.payload().body().c_str()); |
|
|
|
|
|
|
|
|
|
// Request 2
|
|
|
|
|
ClientContext context2; |
|
|
|
|
SimpleResponse response2; |
|
|
|
|
context2.set_cacheable(true); |
|
|
|
|
context2.AddMetadata("x-user-ip", "1.2.3.4"); |
|
|
|
|
Status s2 = |
|
|
|
|
serviceStub_.Get()->CacheableUnaryCall(&context2, request, &response2); |
|
|
|
|
if (!AssertStatusOk(s2)) { |
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
gpr_log(GPR_DEBUG, "response 1 payload: %s", |
|
|
|
|
response2.payload().body().c_str()); |
|
|
|
|
|
|
|
|
|
// Check that the body is same for both requests. It will be the same if the
|
|
|
|
|
// second response is a cached copy of the first response
|
|
|
|
|
GPR_ASSERT(response2.payload().body() == response1.payload().body()); |
|
|
|
|
|
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
bool InteropClient::DoCustomMetadata() { |
|
|
|
|
const grpc::string kEchoInitialMetadataKey("x-grpc-test-echo-initial"); |
|
|
|
|
const grpc::string kInitialMetadataValue("test_initial_metadata_value"); |
|
|
|
|