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