1// Copyright 2015 The 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// Message definitions to be used by integration test service definitions.
15
16syntax = "proto3";
17
18package grpc.testing;
19
20option java_package = "io.grpc.benchmarks.proto";
21option java_outer_classname = "Messages";
22
23// TODO(dgq): Go back to using well-known types once
24// https://github.com/grpc/grpc/issues/6980 has been fixed.
25// import "google/protobuf/wrappers.proto";
26message BoolValue {
27  // The bool value.
28  bool value = 1;
29}
30
31// DEPRECATED, don't use. To be removed shortly.
32// The type of payload that should be returned.
33enum PayloadType {
34  // Compressable text format.
35  COMPRESSABLE = 0;
36}
37
38// A block of data, to simply increase gRPC message size.
39message Payload {
40  // DEPRECATED, don't use. To be removed shortly.
41  // The type of data in body.
42  PayloadType type = 1;
43  // Primary contents of payload.
44  bytes body = 2;
45}
46
47// A protobuf representation for grpc status. This is used by test
48// clients to specify a status that the server should attempt to return.
49message EchoStatus {
50  int32 code = 1;
51  string message = 2;
52}
53
54// Unary request.
55message SimpleRequest {
56  // DEPRECATED, don't use. To be removed shortly.
57  // Desired payload type in the response from the server.
58  // If response_type is RANDOM, server randomly chooses one from other formats.
59  PayloadType response_type = 1;
60
61  // Desired payload size in the response from the server.
62  int32 response_size = 2;
63
64  // Optional input payload sent along with the request.
65  Payload payload = 3;
66
67  // Whether SimpleResponse should include username.
68  bool fill_username = 4;
69
70  // Whether SimpleResponse should include OAuth scope.
71  bool fill_oauth_scope = 5;
72
73  // Whether to request the server to compress the response. This field is
74  // "nullable" in order to interoperate seamlessly with clients not able to
75  // implement the full compression tests by introspecting the call to verify
76  // the response's compression status.
77  BoolValue response_compressed = 6;
78
79  // Whether server should return a given status
80  EchoStatus response_status = 7;
81
82  // Whether the server should expect this request to be compressed.
83  BoolValue expect_compressed = 8;
84}
85
86// Unary response, as configured by the request.
87message SimpleResponse {
88  // Payload to increase message size.
89  Payload payload = 1;
90  // The user the request came from, for verifying authentication was
91  // successful when the client expected it.
92  string username = 2;
93  // OAuth scope.
94  string oauth_scope = 3;
95}
96
97// Client-streaming request.
98message StreamingInputCallRequest {
99  // Optional input payload sent along with the request.
100  Payload payload = 1;
101
102  // Whether the server should expect this request to be compressed. This field
103  // is "nullable" in order to interoperate seamlessly with servers not able to
104  // implement the full compression tests by introspecting the call to verify
105  // the request's compression status.
106  BoolValue expect_compressed = 2;
107
108  // Not expecting any payload from the response.
109}
110
111// Client-streaming response.
112message StreamingInputCallResponse {
113  // Aggregated size of payloads received from the client.
114  int32 aggregated_payload_size = 1;
115}
116
117// Configuration for a particular response.
118message ResponseParameters {
119  // Desired payload sizes in responses from the server.
120  int32 size = 1;
121
122  // Desired interval between consecutive responses in the response stream in
123  // microseconds.
124  int32 interval_us = 2;
125
126  // Whether to request the server to compress the response. This field is
127  // "nullable" in order to interoperate seamlessly with clients not able to
128  // implement the full compression tests by introspecting the call to verify
129  // the response's compression status.
130  BoolValue compressed = 3;
131}
132
133// Server-streaming request.
134message StreamingOutputCallRequest {
135  // DEPRECATED, don't use. To be removed shortly.
136  // Desired payload type in the response from the server.
137  // If response_type is RANDOM, the payload from each response in the stream
138  // might be of different types. This is to simulate a mixed type of payload
139  // stream.
140  PayloadType response_type = 1;
141
142  // Configuration for each expected response message.
143  repeated ResponseParameters response_parameters = 2;
144
145  // Optional input payload sent along with the request.
146  Payload payload = 3;
147
148  // Whether server should return a given status
149  EchoStatus response_status = 7;
150}
151
152// Server-streaming response, as configured by the request and parameters.
153message StreamingOutputCallResponse {
154  // Payload to increase response size.
155  Payload payload = 1;
156}
157
158// For reconnect interop test only.
159// Client tells server what reconnection parameters it used.
160message ReconnectParams {
161  int32 max_reconnect_backoff_ms = 1;
162}
163
164// For reconnect interop test only.
165// Server tells client whether its reconnects are following the spec and the
166// reconnect backoffs it saw.
167message ReconnectInfo {
168  bool passed = 1;
169  repeated int32 backoff_ms = 2;
170}
171