diff options
author | Muxi Yan <mxyan@google.com> | 2017-06-06 11:13:09 -0700 |
---|---|---|
committer | Muxi Yan <mxyan@google.com> | 2017-06-06 11:13:09 -0700 |
commit | 6a8763eca9866d6e94dfbff9ca8c133e5ef6e5c5 (patch) | |
tree | ca6aacc9c30e30a9bdaed54fe909b61d00c0a45a /src/objective-c/tests | |
parent | 732498b9111e1fd8604e45ca6877147d86302715 (diff) |
Add test to verify objective c plugin outputs correct filename
Diffstat (limited to 'src/objective-c/tests')
-rw-r--r-- | src/objective-c/tests/RemoteTestClient/test-dash-filename.proto | 72 | ||||
-rwxr-xr-x | src/objective-c/tests/build_tests.sh | 23 |
2 files changed, 95 insertions, 0 deletions
diff --git a/src/objective-c/tests/RemoteTestClient/test-dash-filename.proto b/src/objective-c/tests/RemoteTestClient/test-dash-filename.proto new file mode 100644 index 0000000000..5c359c5c12 --- /dev/null +++ b/src/objective-c/tests/RemoteTestClient/test-dash-filename.proto @@ -0,0 +1,72 @@ +// Copyright 2015, Google Inc. +// All rights reserved. +// +// Redistribution and use in source and binary forms, with or without +// modification, are permitted provided that the following conditions are +// met: +// +// * Redistributions of source code must retain the above copyright +// notice, this list of conditions and the following disclaimer. +// * Redistributions in binary form must reproduce the above +// copyright notice, this list of conditions and the following disclaimer +// in the documentation and/or other materials provided with the +// distribution. +// * Neither the name of Google Inc. nor the names of its +// contributors may be used to endorse or promote products derived from +// this software without specific prior written permission. +// +// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +// An integration test service that covers all the method signature permutations +// of unary/streaming requests/responses. +syntax = "proto3"; + +import "google/protobuf/empty.proto"; +import "messages.proto"; + +package grpc.testing; + +option objc_class_prefix = "RMT"; + +// A simple service to test the various types of RPCs and experiment with +// performance with various types of payload. +service TestService { + // One empty request followed by one empty response. + rpc EmptyCall(google.protobuf.Empty) returns (google.protobuf.Empty); + + // One request followed by one response. + rpc UnaryCall(SimpleRequest) returns (SimpleResponse); + + // One request followed by a sequence of responses (streamed download). + // The server returns the payload with client desired type and sizes. + rpc StreamingOutputCall(StreamingOutputCallRequest) + returns (stream StreamingOutputCallResponse); + + // A sequence of requests followed by one response (streamed upload). + // The server returns the aggregated size of client payload as the result. + rpc StreamingInputCall(stream StreamingInputCallRequest) + returns (StreamingInputCallResponse); + + // A sequence of requests with each request served by the server immediately. + // As one request could lead to multiple responses, this interface + // demonstrates the idea of full duplexing. + rpc FullDuplexCall(stream StreamingOutputCallRequest) + returns (stream StreamingOutputCallResponse); + + // A sequence of requests followed by a sequence of responses. + // The server buffers all the client requests and then serves them in order. A + // stream of responses are returned to the client when the server starts with + // first request. + rpc HalfDuplexCall(stream StreamingOutputCallRequest) + returns (stream StreamingOutputCallResponse); +} diff --git a/src/objective-c/tests/build_tests.sh b/src/objective-c/tests/build_tests.sh index 6602d510d9..496dbcbe60 100755 --- a/src/objective-c/tests/build_tests.sh +++ b/src/objective-c/tests/build_tests.sh @@ -52,3 +52,26 @@ rm -f RemoteTestClient/*.{h,m} echo "TIME: $(date)" pod install + +# Verify the output proto name +[ -e ./RemoteTestClient/Test-dash-filename.pbrpc.h ] || { + echo >&2 "protoc outputs wrong filename." + exit 1 +} + +# Verify the output proto name when dash is treated as separator +PROTOC=../../../bins/$CONFIG/protobuf/protoc +PLUGIN=../../../bins/$CONFIG/grpc_objective_c_plugin + +eval $PROTOC \ + --plugin=protoc-gen-grpc=$PLUGIN \ + --objc_out=RemoteTestClient \ + --grpc_out=filename-dash-as-separator:RemoteTestClient \ + -I RemoteTestClient \ + -I ../../../third_party/protobuf/src \ + RemoteTestClient/*.proto + +[ -e ./RemoteTestClient/TestDashFilename.pbrpc.h ] || { + echo >&2 "protoc outputs wring filename. 2" + exit 1 +} |