blob: b9483d84378380ed4a216ae76680ac08a7c23aec [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.
Abhishek Kumar60572d42015-04-16 20:45:25 -070033
chenwa8fd44a2014-12-10 15:13:55 -080034syntax = "proto2";
35
Abhishek Kumar60572d42015-04-16 20:45:25 -070036import "test/proto/empty.proto";
37import "test/proto/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.
Nathaniel Manista1d1f9522015-02-15 01:21:18 +000048 // TODO(Issue 527): Describe required server behavior.
chenwa8fd44a2014-12-10 15:13:55 -080049 rpc UnaryCall(SimpleRequest) returns (SimpleResponse);
50
51 // One request followed by a sequence of responses (streamed download).
52 // The server returns the payload with client desired type and sizes.
53 rpc StreamingOutputCall(StreamingOutputCallRequest)
54 returns (stream StreamingOutputCallResponse);
55
56 // A sequence of requests followed by one response (streamed upload).
57 // The server returns the aggregated size of client payload as the result.
58 rpc StreamingInputCall(stream StreamingInputCallRequest)
59 returns (StreamingInputCallResponse);
60
61 // A sequence of requests with each request served by the server immediately.
62 // As one request could lead to multiple responses, this interface
63 // demonstrates the idea of full duplexing.
64 rpc FullDuplexCall(stream StreamingOutputCallRequest)
65 returns (stream StreamingOutputCallResponse);
66
67 // A sequence of requests followed by a sequence of responses.
68 // The server buffers all the client requests and then serves them in order. A
69 // stream of responses are returned to the client when the server starts with
70 // first request.
71 rpc HalfDuplexCall(stream StreamingOutputCallRequest)
72 returns (stream StreamingOutputCallResponse);
73}