| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 | 
// Copyright 2015, Google Inc.// All rights reserved.//// Redistribution and use in source and binary forms, with or without// modification, are permitted provided that the following conditions are// met:////     * Redistributions of source code must retain the above copyright// notice, this list of conditions and the following disclaimer.//     * Redistributions in binary form must reproduce the above// copyright notice, this list of conditions and the following disclaimer// in the documentation and/or other materials provided with the// distribution.//     * Neither the name of Google Inc. nor the names of its// contributors may be used to endorse or promote products derived from// this software without specific prior written permission.//// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.// An integration test service that covers all the method signature permutations// of unary/streaming requests/responses.syntax = "proto3";package grpc.testing;enum PayloadType {  // Compressable text format.  COMPRESSABLE = 0;  // Uncompressable binary format.  UNCOMPRESSABLE = 1;  // Randomly chosen from all other formats defined in this enum.  RANDOM = 2;}message StatsRequest {  // run number  int32 test_num = 1;}message ServerStats {  // wall clock time  double time_elapsed = 1;  // user time used by the server process and threads  double time_user = 2;  // server time used by the server process and all threads  double time_system = 3;}message Payload {  // The type of data in body.  PayloadType type = 1;  // Primary contents of payload.  bytes body = 2;}message HistogramData {  repeated uint32 bucket = 1;  double min_seen = 2;  double max_seen = 3;  double sum = 4;  double sum_of_squares = 5;  double count = 6;}enum ClientType {  SYNCHRONOUS_CLIENT = 0;  ASYNC_CLIENT = 1;}enum ServerType {  SYNCHRONOUS_SERVER = 0;  ASYNC_SERVER = 1;}enum RpcType {  UNARY = 0;  STREAMING = 1;}enum LoadType {  CLOSED_LOOP = 0;  POISSON = 1;  UNIFORM = 2;  DETERMINISTIC = 3;  PARETO = 4;}message PoissonParams {  double offered_load = 1;}message UniformParams {  double interarrival_lo = 1;  double interarrival_hi = 2;}message DeterministicParams {  double offered_load = 1;}message ParetoParams {  double interarrival_base = 1;  double alpha = 2;}message LoadParams {  oneof load {    PoissonParams poisson = 1;    UniformParams uniform = 2;    DeterministicParams determ = 3;    ParetoParams pareto = 4;  };}message ClientConfig {  repeated string server_targets = 1;  ClientType client_type = 2;  bool enable_ssl = 3;  int32 outstanding_rpcs_per_channel = 4;  int32 client_channels = 5;  int32 payload_size = 6;  // only for async client:  int32 async_client_threads = 7;  RpcType rpc_type = 8;  string host = 9;  LoadType load_type = 10;  LoadParams load_params = 11;}// Request current statsmessage Mark {}message ClientArgs {  oneof argtype {    ClientConfig setup = 1;    Mark mark = 2;  }}message ClientStats {  HistogramData latencies = 1;  double time_elapsed = 2;  double time_user = 3;  double time_system = 4;}message ClientStatus {  ClientStats stats = 1;}message ServerConfig {  ServerType server_type = 1;  int32 threads = 2;  bool enable_ssl = 3;  string host = 4;}message ServerArgs {  oneof argtype {    ServerConfig setup = 1;    Mark mark = 2;  }}message ServerStatus {  ServerStats stats = 1;  int32 port = 2;}message SimpleRequest {  // Desired payload type in the response from the server.  // If response_type is RANDOM, server randomly chooses one from other formats.  PayloadType response_type = 1;  // Desired payload size in the response from the server.  // If response_type is COMPRESSABLE, this denotes the size before compression.  int32 response_size = 2;  // Optional input payload sent along with the request.  Payload payload = 3;}message SimpleResponse {  Payload payload = 1;}service TestService {  // One request followed by one response.  // The server returns the client payload as-is.  rpc UnaryCall(SimpleRequest) returns (SimpleResponse);  // One request followed by one response.  // The server returns the client payload as-is.  rpc StreamingCall(stream SimpleRequest) returns (stream SimpleResponse);}service Worker {  // Start test with specified workload  rpc RunTest(stream ClientArgs) returns (stream ClientStatus);  // Start test with specified workload  rpc RunServer(stream ServerArgs) returns (stream ServerStatus);}
 |