24 #include "absl/flags/flag.h"
35 #include "src/proto/grpc/testing/empty.pb.h"
36 #include "src/proto/grpc/testing/messages.pb.h"
37 #include "src/proto/grpc/testing/test.grpc.pb.h"
42 "Whether to use alts. Enable alts will disable tls.");
43 ABSL_FLAG(
bool, use_tls,
false,
"Whether to use tls.");
45 "User provided credentials type.");
47 ABSL_FLAG(
int32_t, max_send_message_size, -1,
"The maximum send message size.");
66 using grpc::testing::TestService;
73 const auto& client_metadata =
context->client_metadata();
78 if (
iter != client_metadata.end()) {
84 if (
iter != client_metadata.end()) {
92 if (
iter != client_metadata.end()) {
93 iter = client_metadata.find(
"user-agent");
94 if (
iter != client_metadata.end()) {
103 std::unique_ptr<char[]> body(
new char[
size]());
109 const bool compression_expected) {
114 if (compression_expected) {
118 "Expected compression but got uncompressed request from client.");
123 "Failure: Requested compression in a compressable request, but "
124 "compression bit in message flags not set.");
131 "Failure: Didn't requested compression, but compression bit in "
132 "message flags set.");
142 const grpc::testing::Empty* ,
143 grpc::testing::Empty* )
override {
154 response->mutable_payload()->set_body(timestamp.c_str(), timestamp.size());
155 context->AddInitialMetadata(
"cache-control",
"max-age=60, public");
162 if (
request->has_response_compressed()) {
163 const bool compression_requested =
request->response_compressed().value();
165 compression_requested ?
"enabled" :
"disabled", __func__);
166 if (compression_requested) {
174 request->expect_compressed().value())) {
176 "Compressed request expectation not met.");
178 if (
request->response_size() > 0) {
181 "Error creating payload.");
185 if (
request->has_response_status()) {
188 request->response_status().message());
198 bool write_success =
true;
199 for (
int i = 0; write_success &&
i <
request->response_parameters_size();
204 "Error creating payload.");
207 if (
request->response_parameters(
i).has_compressed()) {
210 const bool compression_requested =
211 request->response_parameters(
i).compressed().value();
213 compression_requested ?
"enabled" :
"disabled", __func__);
214 if (!compression_requested) {
219 if ((time_us =
request->response_parameters(
i).interval_us()) > 0) {
239 int aggregated_payload_size = 0;
242 request.expect_compressed().value())) {
244 "Compressed request expectation not met.");
247 aggregated_payload_size +=
request.payload().body().size();
250 response->set_aggregated_payload_size(aggregated_payload_size);
261 bool write_success =
true;
263 if (
request.has_response_status()) {
266 request.response_status().message());
268 if (
request.response_parameters_size() != 0) {
270 response.mutable_payload()->set_body(
273 if ((time_us =
request.response_parameters(0).interval_us()) > 0) {
294 std::vector<StreamingOutputCallRequest> requests;
301 bool write_success =
true;
302 for (
unsigned int i = 0; write_success &&
i < requests.size();
i++) {
304 if (requests[
i].response_parameters_size() == 0) {
306 "Request does not have response parameters.");
308 response.mutable_payload()->set_body(
321 const std::shared_ptr<ServerCredentials>& creds) {
326 const std::shared_ptr<ServerCredentials>& creds,
327 std::unique_ptr<std::vector<std::unique_ptr<ServerBuilderOption>>>
334 const std::shared_ptr<ServerCredentials>& creds,
const int port,
340 const std::shared_ptr<ServerCredentials>& creds,
const int port,
341 ServerStartedCondition* server_started_condition,
342 std::unique_ptr<std::vector<std::unique_ptr<ServerBuilderOption>>>
367 if (server_started_condition) {
368 std::unique_lock<std::mutex> lock(server_started_condition->mutex);
369 server_started_condition->server_started =
true;
370 server_started_condition->condition.notify_all();