1*cc02d7e2SAndroid Build Coastguard Worker 2*cc02d7e2SAndroid Build Coastguard Worker// Copyright 2015-2016 gRPC authors. 3*cc02d7e2SAndroid Build Coastguard Worker// 4*cc02d7e2SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 5*cc02d7e2SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 6*cc02d7e2SAndroid Build Coastguard Worker// You may obtain a copy of the License at 7*cc02d7e2SAndroid Build Coastguard Worker// 8*cc02d7e2SAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 9*cc02d7e2SAndroid Build Coastguard Worker// 10*cc02d7e2SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 11*cc02d7e2SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 12*cc02d7e2SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*cc02d7e2SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 14*cc02d7e2SAndroid Build Coastguard Worker// limitations under the License. 15*cc02d7e2SAndroid Build Coastguard Worker 16*cc02d7e2SAndroid Build Coastguard Worker// An integration test service that covers all the method signature permutations 17*cc02d7e2SAndroid Build Coastguard Worker// of unary/streaming requests/responses. 18*cc02d7e2SAndroid Build Coastguard Worker 19*cc02d7e2SAndroid Build Coastguard Workersyntax = "proto3"; 20*cc02d7e2SAndroid Build Coastguard Worker 21*cc02d7e2SAndroid Build Coastguard Workerimport "src/proto/grpc/testing/empty.proto"; 22*cc02d7e2SAndroid Build Coastguard Workerimport "src/proto/grpc/testing/messages.proto"; 23*cc02d7e2SAndroid Build Coastguard Worker 24*cc02d7e2SAndroid Build Coastguard Workerpackage grpc.testing; 25*cc02d7e2SAndroid Build Coastguard Worker 26*cc02d7e2SAndroid Build Coastguard Workeroption java_package = "io.grpc.testing.integration"; 27*cc02d7e2SAndroid Build Coastguard Worker 28*cc02d7e2SAndroid Build Coastguard Worker// A simple service to test the various types of RPCs and experiment with 29*cc02d7e2SAndroid Build Coastguard Worker// performance with various types of payload. 30*cc02d7e2SAndroid Build Coastguard Workerservice TestService { 31*cc02d7e2SAndroid Build Coastguard Worker // One empty request followed by one empty response. 32*cc02d7e2SAndroid Build Coastguard Worker rpc EmptyCall(grpc.testing.Empty) returns (grpc.testing.Empty); 33*cc02d7e2SAndroid Build Coastguard Worker 34*cc02d7e2SAndroid Build Coastguard Worker // One request followed by one response. 35*cc02d7e2SAndroid Build Coastguard Worker rpc UnaryCall(SimpleRequest) returns (SimpleResponse); 36*cc02d7e2SAndroid Build Coastguard Worker 37*cc02d7e2SAndroid Build Coastguard Worker // One request followed by one response. Response has cache control 38*cc02d7e2SAndroid Build Coastguard Worker // headers set such that a caching HTTP proxy (such as GFE) can 39*cc02d7e2SAndroid Build Coastguard Worker // satisfy subsequent requests. 40*cc02d7e2SAndroid Build Coastguard Worker rpc CacheableUnaryCall(SimpleRequest) returns (SimpleResponse); 41*cc02d7e2SAndroid Build Coastguard Worker 42*cc02d7e2SAndroid Build Coastguard Worker // One request followed by a sequence of responses (streamed download). 43*cc02d7e2SAndroid Build Coastguard Worker // The server returns the payload with client desired type and sizes. 44*cc02d7e2SAndroid Build Coastguard Worker rpc StreamingOutputCall(StreamingOutputCallRequest) 45*cc02d7e2SAndroid Build Coastguard Worker returns (stream StreamingOutputCallResponse); 46*cc02d7e2SAndroid Build Coastguard Worker 47*cc02d7e2SAndroid Build Coastguard Worker // A sequence of requests followed by one response (streamed upload). 48*cc02d7e2SAndroid Build Coastguard Worker // The server returns the aggregated size of client payload as the result. 49*cc02d7e2SAndroid Build Coastguard Worker rpc StreamingInputCall(stream StreamingInputCallRequest) 50*cc02d7e2SAndroid Build Coastguard Worker returns (StreamingInputCallResponse); 51*cc02d7e2SAndroid Build Coastguard Worker 52*cc02d7e2SAndroid Build Coastguard Worker // A sequence of requests with each request served by the server immediately. 53*cc02d7e2SAndroid Build Coastguard Worker // As one request could lead to multiple responses, this interface 54*cc02d7e2SAndroid Build Coastguard Worker // demonstrates the idea of full duplexing. 55*cc02d7e2SAndroid Build Coastguard Worker rpc FullDuplexCall(stream StreamingOutputCallRequest) 56*cc02d7e2SAndroid Build Coastguard Worker returns (stream StreamingOutputCallResponse); 57*cc02d7e2SAndroid Build Coastguard Worker 58*cc02d7e2SAndroid Build Coastguard Worker // A sequence of requests followed by a sequence of responses. 59*cc02d7e2SAndroid Build Coastguard Worker // The server buffers all the client requests and then serves them in order. A 60*cc02d7e2SAndroid Build Coastguard Worker // stream of responses are returned to the client when the server starts with 61*cc02d7e2SAndroid Build Coastguard Worker // first request. 62*cc02d7e2SAndroid Build Coastguard Worker rpc HalfDuplexCall(stream StreamingOutputCallRequest) 63*cc02d7e2SAndroid Build Coastguard Worker returns (stream StreamingOutputCallResponse); 64*cc02d7e2SAndroid Build Coastguard Worker 65*cc02d7e2SAndroid Build Coastguard Worker // The test server will not implement this method. It will be used 66*cc02d7e2SAndroid Build Coastguard Worker // to test the behavior when clients call unimplemented methods. 67*cc02d7e2SAndroid Build Coastguard Worker rpc UnimplementedCall(grpc.testing.Empty) returns (grpc.testing.Empty); 68*cc02d7e2SAndroid Build Coastguard Worker} 69*cc02d7e2SAndroid Build Coastguard Worker 70*cc02d7e2SAndroid Build Coastguard Worker// A simple service NOT implemented at servers so clients can test for 71*cc02d7e2SAndroid Build Coastguard Worker// that case. 72*cc02d7e2SAndroid Build Coastguard Workerservice UnimplementedService { 73*cc02d7e2SAndroid Build Coastguard Worker // A call that no server should implement 74*cc02d7e2SAndroid Build Coastguard Worker rpc UnimplementedCall(grpc.testing.Empty) returns (grpc.testing.Empty); 75*cc02d7e2SAndroid Build Coastguard Worker} 76*cc02d7e2SAndroid Build Coastguard Worker 77*cc02d7e2SAndroid Build Coastguard Worker// A service used to control reconnect server. 78*cc02d7e2SAndroid Build Coastguard Workerservice ReconnectService { 79*cc02d7e2SAndroid Build Coastguard Worker rpc Start(grpc.testing.ReconnectParams) returns (grpc.testing.Empty); 80*cc02d7e2SAndroid Build Coastguard Worker rpc Stop(grpc.testing.Empty) returns (grpc.testing.ReconnectInfo); 81*cc02d7e2SAndroid Build Coastguard Worker} 82*cc02d7e2SAndroid Build Coastguard Worker 83*cc02d7e2SAndroid Build Coastguard Worker// A service used to obtain stats for verifying LB behavior. 84*cc02d7e2SAndroid Build Coastguard Workerservice LoadBalancerStatsService { 85*cc02d7e2SAndroid Build Coastguard Worker // Gets the backend distribution for RPCs sent by a test client. 86*cc02d7e2SAndroid Build Coastguard Worker rpc GetClientStats(LoadBalancerStatsRequest) 87*cc02d7e2SAndroid Build Coastguard Worker returns (LoadBalancerStatsResponse) {} 88*cc02d7e2SAndroid Build Coastguard Worker 89*cc02d7e2SAndroid Build Coastguard Worker // Gets the accumulated stats for RPCs sent by a test client. 90*cc02d7e2SAndroid Build Coastguard Worker rpc GetClientAccumulatedStats(LoadBalancerAccumulatedStatsRequest) 91*cc02d7e2SAndroid Build Coastguard Worker returns (LoadBalancerAccumulatedStatsResponse) {} 92*cc02d7e2SAndroid Build Coastguard Worker} 93*cc02d7e2SAndroid Build Coastguard Worker 94*cc02d7e2SAndroid Build Coastguard Worker// Hook service. Used to keep Kubernetes from shutting the pod down. 95*cc02d7e2SAndroid Build Coastguard Workerservice HookService { 96*cc02d7e2SAndroid Build Coastguard Worker // Sends a request that will "hang" until the return status is set by a call 97*cc02d7e2SAndroid Build Coastguard Worker // to a SetReturnStatus 98*cc02d7e2SAndroid Build Coastguard Worker rpc Hook(grpc.testing.Empty) returns (grpc.testing.Empty); 99*cc02d7e2SAndroid Build Coastguard Worker // Sets a return status for pending and upcoming calls to Hook 100*cc02d7e2SAndroid Build Coastguard Worker rpc SetReturnStatus(SetReturnStatusRequest) returns (grpc.testing.Empty); 101*cc02d7e2SAndroid Build Coastguard Worker // Clears the return status. Incoming calls to Hook will "hang" 102*cc02d7e2SAndroid Build Coastguard Worker rpc ClearReturnStatus(grpc.testing.Empty) returns (grpc.testing.Empty); 103*cc02d7e2SAndroid Build Coastguard Worker} 104*cc02d7e2SAndroid Build Coastguard Worker 105*cc02d7e2SAndroid Build Coastguard Worker// A service to remotely control health status of an xDS test server. 106*cc02d7e2SAndroid Build Coastguard Workerservice XdsUpdateHealthService { 107*cc02d7e2SAndroid Build Coastguard Worker rpc SetServing(grpc.testing.Empty) returns (grpc.testing.Empty); 108*cc02d7e2SAndroid Build Coastguard Worker rpc SetNotServing(grpc.testing.Empty) returns (grpc.testing.Empty); 109*cc02d7e2SAndroid Build Coastguard Worker rpc SendHookRequest(HookRequest) returns (HookResponse); 110*cc02d7e2SAndroid Build Coastguard Worker} 111*cc02d7e2SAndroid Build Coastguard Worker 112*cc02d7e2SAndroid Build Coastguard Worker// A service to dynamically update the configuration of an xDS test client. 113*cc02d7e2SAndroid Build Coastguard Workerservice XdsUpdateClientConfigureService { 114*cc02d7e2SAndroid Build Coastguard Worker // Update the tes client's configuration. 115*cc02d7e2SAndroid Build Coastguard Worker rpc Configure(ClientConfigureRequest) returns (ClientConfigureResponse); 116*cc02d7e2SAndroid Build Coastguard Worker} 117