Get desktop application:
View/edit binary Protocol Buffers messages
Two-sided unbounded streaming between server to client Both sides send the content of their own choice to the other
Repeated sequence of one request followed by one response. Should be called streaming ping-pong The server returns the client payload as-is on each response
Single-sided unbounded streaming from client to server The server returns the client payload as-is once the client does WritesDone
Single-sided unbounded streaming from server to client The server repeatedly returns the client payload as-is
One request followed by one response. The server returns the client payload as-is.
Hook service. Used to keep Kubernetes from shutting the pod down.
Clears the return status. Incoming calls to Hook will "hang"
Sends a request that will "hang" until the return status is set by a call to a SetReturnStatus
Sets a return status for pending and upcoming calls to Hook
Status that will be return to callers of the Hook method
A service used to obtain stats for verifying LB behavior.
Gets the accumulated stats for RPCs sent by a test client.
Request for retrieving a test client's accumulated stats.
(message has no fields)
Accumulated stats for RPCs sent by a test client.
The total number of RPCs have ever issued for each type. Deprecated: use stats_per_method.rpcs_started instead.
The total number of RPCs have ever completed successfully for each type. Deprecated: use stats_per_method.result instead.
The total number of RPCs have ever failed for each type. Deprecated: use stats_per_method.result instead.
Per-method RPC statistics. The key is the RpcType in string form; e.g. 'EMPTY_CALL' or 'UNARY_CALL'
Gets the backend distribution for RPCs sent by a test client.
Request stats for the next num_rpcs sent by client.
If num_rpcs have not completed within timeout_sec, return partial results.
Response header + trailer metadata entries we want the values of. Matching of the keys is case-insensitive as per rfc7540#section-8.1.2 * (asterisk) is a special value that will return all metadata entries
The number of completed RPCs for each peer.
The number of RPCs that failed to record a remote peer.
All the metadata of all RPCs for each peer.
A service used to control reconnect server.
For reconnect interop test only. Client tells server what reconnection parameters it used.
For reconnect interop test only. Server tells client whether its reconnects are following the spec and the reconnect backoffs it saw.
Report results of a QPS test benchmark scenario.
Results of a single benchmark scenario.
Inputs used to run the scenario.
Histograms from all clients merged into one histogram.
Client stats for each client
Server stats for each server
Number of cores available to each server
An after-the-fact computed summary
Information on success or failure of each worker
Number of failed requests (one row per status code seen)
A simple service to test the various types of RPCs and experiment with performance with various types of payload.
One request followed by one response. Response has cache control headers set such that a caching HTTP proxy (such as GFE) can satisfy subsequent requests.
One empty request followed by one empty response.
A sequence of requests with each request served by the server immediately. As one request could lead to multiple responses, this interface demonstrates the idea of full duplexing.
A sequence of requests followed by a sequence of responses. The server buffers all the client requests and then serves them in order. A stream of responses are returned to the client when the server starts with first request.
A sequence of requests followed by one response (streamed upload). The server returns the aggregated size of client payload as the result.
Client-streaming request.
Optional input payload sent along with the request.
Whether the server should expect this request to be compressed. This field is "nullable" in order to interoperate seamlessly with servers not able to implement the full compression tests by introspecting the call to verify the request's compression status.
Client-streaming response.
Aggregated size of payloads received from the client.
One request followed by a sequence of responses (streamed download). The server returns the payload with client desired type and sizes.
One request followed by one response.
The test server will not implement this method. It will be used to test the behavior when clients call unimplemented methods.
A simple service NOT implemented at servers so clients can test for that case.
A call that no server should implement
Just return the core count - unary call
(message has no fields)
Number of cores available on the server
Quit this worker
Start client with specified workload. First request sent specifies the ClientConfig followed by ClientStatus response. After that, a "Mark" can be sent anytime to request the latest stats. Closing the stream will initiate shutdown of the test client and once the shutdown has finished, the OK status is sent to terminate this RPC.
Start server with specified workload. First request sent specifies the ServerConfig followed by ServerStatus response. After that, a "Mark" can be sent anytime to request the latest stats. Closing the stream will initiate shutdown of the test server and once the shutdown has finished, the OK status is sent to terminate this RPC.
the port bound by the server
Number of cores available to the server
A service to dynamically update the configuration of an xDS test client.
Update the tes client's configuration.
Configurations for a test client.
The types of RPCs the client sends.
The collection of custom metadata to be attached to RPCs sent by the client.
The deadline to use, in seconds, for all RPCs. If unset or zero, the client will use the default from the command-line.
Response for updating a test client's configuration.
(message has no fields)
A service to remotely control health status of an xDS test server.
Server port to listen to
(message has no fields)
TODO(dgq): Go back to using well-known types once https://github.com/grpc/grpc/issues/6980 has been fixed. import "google/protobuf/wrappers.proto";
Used in: , ,
The bool value.
Used in:
Used in: ,
Used in: ,
List of targets to connect to. At least one target needs to be specified.
How many concurrent RPCs to start for each channel. For synchronous client, use a separate thread for each outstanding RPC.
Number of independent client channels to create. i-th channel will connect to server_target[i % server_targets.size()]
Only for async client. Number of threads to use to start/manage RPCs.
The requested load for the entire client (aggregated over all the threads).
Specify the cores we should run the client on, if desired
If we use an OTHER_CLIENT client_type, this string gives more detail
Number of threads that share each completion queue
Number of messages on a stream before it gets finished/restarted
Use coalescing API when possible.
If 0, disabled. Else, specifies the period between gathering latency medians in milliseconds.
Number of client processes. 0 indicates no restriction.
Metadata to be attached for the given type of RPCs.
Used in:
Type of RPCs to send.
Used in: ,
Used in: ,
Latency histogram. Data points are in nanoseconds.
See ServerStats for details.
Number of failed requests (one row per status code seen)
Number of polls called inside completion queue
Core library stats
Used in:
Many languages support a basic distinction between using sync or async client, and this allows the specification
used for some language-specific variants
Once an RPC finishes, immediately start a new one. No configuration parameters needed.
Used in:
(message has no fields)
TODO (vpai): Fill this in once the details of complex, representative protos are decided
Used in:
(message has no fields)
A protobuf representation for grpc status. This is used by test clients to specify a status that the server should attempt to return.
Used in: ,
An empty message that you can re-use to avoid defining duplicated empty messages in your project. A typical example is to use it as argument or the return value of a service API. For instance: service Foo { rpc Bar (grpc.testing.Empty) returns (grpc.testing.Empty) { }; };
Used as request type in: HookService.ClearReturnStatus, HookService.Hook, ReconnectService.Stop, TestService.EmptyCall, TestService.UnimplementedCall, UnimplementedService.UnimplementedCall, XdsUpdateHealthService.SetNotServing, XdsUpdateHealthService.SetServing
Used as response type in: HookService.ClearReturnStatus, HookService.Hook, HookService.SetReturnStatus, ReconnectService.Start, TestService.EmptyCall, TestService.UnimplementedCall, UnimplementedService.UnimplementedCall, XdsUpdateHealthService.SetNotServing, XdsUpdateHealthService.SetServing
(message has no fields)
The type of route that a client took to reach a server w.r.t. gRPCLB. The server must fill in "fallback" if it detects that the RPC reached the server via the "gRPCLB fallback" path, and "backend" if it detects that the RPC reached the server via "gRPCLB backend" path (i.e. if it got the address of this server from the gRPCLB server BalanceLoad RPC). Exactly how this detection is done is context and server dependent.
Used in:
Server didn't detect the route that a client took to reach it.
Indicates that a client reached a server via gRPCLB fallback.
Indicates that a client reached a server as a gRPCLB-given backend.
Histogram data based on grpc/support/histogram.c
Used in: ,
Histogram params based on grpc/support/histogram.c
Used in:
first bucket is [0, 1 + resolution)
use enough buckets to allow this value
Used in:
Default value
Start the HTTP endpoint
Stop
Return from HTTP GET/POST
Used in:
The number of RPCs that were started for this method.
The number of RPCs that completed with each status for this method. The key is the integral value of a google.rpc.Code; the value is the count.
Used in:
List of RpcMetadata in for each RPC with a given peer
Used in:
Key, exactly as received from the server. Case may be different from what was requested in the LoadBalancerStatsRequest)
Value, exactly as received from the server.
Metadata type
Used in:
Used in:
metadata values for each rpc for the keys specified in LoadBalancerStatsRequest.metadata_keys.
Used in:
The number of completed RPCs for each peer.
Used in:
Request current stats
Used in: ,
if true, the stats will be reset after taking their snapshot.
A block of data, to simply increase gRPC message size.
Used in: , , , ,
The type of data in body.
Primary contents of payload.
Used in: ,
The type of payload that should be returned.
Used in: , ,
Compressable text format.
Parameters of poisson process distribution, which is a good representation of activity coming in from independent identical stationary sources.
Used in:
The rate of arrivals (a.k.a. lambda parameter of the exp distribution).
Used in: ,
Configuration for a particular response.
Used in:
Desired payload sizes in responses from the server.
Desired interval between consecutive responses in the response stream in microseconds.
Whether to request the server to compress the response. This field is "nullable" in order to interoperate seamlessly with clients not able to implement the full compression tests by introspecting the call to verify the response's compression status.
Whether to request the server to send the requesting peer's socket address in the response.
Used in:
A single performance scenario: input to qps_json_driver
Used in: ,
Human readable name for this scenario
Client configuration
Number of clients to start for the test
Server configuration
Number of servers to start for the test
Warmup period, in seconds
Benchmark time, in seconds
Number of workers to spawn locally (usually zero)
Basic summary that can be computed from ClientStats and ServerStats once the scenario has finished.
Used in:
Total number of operations per second over all clients. What is counted as 1 'operation' depends on the benchmark scenarios: For unary benchmarks, an operation is processing of a single unary RPC. For streaming benchmarks, an operation is processing of a single ping pong of request and response.
QPS per server core.
The total server cpu load based on system time across all server processes, expressed as percentage of a single cpu core. For example, 85 implies 85% of a cpu core, 125 implies 125% of a cpu core. Since we are accumulating the cpu load across all the server processes, the value could > 100 when there are multiple servers or a single server using multiple threads and cores. Same explanation for the total client cpu load below.
The total server cpu load based on user time across all server processes, expressed as percentage of a single cpu core. (85 => 85%, 125 => 125%)
The total client cpu load based on system time across all client processes, expressed as percentage of a single cpu core. (85 => 85%, 125 => 125%)
The total client cpu load based on user time across all client processes, expressed as percentage of a single cpu core. (85 => 85%, 125 => 125%)
X% latency percentiles (in nanoseconds)
server cpu usage percentage
Number of requests that succeeded/failed
Number of polls called inside completion queue per request
Queries per CPU-sec over all servers or clients
Start and end time for the test scenario
A set of scenarios to be run with qps_json_driver
presence of SecurityParams implies use of TLS
Used in: ,
Used in: ,
Port on which to listen. Zero means pick unused port.
Only for async server. Number of threads used to serve the requests.
Specify the number of cores to limit server to, if desired
payload config, used in generic server. Note this must NOT be used in proto (non-generic) servers. For proto servers, 'response sizes' must be configured from the 'response_size' field of the 'SimpleRequest' objects in RPC requests.
Specify the cores we should run the server on, if desired
If we use an OTHER_SERVER client_type, this string gives more detail
Number of threads that share each completion queue
Buffer pool size (no buffer pool specified if unset)
Number of server processes. 0 indicates no restriction.
Used in: ,
wall clock time change in seconds since last reset
change in user time (in seconds) used by the server since last reset
change in server time (in seconds) used by the server process and all threads since last reset
change in total cpu time of the server (data from proc/stat)
change in idle time of the server (data from proc/stat)
Number of polls called inside completion queue
Core library stats
Used in:
used for some language-specific variants
Used in:
Unary request.
Used as request type in: BenchmarkService.StreamingBothWays, BenchmarkService.StreamingCall, BenchmarkService.StreamingFromClient, BenchmarkService.StreamingFromServer, BenchmarkService.UnaryCall, TestService.CacheableUnaryCall, TestService.UnaryCall
Desired payload type in the response from the server. If response_type is RANDOM, server randomly chooses one from other formats.
Desired payload size in the response from the server.
Optional input payload sent along with the request.
Whether SimpleResponse should include username.
Whether SimpleResponse should include OAuth scope.
Whether to request the server to compress the response. This field is "nullable" in order to interoperate seamlessly with clients not able to implement the full compression tests by introspecting the call to verify the response's compression status.
Whether server should return a given status
Whether the server should expect this request to be compressed.
Whether SimpleResponse should include server_id.
Whether SimpleResponse should include grpclb_route_type.
If set the server should record this metrics report data for the current RPC.
Unary response, as configured by the request.
Used as response type in: BenchmarkService.StreamingBothWays, BenchmarkService.StreamingCall, BenchmarkService.StreamingFromClient, BenchmarkService.StreamingFromServer, BenchmarkService.UnaryCall, TestService.CacheableUnaryCall, TestService.UnaryCall
Payload to increase message size.
The user the request came from, for verifying authentication was successful when the client expected it.
OAuth scope.
Server ID. This must be unique among different server instances, but the same across all RPC's made to a particular server instance.
gRPCLB Path.
Server hostname.
Server-streaming request.
Used as request type in: TestService.FullDuplexCall, TestService.HalfDuplexCall, TestService.StreamingOutputCall
Desired payload type in the response from the server. If response_type is RANDOM, the payload from each response in the stream might be of different types. This is to simulate a mixed type of payload stream.
Configuration for each expected response message.
Optional input payload sent along with the request.
Whether server should return a given status
If set the server should update this metrics report data at the OOB server.
Server-streaming response, as configured by the request and parameters.
Used as response type in: TestService.FullDuplexCall, TestService.HalfDuplexCall, TestService.StreamingOutputCall
Payload to increase response size.
The peer's socket address if requested.
Metrics data the server will update and send to the client. It mirrors orca load report https://github.com/cncf/xds/blob/eded343319d09f30032952beda9840bbd3dcf7ac/xds/data/orca/v3/orca_load_report.proto#L15, but avoids orca dependency. Used by both per-query and out-of-band reporting tests.
Used in: ,
Used as request type in: WorkerService.QuitWorker
Used as response type in: ReportQpsScenarioService.ReportScenario, WorkerService.QuitWorker
(message has no fields)