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