aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGravatar Michael Lumish <mlumish@google.com>2015-07-31 08:39:10 -0700
committerGravatar Michael Lumish <mlumish@google.com>2015-07-31 08:39:10 -0700
commit5d405bd3ec5fbff80f6ab58a72ad670800370418 (patch)
tree8fda0ab0d471a54cac8517d294d1679c681771c8
parent909917955c99f6b32f34b4966c252daca0fe7061 (diff)
parentd0b32e9a55a11aa19263396c340b5f9f31119d2a (diff)
Merge pull request #2663 from jcanizales/run-test-server-locally
Run test server locally
-rw-r--r--src/objective-c/generated_libraries/RemoteTestClient/RemoteTest.podspec6
-rw-r--r--src/objective-c/generated_libraries/RouteGuideClient/RouteGuide.podspec6
-rw-r--r--src/objective-c/tests/GRPCClientTests.m3
-rw-r--r--src/objective-c/tests/InteropTests.m4
-rw-r--r--src/objective-c/tests/Tests.xcodeproj/xcshareddata/xcschemes/AllTests.xcscheme6
-rwxr-xr-xsrc/objective-c/tests/build_tests.sh39
-rwxr-xr-xsrc/objective-c/tests/run_tests.sh7
-rwxr-xr-xtools/run_tests/run_tests.py20
8 files changed, 76 insertions, 15 deletions
diff --git a/src/objective-c/generated_libraries/RemoteTestClient/RemoteTest.podspec b/src/objective-c/generated_libraries/RemoteTestClient/RemoteTest.podspec
index 7cc9a040fe..6b00efebb8 100644
--- a/src/objective-c/generated_libraries/RemoteTestClient/RemoteTest.podspec
+++ b/src/objective-c/generated_libraries/RemoteTestClient/RemoteTest.podspec
@@ -8,11 +8,7 @@ Pod::Spec.new do |s|
# Run protoc with the Objective-C and gRPC plugins to generate protocol messages and gRPC clients.
s.prepare_command = <<-CMD
- cd ../../../..
- # TODO(jcanizales): Make only Objective-C plugin.
- make plugins
- cd -
- protoc --plugin=protoc-gen-grpc=../../../../bins/opt/grpc_objective_c_plugin --objc_out=. --grpc_out=. *.proto
+ protoc --plugin=protoc-gen-grpc=../../../../bins/$CONFIG/grpc_objective_c_plugin --objc_out=. --grpc_out=. *.proto
CMD
s.subspec "Messages" do |ms|
diff --git a/src/objective-c/generated_libraries/RouteGuideClient/RouteGuide.podspec b/src/objective-c/generated_libraries/RouteGuideClient/RouteGuide.podspec
index 0e8dacd1c4..2c9cead7cf 100644
--- a/src/objective-c/generated_libraries/RouteGuideClient/RouteGuide.podspec
+++ b/src/objective-c/generated_libraries/RouteGuideClient/RouteGuide.podspec
@@ -8,11 +8,7 @@ Pod::Spec.new do |s|
# Run protoc with the Objective-C and gRPC plugins to generate protocol messages and gRPC clients.
s.prepare_command = <<-CMD
- cd ../../../..
- # TODO(jcanizales): Make only Objective-C plugin.
- make plugins
- cd -
- protoc --plugin=protoc-gen-grpc=../../../../bins/opt/grpc_objective_c_plugin --objc_out=. --grpc_out=. *.proto
+ protoc --plugin=protoc-gen-grpc=../../../../bins/$CONFIG/grpc_objective_c_plugin --objc_out=. --grpc_out=. *.proto
CMD
s.subspec "Messages" do |ms|
diff --git a/src/objective-c/tests/GRPCClientTests.m b/src/objective-c/tests/GRPCClientTests.m
index 3210ad7050..103e5ca3d4 100644
--- a/src/objective-c/tests/GRPCClientTests.m
+++ b/src/objective-c/tests/GRPCClientTests.m
@@ -43,7 +43,8 @@
// These are a few tests similar to InteropTests, but which use the generic gRPC client (GRPCCall)
// rather than a generated proto library on top of it.
-static NSString * const kHostAddress = @"grpc-test.sandbox.google.com";
+// grpc-test.sandbox.google.com
+static NSString * const kHostAddress = @"http://localhost:5050";
static NSString * const kPackage = @"grpc.testing";
static NSString * const kService = @"TestService";
diff --git a/src/objective-c/tests/InteropTests.m b/src/objective-c/tests/InteropTests.m
index 501f33317a..b473d73422 100644
--- a/src/objective-c/tests/InteropTests.m
+++ b/src/objective-c/tests/InteropTests.m
@@ -83,8 +83,10 @@
RMTTestService *_service;
}
+// grpc-test.sandbox.google.com
+
- (void)setUp {
- _service = [[RMTTestService alloc] initWithHost:@"grpc-test.sandbox.google.com"];
+ _service = [[RMTTestService alloc] initWithHost:@"http://localhost:5050"];
}
// Tests as described here: https://github.com/grpc/grpc/blob/master/doc/interop-test-descriptions.md
diff --git a/src/objective-c/tests/Tests.xcodeproj/xcshareddata/xcschemes/AllTests.xcscheme b/src/objective-c/tests/Tests.xcodeproj/xcshareddata/xcschemes/AllTests.xcscheme
index 3a6e2c3591..a7e0ed110e 100644
--- a/src/objective-c/tests/Tests.xcodeproj/xcshareddata/xcschemes/AllTests.xcscheme
+++ b/src/objective-c/tests/Tests.xcodeproj/xcshareddata/xcschemes/AllTests.xcscheme
@@ -39,6 +39,12 @@
</BuildableReference>
<SkippedTests>
<Test
+ Identifier = "GRPCClientTests/testConnectionToRemoteServer">
+ </Test>
+ <Test
+ Identifier = "GRPCClientTests/testMetadata">
+ </Test>
+ <Test
Identifier = "LocalClearTextTests">
</Test>
<Test
diff --git a/src/objective-c/tests/build_tests.sh b/src/objective-c/tests/build_tests.sh
new file mode 100755
index 0000000000..d98e0a769c
--- /dev/null
+++ b/src/objective-c/tests/build_tests.sh
@@ -0,0 +1,39 @@
+#!/bin/bash
+# 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.
+
+set -e
+
+cd $(dirname $0)
+
+# The local test server needs to be compiled before this because pod install of
+# gRPC renames some C gRPC files and not the server's code references to them.
+#
+# Suppress error output because Cocoapods issue #3823 causes a flooding warning.
+pod install 2>/dev/null
diff --git a/src/objective-c/tests/run_tests.sh b/src/objective-c/tests/run_tests.sh
index 37fced3a62..9afec687d6 100755
--- a/src/objective-c/tests/run_tests.sh
+++ b/src/objective-c/tests/run_tests.sh
@@ -32,9 +32,10 @@ set -e
cd $(dirname $0)
-# TODO(jcanizales): Remove when Cocoapods issue #3823 is resolved.
-export COCOAPODS_DISABLE_DETERMINISTIC_UUIDS=YES
-pod install
+# Run the tests server.
+../../../bins/$CONFIG/interop_server --port=5050 &
+# Kill it when this script exits.
+trap 'kill -9 `jobs -p`' EXIT
# xcodebuild is very verbose. We filter its output and tell Bash to fail if any
# element of the pipe fails.
diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py
index 38da1f043a..50d88e66de 100755
--- a/tools/run_tests/run_tests.py
+++ b/tools/run_tests/run_tests.py
@@ -304,6 +304,25 @@ class CSharpLanguage(object):
return 'csharp'
+class ObjCLanguage(object):
+
+ def test_specs(self, config, travis):
+ return [config.job_spec(['src/objective-c/tests/run_tests.sh'], None,
+ environ=_FORCE_ENVIRON_FOR_WRAPPERS)]
+
+ def make_targets(self):
+ return ['grpc_objective_c_plugin', 'interop_server']
+
+ def build_steps(self):
+ return [['src/objective-c/tests/build_tests.sh']]
+
+ def supports_multi_config(self):
+ return False
+
+ def __str__(self):
+ return 'objc'
+
+
class Sanity(object):
def test_specs(self, config, travis):
@@ -369,6 +388,7 @@ _LANGUAGES = {
'python': PythonLanguage(),
'ruby': RubyLanguage(),
'csharp': CSharpLanguage(),
+ 'objc' : ObjCLanguage(),
'sanity': Sanity(),
'build': Build(),
}