xref: /aosp_15_r20/external/grpc-grpc/src/proto/grpc/testing/messages.proto (revision cc02d7e222339f7a4f6ba5f422e6413f4bd931f2)
1*cc02d7e2SAndroid Build Coastguard Worker// Copyright 2015-2016 gRPC authors.
2*cc02d7e2SAndroid Build Coastguard Worker//
3*cc02d7e2SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License");
4*cc02d7e2SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License.
5*cc02d7e2SAndroid Build Coastguard Worker// You may obtain a copy of the License at
6*cc02d7e2SAndroid Build Coastguard Worker//
7*cc02d7e2SAndroid Build Coastguard Worker//     http://www.apache.org/licenses/LICENSE-2.0
8*cc02d7e2SAndroid Build Coastguard Worker//
9*cc02d7e2SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software
10*cc02d7e2SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS,
11*cc02d7e2SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12*cc02d7e2SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and
13*cc02d7e2SAndroid Build Coastguard Worker// limitations under the License.
14*cc02d7e2SAndroid Build Coastguard Worker
15*cc02d7e2SAndroid Build Coastguard Worker// Message definitions to be used by integration test service definitions.
16*cc02d7e2SAndroid Build Coastguard Worker
17*cc02d7e2SAndroid Build Coastguard Workersyntax = "proto3";
18*cc02d7e2SAndroid Build Coastguard Worker
19*cc02d7e2SAndroid Build Coastguard Workerpackage grpc.testing;
20*cc02d7e2SAndroid Build Coastguard Worker
21*cc02d7e2SAndroid Build Coastguard Workeroption java_package = "io.grpc.testing.integration";
22*cc02d7e2SAndroid Build Coastguard Worker
23*cc02d7e2SAndroid Build Coastguard Worker// TODO(dgq): Go back to using well-known types once
24*cc02d7e2SAndroid Build Coastguard Worker// https://github.com/grpc/grpc/issues/6980 has been fixed.
25*cc02d7e2SAndroid Build Coastguard Worker// import "google/protobuf/wrappers.proto";
26*cc02d7e2SAndroid Build Coastguard Workermessage BoolValue {
27*cc02d7e2SAndroid Build Coastguard Worker  // The bool value.
28*cc02d7e2SAndroid Build Coastguard Worker  bool value = 1;
29*cc02d7e2SAndroid Build Coastguard Worker}
30*cc02d7e2SAndroid Build Coastguard Worker
31*cc02d7e2SAndroid Build Coastguard Worker// The type of payload that should be returned.
32*cc02d7e2SAndroid Build Coastguard Workerenum PayloadType {
33*cc02d7e2SAndroid Build Coastguard Worker  // Compressable text format.
34*cc02d7e2SAndroid Build Coastguard Worker  COMPRESSABLE = 0;
35*cc02d7e2SAndroid Build Coastguard Worker}
36*cc02d7e2SAndroid Build Coastguard Worker
37*cc02d7e2SAndroid Build Coastguard Worker// A block of data, to simply increase gRPC message size.
38*cc02d7e2SAndroid Build Coastguard Workermessage Payload {
39*cc02d7e2SAndroid Build Coastguard Worker  // The type of data in body.
40*cc02d7e2SAndroid Build Coastguard Worker  PayloadType type = 1;
41*cc02d7e2SAndroid Build Coastguard Worker  // Primary contents of payload.
42*cc02d7e2SAndroid Build Coastguard Worker  bytes body = 2;
43*cc02d7e2SAndroid Build Coastguard Worker}
44*cc02d7e2SAndroid Build Coastguard Worker
45*cc02d7e2SAndroid Build Coastguard Worker// A protobuf representation for grpc status. This is used by test
46*cc02d7e2SAndroid Build Coastguard Worker// clients to specify a status that the server should attempt to return.
47*cc02d7e2SAndroid Build Coastguard Workermessage EchoStatus {
48*cc02d7e2SAndroid Build Coastguard Worker  int32 code = 1;
49*cc02d7e2SAndroid Build Coastguard Worker  string message = 2;
50*cc02d7e2SAndroid Build Coastguard Worker}
51*cc02d7e2SAndroid Build Coastguard Worker
52*cc02d7e2SAndroid Build Coastguard Worker// The type of route that a client took to reach a server w.r.t. gRPCLB.
53*cc02d7e2SAndroid Build Coastguard Worker// The server must fill in "fallback" if it detects that the RPC reached
54*cc02d7e2SAndroid Build Coastguard Worker// the server via the "gRPCLB fallback" path, and "backend" if it detects
55*cc02d7e2SAndroid Build Coastguard Worker// that the RPC reached the server via "gRPCLB backend" path (i.e. if it got
56*cc02d7e2SAndroid Build Coastguard Worker// the address of this server from the gRPCLB server BalanceLoad RPC). Exactly
57*cc02d7e2SAndroid Build Coastguard Worker// how this detection is done is context and server dependent.
58*cc02d7e2SAndroid Build Coastguard Workerenum GrpclbRouteType {
59*cc02d7e2SAndroid Build Coastguard Worker  // Server didn't detect the route that a client took to reach it.
60*cc02d7e2SAndroid Build Coastguard Worker  GRPCLB_ROUTE_TYPE_UNKNOWN = 0;
61*cc02d7e2SAndroid Build Coastguard Worker  // Indicates that a client reached a server via gRPCLB fallback.
62*cc02d7e2SAndroid Build Coastguard Worker  GRPCLB_ROUTE_TYPE_FALLBACK = 1;
63*cc02d7e2SAndroid Build Coastguard Worker  // Indicates that a client reached a server as a gRPCLB-given backend.
64*cc02d7e2SAndroid Build Coastguard Worker  GRPCLB_ROUTE_TYPE_BACKEND = 2;
65*cc02d7e2SAndroid Build Coastguard Worker}
66*cc02d7e2SAndroid Build Coastguard Worker
67*cc02d7e2SAndroid Build Coastguard Worker// Unary request.
68*cc02d7e2SAndroid Build Coastguard Workermessage SimpleRequest {
69*cc02d7e2SAndroid Build Coastguard Worker  // Desired payload type in the response from the server.
70*cc02d7e2SAndroid Build Coastguard Worker  // If response_type is RANDOM, server randomly chooses one from other formats.
71*cc02d7e2SAndroid Build Coastguard Worker  PayloadType response_type = 1;
72*cc02d7e2SAndroid Build Coastguard Worker
73*cc02d7e2SAndroid Build Coastguard Worker  // Desired payload size in the response from the server.
74*cc02d7e2SAndroid Build Coastguard Worker  int32 response_size = 2;
75*cc02d7e2SAndroid Build Coastguard Worker
76*cc02d7e2SAndroid Build Coastguard Worker  // Optional input payload sent along with the request.
77*cc02d7e2SAndroid Build Coastguard Worker  Payload payload = 3;
78*cc02d7e2SAndroid Build Coastguard Worker
79*cc02d7e2SAndroid Build Coastguard Worker  // Whether SimpleResponse should include username.
80*cc02d7e2SAndroid Build Coastguard Worker  bool fill_username = 4;
81*cc02d7e2SAndroid Build Coastguard Worker
82*cc02d7e2SAndroid Build Coastguard Worker  // Whether SimpleResponse should include OAuth scope.
83*cc02d7e2SAndroid Build Coastguard Worker  bool fill_oauth_scope = 5;
84*cc02d7e2SAndroid Build Coastguard Worker
85*cc02d7e2SAndroid Build Coastguard Worker  // Whether to request the server to compress the response. This field is
86*cc02d7e2SAndroid Build Coastguard Worker  // "nullable" in order to interoperate seamlessly with clients not able to
87*cc02d7e2SAndroid Build Coastguard Worker  // implement the full compression tests by introspecting the call to verify
88*cc02d7e2SAndroid Build Coastguard Worker  // the response's compression status.
89*cc02d7e2SAndroid Build Coastguard Worker  BoolValue response_compressed = 6;
90*cc02d7e2SAndroid Build Coastguard Worker
91*cc02d7e2SAndroid Build Coastguard Worker  // Whether server should return a given status
92*cc02d7e2SAndroid Build Coastguard Worker  EchoStatus response_status = 7;
93*cc02d7e2SAndroid Build Coastguard Worker
94*cc02d7e2SAndroid Build Coastguard Worker  // Whether the server should expect this request to be compressed.
95*cc02d7e2SAndroid Build Coastguard Worker  BoolValue expect_compressed = 8;
96*cc02d7e2SAndroid Build Coastguard Worker
97*cc02d7e2SAndroid Build Coastguard Worker  // Whether SimpleResponse should include server_id.
98*cc02d7e2SAndroid Build Coastguard Worker  bool fill_server_id = 9;
99*cc02d7e2SAndroid Build Coastguard Worker
100*cc02d7e2SAndroid Build Coastguard Worker  // Whether SimpleResponse should include grpclb_route_type.
101*cc02d7e2SAndroid Build Coastguard Worker  bool fill_grpclb_route_type = 10;
102*cc02d7e2SAndroid Build Coastguard Worker
103*cc02d7e2SAndroid Build Coastguard Worker  // If set the server should record this metrics report data for the current RPC.
104*cc02d7e2SAndroid Build Coastguard Worker  TestOrcaReport orca_per_query_report = 11;
105*cc02d7e2SAndroid Build Coastguard Worker}
106*cc02d7e2SAndroid Build Coastguard Worker
107*cc02d7e2SAndroid Build Coastguard Worker// Unary response, as configured by the request.
108*cc02d7e2SAndroid Build Coastguard Workermessage SimpleResponse {
109*cc02d7e2SAndroid Build Coastguard Worker  // Payload to increase message size.
110*cc02d7e2SAndroid Build Coastguard Worker  Payload payload = 1;
111*cc02d7e2SAndroid Build Coastguard Worker  // The user the request came from, for verifying authentication was
112*cc02d7e2SAndroid Build Coastguard Worker  // successful when the client expected it.
113*cc02d7e2SAndroid Build Coastguard Worker  string username = 2;
114*cc02d7e2SAndroid Build Coastguard Worker  // OAuth scope.
115*cc02d7e2SAndroid Build Coastguard Worker  string oauth_scope = 3;
116*cc02d7e2SAndroid Build Coastguard Worker
117*cc02d7e2SAndroid Build Coastguard Worker  // Server ID. This must be unique among different server instances,
118*cc02d7e2SAndroid Build Coastguard Worker  // but the same across all RPC's made to a particular server instance.
119*cc02d7e2SAndroid Build Coastguard Worker  string server_id = 4;
120*cc02d7e2SAndroid Build Coastguard Worker  // gRPCLB Path.
121*cc02d7e2SAndroid Build Coastguard Worker  GrpclbRouteType grpclb_route_type = 5;
122*cc02d7e2SAndroid Build Coastguard Worker
123*cc02d7e2SAndroid Build Coastguard Worker  // Server hostname.
124*cc02d7e2SAndroid Build Coastguard Worker  string hostname = 6;
125*cc02d7e2SAndroid Build Coastguard Worker}
126*cc02d7e2SAndroid Build Coastguard Worker
127*cc02d7e2SAndroid Build Coastguard Worker// Client-streaming request.
128*cc02d7e2SAndroid Build Coastguard Workermessage StreamingInputCallRequest {
129*cc02d7e2SAndroid Build Coastguard Worker  // Optional input payload sent along with the request.
130*cc02d7e2SAndroid Build Coastguard Worker  Payload payload = 1;
131*cc02d7e2SAndroid Build Coastguard Worker
132*cc02d7e2SAndroid Build Coastguard Worker  // Whether the server should expect this request to be compressed. This field
133*cc02d7e2SAndroid Build Coastguard Worker  // is "nullable" in order to interoperate seamlessly with servers not able to
134*cc02d7e2SAndroid Build Coastguard Worker  // implement the full compression tests by introspecting the call to verify
135*cc02d7e2SAndroid Build Coastguard Worker  // the request's compression status.
136*cc02d7e2SAndroid Build Coastguard Worker  BoolValue expect_compressed = 2;
137*cc02d7e2SAndroid Build Coastguard Worker
138*cc02d7e2SAndroid Build Coastguard Worker  // Not expecting any payload from the response.
139*cc02d7e2SAndroid Build Coastguard Worker}
140*cc02d7e2SAndroid Build Coastguard Worker
141*cc02d7e2SAndroid Build Coastguard Worker// Client-streaming response.
142*cc02d7e2SAndroid Build Coastguard Workermessage StreamingInputCallResponse {
143*cc02d7e2SAndroid Build Coastguard Worker  // Aggregated size of payloads received from the client.
144*cc02d7e2SAndroid Build Coastguard Worker  int32 aggregated_payload_size = 1;
145*cc02d7e2SAndroid Build Coastguard Worker}
146*cc02d7e2SAndroid Build Coastguard Worker
147*cc02d7e2SAndroid Build Coastguard Worker// Configuration for a particular response.
148*cc02d7e2SAndroid Build Coastguard Workermessage ResponseParameters {
149*cc02d7e2SAndroid Build Coastguard Worker  // Desired payload sizes in responses from the server.
150*cc02d7e2SAndroid Build Coastguard Worker  int32 size = 1;
151*cc02d7e2SAndroid Build Coastguard Worker
152*cc02d7e2SAndroid Build Coastguard Worker  // Desired interval between consecutive responses in the response stream in
153*cc02d7e2SAndroid Build Coastguard Worker  // microseconds.
154*cc02d7e2SAndroid Build Coastguard Worker  int32 interval_us = 2;
155*cc02d7e2SAndroid Build Coastguard Worker
156*cc02d7e2SAndroid Build Coastguard Worker  // Whether to request the server to compress the response. This field is
157*cc02d7e2SAndroid Build Coastguard Worker  // "nullable" in order to interoperate seamlessly with clients not able to
158*cc02d7e2SAndroid Build Coastguard Worker  // implement the full compression tests by introspecting the call to verify
159*cc02d7e2SAndroid Build Coastguard Worker  // the response's compression status.
160*cc02d7e2SAndroid Build Coastguard Worker  BoolValue compressed = 3;
161*cc02d7e2SAndroid Build Coastguard Worker}
162*cc02d7e2SAndroid Build Coastguard Worker
163*cc02d7e2SAndroid Build Coastguard Worker// Server-streaming request.
164*cc02d7e2SAndroid Build Coastguard Workermessage StreamingOutputCallRequest {
165*cc02d7e2SAndroid Build Coastguard Worker  // Desired payload type in the response from the server.
166*cc02d7e2SAndroid Build Coastguard Worker  // If response_type is RANDOM, the payload from each response in the stream
167*cc02d7e2SAndroid Build Coastguard Worker  // might be of different types. This is to simulate a mixed type of payload
168*cc02d7e2SAndroid Build Coastguard Worker  // stream.
169*cc02d7e2SAndroid Build Coastguard Worker  PayloadType response_type = 1;
170*cc02d7e2SAndroid Build Coastguard Worker
171*cc02d7e2SAndroid Build Coastguard Worker  // Configuration for each expected response message.
172*cc02d7e2SAndroid Build Coastguard Worker  repeated ResponseParameters response_parameters = 2;
173*cc02d7e2SAndroid Build Coastguard Worker
174*cc02d7e2SAndroid Build Coastguard Worker  // Optional input payload sent along with the request.
175*cc02d7e2SAndroid Build Coastguard Worker  Payload payload = 3;
176*cc02d7e2SAndroid Build Coastguard Worker
177*cc02d7e2SAndroid Build Coastguard Worker  // Whether server should return a given status
178*cc02d7e2SAndroid Build Coastguard Worker  EchoStatus response_status = 7;
179*cc02d7e2SAndroid Build Coastguard Worker
180*cc02d7e2SAndroid Build Coastguard Worker  // If set the server should update this metrics report data at the OOB server.
181*cc02d7e2SAndroid Build Coastguard Worker  TestOrcaReport orca_oob_report = 8;
182*cc02d7e2SAndroid Build Coastguard Worker}
183*cc02d7e2SAndroid Build Coastguard Worker
184*cc02d7e2SAndroid Build Coastguard Worker// Server-streaming response, as configured by the request and parameters.
185*cc02d7e2SAndroid Build Coastguard Workermessage StreamingOutputCallResponse {
186*cc02d7e2SAndroid Build Coastguard Worker  // Payload to increase response size.
187*cc02d7e2SAndroid Build Coastguard Worker  Payload payload = 1;
188*cc02d7e2SAndroid Build Coastguard Worker}
189*cc02d7e2SAndroid Build Coastguard Worker
190*cc02d7e2SAndroid Build Coastguard Worker// For reconnect interop test only.
191*cc02d7e2SAndroid Build Coastguard Worker// Client tells server what reconnection parameters it used.
192*cc02d7e2SAndroid Build Coastguard Workermessage ReconnectParams {
193*cc02d7e2SAndroid Build Coastguard Worker  int32 max_reconnect_backoff_ms = 1;
194*cc02d7e2SAndroid Build Coastguard Worker}
195*cc02d7e2SAndroid Build Coastguard Worker
196*cc02d7e2SAndroid Build Coastguard Worker// For reconnect interop test only.
197*cc02d7e2SAndroid Build Coastguard Worker// Server tells client whether its reconnects are following the spec and the
198*cc02d7e2SAndroid Build Coastguard Worker// reconnect backoffs it saw.
199*cc02d7e2SAndroid Build Coastguard Workermessage ReconnectInfo {
200*cc02d7e2SAndroid Build Coastguard Worker  bool passed = 1;
201*cc02d7e2SAndroid Build Coastguard Worker  repeated int32 backoff_ms = 2;
202*cc02d7e2SAndroid Build Coastguard Worker}
203*cc02d7e2SAndroid Build Coastguard Worker
204*cc02d7e2SAndroid Build Coastguard Workermessage LoadBalancerStatsRequest {
205*cc02d7e2SAndroid Build Coastguard Worker  // Request stats for the next num_rpcs sent by client.
206*cc02d7e2SAndroid Build Coastguard Worker  int32 num_rpcs = 1;
207*cc02d7e2SAndroid Build Coastguard Worker  // If num_rpcs have not completed within timeout_sec, return partial results.
208*cc02d7e2SAndroid Build Coastguard Worker  int32 timeout_sec = 2;
209*cc02d7e2SAndroid Build Coastguard Worker  // Response header + trailer metadata entries we want the values of.
210*cc02d7e2SAndroid Build Coastguard Worker  // Matching of the keys is case-insensitive as per rfc7540#section-8.1.2
211*cc02d7e2SAndroid Build Coastguard Worker  // * (asterisk) is a special value that will return all metadata entries
212*cc02d7e2SAndroid Build Coastguard Worker  repeated string metadata_keys = 3;
213*cc02d7e2SAndroid Build Coastguard Worker}
214*cc02d7e2SAndroid Build Coastguard Worker
215*cc02d7e2SAndroid Build Coastguard Workermessage LoadBalancerStatsResponse {
216*cc02d7e2SAndroid Build Coastguard Worker  enum MetadataType {
217*cc02d7e2SAndroid Build Coastguard Worker    UNKNOWN = 0;
218*cc02d7e2SAndroid Build Coastguard Worker    INITIAL = 1;
219*cc02d7e2SAndroid Build Coastguard Worker    TRAILING = 2;
220*cc02d7e2SAndroid Build Coastguard Worker  }
221*cc02d7e2SAndroid Build Coastguard Worker  message MetadataEntry {
222*cc02d7e2SAndroid Build Coastguard Worker    // Key, exactly as received from the server. Case may be different from what
223*cc02d7e2SAndroid Build Coastguard Worker    // was requested in the LoadBalancerStatsRequest)
224*cc02d7e2SAndroid Build Coastguard Worker    string key = 1;
225*cc02d7e2SAndroid Build Coastguard Worker    // Value, exactly as received from the server.
226*cc02d7e2SAndroid Build Coastguard Worker    string value = 2;
227*cc02d7e2SAndroid Build Coastguard Worker    // Metadata type
228*cc02d7e2SAndroid Build Coastguard Worker    MetadataType type = 3;
229*cc02d7e2SAndroid Build Coastguard Worker  }
230*cc02d7e2SAndroid Build Coastguard Worker  message RpcMetadata {
231*cc02d7e2SAndroid Build Coastguard Worker    // metadata values for each rpc for the keys specified in
232*cc02d7e2SAndroid Build Coastguard Worker    // LoadBalancerStatsRequest.metadata_keys.
233*cc02d7e2SAndroid Build Coastguard Worker    repeated MetadataEntry metadata = 1;
234*cc02d7e2SAndroid Build Coastguard Worker  }
235*cc02d7e2SAndroid Build Coastguard Worker  message MetadataByPeer {
236*cc02d7e2SAndroid Build Coastguard Worker    // List of RpcMetadata in for each RPC with a given peer
237*cc02d7e2SAndroid Build Coastguard Worker    repeated RpcMetadata rpc_metadata = 1;
238*cc02d7e2SAndroid Build Coastguard Worker  }
239*cc02d7e2SAndroid Build Coastguard Worker  message RpcsByPeer {
240*cc02d7e2SAndroid Build Coastguard Worker    // The number of completed RPCs for each peer.
241*cc02d7e2SAndroid Build Coastguard Worker    map<string, int32> rpcs_by_peer = 1;
242*cc02d7e2SAndroid Build Coastguard Worker  }
243*cc02d7e2SAndroid Build Coastguard Worker  // The number of completed RPCs for each peer.
244*cc02d7e2SAndroid Build Coastguard Worker  map<string, int32> rpcs_by_peer = 1;
245*cc02d7e2SAndroid Build Coastguard Worker  // The number of RPCs that failed to record a remote peer.
246*cc02d7e2SAndroid Build Coastguard Worker  int32 num_failures = 2;
247*cc02d7e2SAndroid Build Coastguard Worker  map<string, RpcsByPeer> rpcs_by_method = 3;
248*cc02d7e2SAndroid Build Coastguard Worker  // All the metadata of all RPCs for each peer.
249*cc02d7e2SAndroid Build Coastguard Worker  map<string, MetadataByPeer> metadatas_by_peer = 4;
250*cc02d7e2SAndroid Build Coastguard Worker}
251*cc02d7e2SAndroid Build Coastguard Worker
252*cc02d7e2SAndroid Build Coastguard Worker// Request for retrieving a test client's accumulated stats.
253*cc02d7e2SAndroid Build Coastguard Workermessage LoadBalancerAccumulatedStatsRequest {}
254*cc02d7e2SAndroid Build Coastguard Worker
255*cc02d7e2SAndroid Build Coastguard Worker// Accumulated stats for RPCs sent by a test client.
256*cc02d7e2SAndroid Build Coastguard Workermessage LoadBalancerAccumulatedStatsResponse {
257*cc02d7e2SAndroid Build Coastguard Worker  // The total number of RPCs have ever issued for each type.
258*cc02d7e2SAndroid Build Coastguard Worker  // Deprecated: use stats_per_method.rpcs_started instead.
259*cc02d7e2SAndroid Build Coastguard Worker  map<string, int32> num_rpcs_started_by_method = 1 [deprecated = true];
260*cc02d7e2SAndroid Build Coastguard Worker  // The total number of RPCs have ever completed successfully for each type.
261*cc02d7e2SAndroid Build Coastguard Worker  // Deprecated: use stats_per_method.result instead.
262*cc02d7e2SAndroid Build Coastguard Worker  map<string, int32> num_rpcs_succeeded_by_method = 2 [deprecated = true];
263*cc02d7e2SAndroid Build Coastguard Worker  // The total number of RPCs have ever failed for each type.
264*cc02d7e2SAndroid Build Coastguard Worker  // Deprecated: use stats_per_method.result instead.
265*cc02d7e2SAndroid Build Coastguard Worker  map<string, int32> num_rpcs_failed_by_method = 3 [deprecated = true];
266*cc02d7e2SAndroid Build Coastguard Worker
267*cc02d7e2SAndroid Build Coastguard Worker  message MethodStats {
268*cc02d7e2SAndroid Build Coastguard Worker    // The number of RPCs that were started for this method.
269*cc02d7e2SAndroid Build Coastguard Worker    int32 rpcs_started = 1;
270*cc02d7e2SAndroid Build Coastguard Worker
271*cc02d7e2SAndroid Build Coastguard Worker    // The number of RPCs that completed with each status for this method.  The
272*cc02d7e2SAndroid Build Coastguard Worker    // key is the integral value of a google.rpc.Code; the value is the count.
273*cc02d7e2SAndroid Build Coastguard Worker    map<int32, int32> result = 2;
274*cc02d7e2SAndroid Build Coastguard Worker  }
275*cc02d7e2SAndroid Build Coastguard Worker
276*cc02d7e2SAndroid Build Coastguard Worker  // Per-method RPC statistics.  The key is the RpcType in string form; e.g.
277*cc02d7e2SAndroid Build Coastguard Worker  // 'EMPTY_CALL' or 'UNARY_CALL'
278*cc02d7e2SAndroid Build Coastguard Worker  map<string, MethodStats> stats_per_method = 4;
279*cc02d7e2SAndroid Build Coastguard Worker}
280*cc02d7e2SAndroid Build Coastguard Worker
281*cc02d7e2SAndroid Build Coastguard Worker// Configurations for a test client.
282*cc02d7e2SAndroid Build Coastguard Workermessage ClientConfigureRequest {
283*cc02d7e2SAndroid Build Coastguard Worker  // Type of RPCs to send.
284*cc02d7e2SAndroid Build Coastguard Worker  enum RpcType {
285*cc02d7e2SAndroid Build Coastguard Worker    EMPTY_CALL = 0;
286*cc02d7e2SAndroid Build Coastguard Worker    UNARY_CALL = 1;
287*cc02d7e2SAndroid Build Coastguard Worker  }
288*cc02d7e2SAndroid Build Coastguard Worker
289*cc02d7e2SAndroid Build Coastguard Worker  // Metadata to be attached for the given type of RPCs.
290*cc02d7e2SAndroid Build Coastguard Worker  message Metadata {
291*cc02d7e2SAndroid Build Coastguard Worker    RpcType type = 1;
292*cc02d7e2SAndroid Build Coastguard Worker    string key = 2;
293*cc02d7e2SAndroid Build Coastguard Worker    string value = 3;
294*cc02d7e2SAndroid Build Coastguard Worker  }
295*cc02d7e2SAndroid Build Coastguard Worker
296*cc02d7e2SAndroid Build Coastguard Worker  // The types of RPCs the client sends.
297*cc02d7e2SAndroid Build Coastguard Worker  repeated RpcType types = 1;
298*cc02d7e2SAndroid Build Coastguard Worker  // The collection of custom metadata to be attached to RPCs sent by the client.
299*cc02d7e2SAndroid Build Coastguard Worker  repeated Metadata metadata = 2;
300*cc02d7e2SAndroid Build Coastguard Worker  // The deadline to use, in seconds, for all RPCs.  If unset or zero, the
301*cc02d7e2SAndroid Build Coastguard Worker  // client will use the default from the command-line.
302*cc02d7e2SAndroid Build Coastguard Worker  int32 timeout_sec = 3;
303*cc02d7e2SAndroid Build Coastguard Worker}
304*cc02d7e2SAndroid Build Coastguard Worker
305*cc02d7e2SAndroid Build Coastguard Worker// Response for updating a test client's configuration.
306*cc02d7e2SAndroid Build Coastguard Workermessage ClientConfigureResponse {}
307*cc02d7e2SAndroid Build Coastguard Worker
308*cc02d7e2SAndroid Build Coastguard Workermessage MemorySize {
309*cc02d7e2SAndroid Build Coastguard Worker  int64 rss = 1;
310*cc02d7e2SAndroid Build Coastguard Worker}
311*cc02d7e2SAndroid Build Coastguard Worker
312*cc02d7e2SAndroid Build Coastguard Worker// Metrics data the server will update and send to the client. It mirrors orca load report
313*cc02d7e2SAndroid Build Coastguard Worker// https://github.com/cncf/xds/blob/eded343319d09f30032952beda9840bbd3dcf7ac/xds/data/orca/v3/orca_load_report.proto#L15,
314*cc02d7e2SAndroid Build Coastguard Worker// but avoids orca dependency. Used by both per-query and out-of-band reporting tests.
315*cc02d7e2SAndroid Build Coastguard Workermessage TestOrcaReport {
316*cc02d7e2SAndroid Build Coastguard Worker  double cpu_utilization = 1;
317*cc02d7e2SAndroid Build Coastguard Worker  double memory_utilization = 2;
318*cc02d7e2SAndroid Build Coastguard Worker  map<string, double> request_cost = 3;
319*cc02d7e2SAndroid Build Coastguard Worker  map<string, double> utilization = 4;
320*cc02d7e2SAndroid Build Coastguard Worker}
321*cc02d7e2SAndroid Build Coastguard Worker
322*cc02d7e2SAndroid Build Coastguard Worker// Status that will be return to callers of the Hook method
323*cc02d7e2SAndroid Build Coastguard Workermessage SetReturnStatusRequest {
324*cc02d7e2SAndroid Build Coastguard Worker  int32 grpc_code_to_return = 1;
325*cc02d7e2SAndroid Build Coastguard Worker  string grpc_status_description = 2;
326*cc02d7e2SAndroid Build Coastguard Worker}
327*cc02d7e2SAndroid Build Coastguard Worker
328*cc02d7e2SAndroid Build Coastguard Workermessage HookRequest {
329*cc02d7e2SAndroid Build Coastguard Worker  enum HookRequestCommand {
330*cc02d7e2SAndroid Build Coastguard Worker    // Default value
331*cc02d7e2SAndroid Build Coastguard Worker    UNSPECIFIED = 0;
332*cc02d7e2SAndroid Build Coastguard Worker    // Start the HTTP endpoint
333*cc02d7e2SAndroid Build Coastguard Worker    START = 1;
334*cc02d7e2SAndroid Build Coastguard Worker    // Stop
335*cc02d7e2SAndroid Build Coastguard Worker    STOP = 2;
336*cc02d7e2SAndroid Build Coastguard Worker    // Return from HTTP GET/POST
337*cc02d7e2SAndroid Build Coastguard Worker    RETURN = 3;
338*cc02d7e2SAndroid Build Coastguard Worker  }
339*cc02d7e2SAndroid Build Coastguard Worker  HookRequestCommand command = 1;
340*cc02d7e2SAndroid Build Coastguard Worker  int32 grpc_code_to_return = 2;
341*cc02d7e2SAndroid Build Coastguard Worker  string grpc_status_description = 3;
342*cc02d7e2SAndroid Build Coastguard Worker  // Server port to listen to
343*cc02d7e2SAndroid Build Coastguard Worker  int32 server_port = 4;
344*cc02d7e2SAndroid Build Coastguard Worker}
345*cc02d7e2SAndroid Build Coastguard Worker
346*cc02d7e2SAndroid Build Coastguard Workermessage HookResponse {
347*cc02d7e2SAndroid Build Coastguard Worker}
348