xref: /tonic/interop/proto/grpc/testing/test.proto (revision d9a481ba)
1// Copyright 2015-2016 gRPC authors.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14
15// An integration test service that covers all the method signature permutations
16// of unary/streaming requests/responses.
17
18syntax = "proto3";
19
20import "empty.proto";
21import "messages.proto";
22
23package grpc.testing;
24
25// A simple service to test the various types of RPCs and experiment with
26// performance with various types of payload.
27service TestService {
28  // One empty request followed by one empty response.
29  rpc EmptyCall(grpc.testing.Empty) returns (grpc.testing.Empty);
30
31  // One request followed by one response.
32  rpc UnaryCall(SimpleRequest) returns (SimpleResponse);
33
34  // One request followed by one response. Response has cache control
35  // headers set such that a caching HTTP proxy (such as GFE) can
36  // satisfy subsequent requests.
37  rpc CacheableUnaryCall(SimpleRequest) returns (SimpleResponse);
38
39  // One request followed by a sequence of responses (streamed download).
40  // The server returns the payload with client desired type and sizes.
41  rpc StreamingOutputCall(StreamingOutputCallRequest)
42      returns (stream StreamingOutputCallResponse);
43
44  // A sequence of requests followed by one response (streamed upload).
45  // The server returns the aggregated size of client payload as the result.
46  rpc StreamingInputCall(stream StreamingInputCallRequest)
47      returns (StreamingInputCallResponse);
48
49  // A sequence of requests with each request served by the server immediately.
50  // As one request could lead to multiple responses, this interface
51  // demonstrates the idea of full duplexing.
52  rpc FullDuplexCall(stream StreamingOutputCallRequest)
53      returns (stream StreamingOutputCallResponse);
54
55  // A sequence of requests followed by a sequence of responses.
56  // The server buffers all the client requests and then serves them in order. A
57  // stream of responses are returned to the client when the server starts with
58  // first request.
59  rpc HalfDuplexCall(stream StreamingOutputCallRequest)
60      returns (stream StreamingOutputCallResponse);
61
62  // The test server will not implement this method. It will be used
63  // to test the behavior when clients call unimplemented methods.
64  rpc UnimplementedCall(grpc.testing.Empty) returns (grpc.testing.Empty);
65}
66
67// A simple service NOT implemented at servers so clients can test for
68// that case.
69service UnimplementedService {
70  // A call that no server should implement
71  rpc UnimplementedCall(grpc.testing.Empty) returns (grpc.testing.Empty);
72}
73
74// A service used to control reconnect server.
75service ReconnectService {
76  rpc Start(grpc.testing.ReconnectParams) returns (grpc.testing.Empty);
77  rpc Stop(grpc.testing.Empty) returns (grpc.testing.ReconnectInfo);
78}