|  | @@ -84,6 +84,16 @@ static class InitializeStuff {
 | 
	
		
			
				|  |  |   * FIXTURES
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +static void ApplyCommonServerBuilderConfig(ServerBuilder* b) {
 | 
	
		
			
				|  |  | +  b->SetMaxReceiveMessageSize(INT_MAX);
 | 
	
		
			
				|  |  | +  b->SetMaxSendMessageSize(INT_MAX);
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +static void ApplyCommonChannelArguments(ChannelArguments* c) {
 | 
	
		
			
				|  |  | +  c->SetInt(GRPC_ARG_MAX_RECEIVE_MESSAGE_LENGTH, INT_MAX);
 | 
	
		
			
				|  |  | +  c->SetInt(GRPC_ARG_MAX_SEND_MESSAGE_LENGTH, INT_MAX);
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  class FullstackFixture {
 | 
	
		
			
				|  |  |   public:
 | 
	
		
			
				|  |  |    FullstackFixture(Service* service, const grpc::string& address) {
 | 
	
	
		
			
				|  | @@ -91,8 +101,11 @@ class FullstackFixture {
 | 
	
		
			
				|  |  |      b.AddListeningPort(address, InsecureServerCredentials());
 | 
	
		
			
				|  |  |      cq_ = b.AddCompletionQueue(true);
 | 
	
		
			
				|  |  |      b.RegisterService(service);
 | 
	
		
			
				|  |  | +    ApplyCommonServerBuilderConfig(&b);
 | 
	
		
			
				|  |  |      server_ = b.BuildAndStart();
 | 
	
		
			
				|  |  | -    channel_ = CreateChannel(address, InsecureChannelCredentials());
 | 
	
		
			
				|  |  | +    ChannelArguments args;
 | 
	
		
			
				|  |  | +    ApplyCommonChannelArguments(&args);
 | 
	
		
			
				|  |  | +    channel_ = CreateCustomChannel(address, InsecureChannelCredentials(), args);
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    virtual ~FullstackFixture() {
 | 
	
	
		
			
				|  | @@ -146,6 +159,7 @@ class EndpointPairFixture {
 | 
	
		
			
				|  |  |      ServerBuilder b;
 | 
	
		
			
				|  |  |      cq_ = b.AddCompletionQueue(true);
 | 
	
		
			
				|  |  |      b.RegisterService(service);
 | 
	
		
			
				|  |  | +    ApplyCommonServerBuilderConfig(&b);
 | 
	
		
			
				|  |  |      server_ = b.BuildAndStart();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      grpc_exec_ctx exec_ctx = GRPC_EXEC_CTX_INIT;
 | 
	
	
		
			
				|  | @@ -174,6 +188,7 @@ class EndpointPairFixture {
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  |        ChannelArguments args;
 | 
	
		
			
				|  |  |        args.SetString(GRPC_ARG_DEFAULT_AUTHORITY, "test.authority");
 | 
	
		
			
				|  |  | +      ApplyCommonChannelArguments(&args);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |        grpc_channel_args c_args = args.c_channel_args();
 | 
	
		
			
				|  |  |        grpc_transport* transport =
 | 
	
	
		
			
				|  | @@ -343,6 +358,12 @@ static void BM_UnaryPingPong(benchmark::State& state) {
 | 
	
		
			
				|  |  |    EchoRequest send_request;
 | 
	
		
			
				|  |  |    EchoResponse send_response;
 | 
	
		
			
				|  |  |    EchoResponse recv_response;
 | 
	
		
			
				|  |  | +  if (state.range(0) > 0) {
 | 
	
		
			
				|  |  | +    send_request.set_message(std::string(state.range(0), 'a'));
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +  if (state.range(1) > 0) {
 | 
	
		
			
				|  |  | +    send_response.set_message(std::string(state.range(1), 'a'));
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  |    Status recv_status;
 | 
	
		
			
				|  |  |    struct ServerEnv {
 | 
	
		
			
				|  |  |      ServerContext ctx;
 | 
	
	
		
			
				|  | @@ -365,6 +386,7 @@ static void BM_UnaryPingPong(benchmark::State& state) {
 | 
	
		
			
				|  |  |    std::unique_ptr<EchoTestService::Stub> stub(
 | 
	
		
			
				|  |  |        EchoTestService::NewStub(fixture->channel()));
 | 
	
		
			
				|  |  |    while (state.KeepRunning()) {
 | 
	
		
			
				|  |  | +    recv_response.Clear();
 | 
	
		
			
				|  |  |      ClientContext cli_ctx;
 | 
	
		
			
				|  |  |      ClientContextMutator cli_ctx_mut(&cli_ctx);
 | 
	
		
			
				|  |  |      std::unique_ptr<ClientAsyncResponseReader<EchoResponse>> response_reader(
 | 
	
	
		
			
				|  | @@ -396,55 +418,81 @@ static void BM_UnaryPingPong(benchmark::State& state) {
 | 
	
		
			
				|  |  |    fixture.reset();
 | 
	
		
			
				|  |  |    server_env[0]->~ServerEnv();
 | 
	
		
			
				|  |  |    server_env[1]->~ServerEnv();
 | 
	
		
			
				|  |  | +  state.SetBytesProcessed(state.range(0) * state.iterations() +
 | 
	
		
			
				|  |  | +                          state.range(1) * state.iterations());
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  /*******************************************************************************
 | 
	
		
			
				|  |  |   * CONFIGURATIONS
 | 
	
		
			
				|  |  |   */
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -BENCHMARK_TEMPLATE(BM_UnaryPingPong, TCP, NoOpMutator, NoOpMutator);
 | 
	
		
			
				|  |  | -BENCHMARK_TEMPLATE(BM_UnaryPingPong, UDS, NoOpMutator, NoOpMutator);
 | 
	
		
			
				|  |  | -BENCHMARK_TEMPLATE(BM_UnaryPingPong, SockPair, NoOpMutator, NoOpMutator);
 | 
	
		
			
				|  |  | -BENCHMARK_TEMPLATE(BM_UnaryPingPong, InProcessCHTTP2, NoOpMutator, NoOpMutator);
 | 
	
		
			
				|  |  | +static void SweepSizesArgs(benchmark::internal::Benchmark* b) {
 | 
	
		
			
				|  |  | +  b->Args({0, 0});
 | 
	
		
			
				|  |  | +  for (int i = 1; i <= 128 * 1024 * 1024; i *= 8) {
 | 
	
		
			
				|  |  | +    b->Args({i, 0});
 | 
	
		
			
				|  |  | +    b->Args({0, i});
 | 
	
		
			
				|  |  | +    b->Args({i, i});
 | 
	
		
			
				|  |  | +  }
 | 
	
		
			
				|  |  | +}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +BENCHMARK_TEMPLATE(BM_UnaryPingPong, TCP, NoOpMutator, NoOpMutator)
 | 
	
		
			
				|  |  | +    ->Apply(SweepSizesArgs);
 | 
	
		
			
				|  |  | +BENCHMARK_TEMPLATE(BM_UnaryPingPong, UDS, NoOpMutator, NoOpMutator)
 | 
	
		
			
				|  |  | +    ->Args({0, 0});
 | 
	
		
			
				|  |  | +BENCHMARK_TEMPLATE(BM_UnaryPingPong, SockPair, NoOpMutator, NoOpMutator)
 | 
	
		
			
				|  |  | +    ->Args({0, 0});
 | 
	
		
			
				|  |  | +BENCHMARK_TEMPLATE(BM_UnaryPingPong, InProcessCHTTP2, NoOpMutator, NoOpMutator)
 | 
	
		
			
				|  |  | +    ->Apply(SweepSizesArgs);
 | 
	
		
			
				|  |  |  BENCHMARK_TEMPLATE(BM_UnaryPingPong, InProcessCHTTP2,
 | 
	
		
			
				|  |  | -                   Client_AddMetadata<RandomBinaryMetadata<10>, 1>,
 | 
	
		
			
				|  |  | -                   NoOpMutator);
 | 
	
		
			
				|  |  | +                   Client_AddMetadata<RandomBinaryMetadata<10>, 1>, NoOpMutator)
 | 
	
		
			
				|  |  | +    ->Args({0, 0});
 | 
	
		
			
				|  |  |  BENCHMARK_TEMPLATE(BM_UnaryPingPong, InProcessCHTTP2,
 | 
	
		
			
				|  |  | -                   Client_AddMetadata<RandomBinaryMetadata<31>, 1>,
 | 
	
		
			
				|  |  | -                   NoOpMutator);
 | 
	
		
			
				|  |  | +                   Client_AddMetadata<RandomBinaryMetadata<31>, 1>, NoOpMutator)
 | 
	
		
			
				|  |  | +    ->Args({0, 0});
 | 
	
		
			
				|  |  |  BENCHMARK_TEMPLATE(BM_UnaryPingPong, InProcessCHTTP2,
 | 
	
		
			
				|  |  |                     Client_AddMetadata<RandomBinaryMetadata<100>, 1>,
 | 
	
		
			
				|  |  | -                   NoOpMutator);
 | 
	
		
			
				|  |  | +                   NoOpMutator)
 | 
	
		
			
				|  |  | +    ->Args({0, 0});
 | 
	
		
			
				|  |  |  BENCHMARK_TEMPLATE(BM_UnaryPingPong, InProcessCHTTP2,
 | 
	
		
			
				|  |  | -                   Client_AddMetadata<RandomBinaryMetadata<10>, 2>,
 | 
	
		
			
				|  |  | -                   NoOpMutator);
 | 
	
		
			
				|  |  | +                   Client_AddMetadata<RandomBinaryMetadata<10>, 2>, NoOpMutator)
 | 
	
		
			
				|  |  | +    ->Args({0, 0});
 | 
	
		
			
				|  |  |  BENCHMARK_TEMPLATE(BM_UnaryPingPong, InProcessCHTTP2,
 | 
	
		
			
				|  |  | -                   Client_AddMetadata<RandomBinaryMetadata<31>, 2>,
 | 
	
		
			
				|  |  | -                   NoOpMutator);
 | 
	
		
			
				|  |  | +                   Client_AddMetadata<RandomBinaryMetadata<31>, 2>, NoOpMutator)
 | 
	
		
			
				|  |  | +    ->Args({0, 0});
 | 
	
		
			
				|  |  |  BENCHMARK_TEMPLATE(BM_UnaryPingPong, InProcessCHTTP2,
 | 
	
		
			
				|  |  |                     Client_AddMetadata<RandomBinaryMetadata<100>, 2>,
 | 
	
		
			
				|  |  | -                   NoOpMutator);
 | 
	
		
			
				|  |  | +                   NoOpMutator)
 | 
	
		
			
				|  |  | +    ->Args({0, 0});
 | 
	
		
			
				|  |  |  BENCHMARK_TEMPLATE(BM_UnaryPingPong, InProcessCHTTP2, NoOpMutator,
 | 
	
		
			
				|  |  | -                   Server_AddInitialMetadata<RandomBinaryMetadata<10>, 1>);
 | 
	
		
			
				|  |  | +                   Server_AddInitialMetadata<RandomBinaryMetadata<10>, 1>)
 | 
	
		
			
				|  |  | +    ->Args({0, 0});
 | 
	
		
			
				|  |  |  BENCHMARK_TEMPLATE(BM_UnaryPingPong, InProcessCHTTP2, NoOpMutator,
 | 
	
		
			
				|  |  | -                   Server_AddInitialMetadata<RandomBinaryMetadata<31>, 1>);
 | 
	
		
			
				|  |  | +                   Server_AddInitialMetadata<RandomBinaryMetadata<31>, 1>)
 | 
	
		
			
				|  |  | +    ->Args({0, 0});
 | 
	
		
			
				|  |  |  BENCHMARK_TEMPLATE(BM_UnaryPingPong, InProcessCHTTP2, NoOpMutator,
 | 
	
		
			
				|  |  | -                   Server_AddInitialMetadata<RandomBinaryMetadata<100>, 1>);
 | 
	
		
			
				|  |  | +                   Server_AddInitialMetadata<RandomBinaryMetadata<100>, 1>)
 | 
	
		
			
				|  |  | +    ->Args({0, 0});
 | 
	
		
			
				|  |  |  BENCHMARK_TEMPLATE(BM_UnaryPingPong, InProcessCHTTP2,
 | 
	
		
			
				|  |  | -                   Client_AddMetadata<RandomAsciiMetadata<10>, 1>, NoOpMutator);
 | 
	
		
			
				|  |  | +                   Client_AddMetadata<RandomAsciiMetadata<10>, 1>, NoOpMutator)
 | 
	
		
			
				|  |  | +    ->Args({0, 0});
 | 
	
		
			
				|  |  |  BENCHMARK_TEMPLATE(BM_UnaryPingPong, InProcessCHTTP2,
 | 
	
		
			
				|  |  | -                   Client_AddMetadata<RandomAsciiMetadata<31>, 1>, NoOpMutator);
 | 
	
		
			
				|  |  | +                   Client_AddMetadata<RandomAsciiMetadata<31>, 1>, NoOpMutator)
 | 
	
		
			
				|  |  | +    ->Args({0, 0});
 | 
	
		
			
				|  |  |  BENCHMARK_TEMPLATE(BM_UnaryPingPong, InProcessCHTTP2,
 | 
	
		
			
				|  |  | -                   Client_AddMetadata<RandomAsciiMetadata<100>, 1>,
 | 
	
		
			
				|  |  | -                   NoOpMutator);
 | 
	
		
			
				|  |  | +                   Client_AddMetadata<RandomAsciiMetadata<100>, 1>, NoOpMutator)
 | 
	
		
			
				|  |  | +    ->Args({0, 0});
 | 
	
		
			
				|  |  |  BENCHMARK_TEMPLATE(BM_UnaryPingPong, InProcessCHTTP2, NoOpMutator,
 | 
	
		
			
				|  |  | -                   Server_AddInitialMetadata<RandomAsciiMetadata<10>, 1>);
 | 
	
		
			
				|  |  | +                   Server_AddInitialMetadata<RandomAsciiMetadata<10>, 1>)
 | 
	
		
			
				|  |  | +    ->Args({0, 0});
 | 
	
		
			
				|  |  |  BENCHMARK_TEMPLATE(BM_UnaryPingPong, InProcessCHTTP2, NoOpMutator,
 | 
	
		
			
				|  |  | -                   Server_AddInitialMetadata<RandomAsciiMetadata<31>, 1>);
 | 
	
		
			
				|  |  | +                   Server_AddInitialMetadata<RandomAsciiMetadata<31>, 1>)
 | 
	
		
			
				|  |  | +    ->Args({0, 0});
 | 
	
		
			
				|  |  |  BENCHMARK_TEMPLATE(BM_UnaryPingPong, InProcessCHTTP2, NoOpMutator,
 | 
	
		
			
				|  |  | -                   Server_AddInitialMetadata<RandomAsciiMetadata<100>, 1>);
 | 
	
		
			
				|  |  | +                   Server_AddInitialMetadata<RandomAsciiMetadata<100>, 1>)
 | 
	
		
			
				|  |  | +    ->Args({0, 0});
 | 
	
		
			
				|  |  |  BENCHMARK_TEMPLATE(BM_UnaryPingPong, InProcessCHTTP2, NoOpMutator,
 | 
	
		
			
				|  |  | -                   Server_AddInitialMetadata<RandomAsciiMetadata<10>, 100>);
 | 
	
		
			
				|  |  | +                   Server_AddInitialMetadata<RandomAsciiMetadata<10>, 100>)
 | 
	
		
			
				|  |  | +    ->Args({0, 0});
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  }  // namespace testing
 | 
	
		
			
				|  |  |  }  // namespace grpc
 |