blob: 2b0dcde5a941122e6b9fdca2c3b17c93e1ec43c8 [file] [log] [blame]
Craig Tillerad1fd3a2015-02-16 12:23:04 -08001
Aaron Isotton24e69bf2016-02-26 11:53:22 -08002// Copyright 2015-2016, Google Inc.
Craig Tillerad1fd3a2015-02-16 12:23:04 -08003// All rights reserved.
Craig Tillerce5021b2015-02-18 09:25:21 -08004//
Craig Tillerad1fd3a2015-02-16 12:23:04 -08005// Redistribution and use in source and binary forms, with or without
6// modification, are permitted provided that the following conditions are
7// met:
Craig Tillerce5021b2015-02-18 09:25:21 -08008//
Craig Tillerad1fd3a2015-02-16 12:23:04 -08009// * Redistributions of source code must retain the above copyright
10// notice, this list of conditions and the following disclaimer.
11// * Redistributions in binary form must reproduce the above
12// copyright notice, this list of conditions and the following disclaimer
13// in the documentation and/or other materials provided with the
14// distribution.
15// * Neither the name of Google Inc. nor the names of its
16// contributors may be used to endorse or promote products derived from
17// this software without specific prior written permission.
Craig Tillerce5021b2015-02-18 09:25:21 -080018//
Craig Tillerad1fd3a2015-02-16 12:23:04 -080019// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
chenwa8fd44a2014-12-10 15:13:55 -080031// An integration test service that covers all the method signature permutations
32// of unary/streaming requests/responses.
Abhishek Kumar60572d42015-04-16 20:45:25 -070033
yang-gf6befe82015-08-13 13:51:53 -070034syntax = "proto3";
chenwa8fd44a2014-12-10 15:13:55 -080035
Craig Tiller1b4e3302015-12-17 16:35:00 -080036import "src/proto/grpc/testing/empty.proto";
37import "src/proto/grpc/testing/messages.proto";
chenwa8fd44a2014-12-10 15:13:55 -080038
39package grpc.testing;
40
41// A simple service to test the various types of RPCs and experiment with
42// performance with various types of payload.
43service TestService {
44 // One empty request followed by one empty response.
nnoble72309c62014-12-12 11:42:26 -080045 rpc EmptyCall(grpc.testing.Empty) returns (grpc.testing.Empty);
chenwa8fd44a2014-12-10 15:13:55 -080046
47 // One request followed by one response.
chenwa8fd44a2014-12-10 15:13:55 -080048 rpc UnaryCall(SimpleRequest) returns (SimpleResponse);
49
Makarand Dharmapurikar1ed0b8e2016-09-14 15:01:16 -070050 // One request followed by one response. Response has cache control
51 // headers set such that a caching HTTP proxy (such as GFE) can
52 // satisfy subsequent requests.
53 rpc CacheableUnaryCall(SimpleRequest) returns (SimpleResponse);
54
chenwa8fd44a2014-12-10 15:13:55 -080055 // One request followed by a sequence of responses (streamed download).
56 // The server returns the payload with client desired type and sizes.
57 rpc StreamingOutputCall(StreamingOutputCallRequest)
58 returns (stream StreamingOutputCallResponse);
59
60 // A sequence of requests followed by one response (streamed upload).
61 // The server returns the aggregated size of client payload as the result.
62 rpc StreamingInputCall(stream StreamingInputCallRequest)
63 returns (StreamingInputCallResponse);
64
65 // A sequence of requests with each request served by the server immediately.
66 // As one request could lead to multiple responses, this interface
67 // demonstrates the idea of full duplexing.
68 rpc FullDuplexCall(stream StreamingOutputCallRequest)
69 returns (stream StreamingOutputCallResponse);
70
71 // A sequence of requests followed by a sequence of responses.
72 // The server buffers all the client requests and then serves them in order. A
73 // stream of responses are returned to the client when the server starts with
74 // first request.
75 rpc HalfDuplexCall(stream StreamingOutputCallRequest)
76 returns (stream StreamingOutputCallResponse);
Noah Eisena27eb1d2016-09-28 12:19:52 -070077
Noah Eisen02e70ed2016-09-28 14:17:25 -070078 // The test server will not implement this method. It will be used
79 // to test the behavior when clients call unimplemented methods.
Noah Eisen32eee772016-10-19 10:04:38 -070080 rpc UnimplementedCall(grpc.testing.Empty) returns (grpc.testing.Empty);
chenwa8fd44a2014-12-10 15:13:55 -080081}
Abhishek Kumar905a65b2015-06-19 15:28:07 -070082
Abhishek Kumar905a65b2015-06-19 15:28:07 -070083// A simple service NOT implemented at servers so clients can test for
84// that case.
Abhishek Kumar7bce5162015-06-24 15:36:40 -070085service UnimplementedService {
Abhishek Kumar905a65b2015-06-19 15:28:07 -070086 // A call that no server should implement
Craig Tiller1b4e3302015-12-17 16:35:00 -080087 rpc UnimplementedCall(grpc.testing.Empty) returns (grpc.testing.Empty);
Abhishek Kumar905a65b2015-06-19 15:28:07 -070088}
yang-gc9c69e22015-07-24 14:38:26 -070089
90// A service used to control reconnect server.
91service ReconnectService {
Aaron Isotton24e69bf2016-02-26 11:53:22 -080092 rpc Start(grpc.testing.ReconnectParams) returns (grpc.testing.Empty);
yang-gc9c69e22015-07-24 14:38:26 -070093 rpc Stop(grpc.testing.Empty) returns (grpc.testing.ReconnectInfo);
94}