blob: b55780e5cdef6e272e3adaf50f23a1e8450f6ca8 [file] [log] [blame]
Craig Tillerad1fd3a2015-02-16 12:23:04 -08001
2// Copyright 2015, Google Inc.
3// 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.
33syntax = "proto2";
34
temiola33a21682014-12-11 15:13:40 -080035import "test/cpp/interop/empty.proto";
36import "test/cpp/interop/messages.proto";
chenwa8fd44a2014-12-10 15:13:55 -080037
38package grpc.testing;
39
40// A simple service to test the various types of RPCs and experiment with
41// performance with various types of payload.
42service TestService {
43 // One empty request followed by one empty response.
nnoble72309c62014-12-12 11:42:26 -080044 rpc EmptyCall(grpc.testing.Empty) returns (grpc.testing.Empty);
chenwa8fd44a2014-12-10 15:13:55 -080045
46 // One request followed by one response.
Nathaniel Manista1d1f9522015-02-15 01:21:18 +000047 // TODO(Issue 527): Describe required server behavior.
chenwa8fd44a2014-12-10 15:13:55 -080048 rpc UnaryCall(SimpleRequest) returns (SimpleResponse);
49
50 // One request followed by a sequence of responses (streamed download).
51 // The server returns the payload with client desired type and sizes.
52 rpc StreamingOutputCall(StreamingOutputCallRequest)
53 returns (stream StreamingOutputCallResponse);
54
55 // A sequence of requests followed by one response (streamed upload).
56 // The server returns the aggregated size of client payload as the result.
57 rpc StreamingInputCall(stream StreamingInputCallRequest)
58 returns (StreamingInputCallResponse);
59
60 // A sequence of requests with each request served by the server immediately.
61 // As one request could lead to multiple responses, this interface
62 // demonstrates the idea of full duplexing.
63 rpc FullDuplexCall(stream StreamingOutputCallRequest)
64 returns (stream StreamingOutputCallResponse);
65
66 // A sequence of requests followed by a sequence of responses.
67 // The server buffers all the client requests and then serves them in order. A
68 // stream of responses are returned to the client when the server starts with
69 // first request.
70 rpc HalfDuplexCall(stream StreamingOutputCallRequest)
71 returns (stream StreamingOutputCallResponse);
72}