diff --git a/src/objective-c/tests/build_example_test.sh b/src/objective-c/tests/build_example_test.sh deleted file mode 100755 index 9afd7564c97..00000000000 --- a/src/objective-c/tests/build_example_test.sh +++ /dev/null @@ -1,57 +0,0 @@ -#!/bin/bash -# Copyright 2016 gRPC authors. -# -# Licensed under the Apache License, Version 2.0 (the "License"); -# you may not use this file except in compliance with the License. -# You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, software -# distributed under the License is distributed on an "AS IS" BASIS, -# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -# See the License for the specific language governing permissions and -# limitations under the License. - -# Don't run this script standalone. Instead, run from the repository root: -# ./tools/run_tests/run_tests.py -l objc - -set -evo pipefail - -cd `dirname $0` - -trap 'echo "EXIT TIME: $(date)"' EXIT - -echo "TIME: $(date)" -SCHEME=HelloWorld \ - EXAMPLE_PATH=examples/objective-c/helloworld \ - ./build_one_example.sh - -echo "TIME: $(date)" -SCHEME=RouteGuideClient \ - EXAMPLE_PATH=examples/objective-c/route_guide \ - ./build_one_example.sh - -echo "TIME: $(date)" -SCHEME=AuthSample \ - EXAMPLE_PATH=examples/objective-c/auth_sample \ - ./build_one_example.sh - -rm -f ../examples/RemoteTestClient/*.{h,m} - -echo "TIME: $(date)" -SCHEME=Sample \ - EXAMPLE_PATH=src/objective-c/examples/Sample \ - ./build_one_example.sh - -echo "TIME: $(date)" -SCHEME=Sample \ - EXAMPLE_PATH=src/objective-c/examples/Sample \ - FRAMEWORKS=YES \ - ./build_one_example.sh - -echo "TIME: $(date)" -SCHEME=SwiftSample \ - EXAMPLE_PATH=src/objective-c/examples/SwiftSample \ - ./build_one_example.sh - diff --git a/src/objective-c/tests/run_plugin_tests.sh b/src/objective-c/tests/run_plugin_tests.sh new file mode 100755 index 00000000000..bcab3bb9cff --- /dev/null +++ b/src/objective-c/tests/run_plugin_tests.sh @@ -0,0 +1,64 @@ +#!/bin/bash +# Copyright 2015 gRPC authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Don't run this script standalone. Instead, run from the repository root: +# ./tools/run_tests/run_tests.py -l objc + +set -ev + +cd $(dirname $0) + +# Run the tests server. + +BINDIR=../../../bins/$CONFIG +PROTOC=$BINDIR/protobuf/protoc +PLUGIN=$BINDIR/grpc_objective_c_plugin + +rm -rf PluginTest/*pb* + +$PROTOC \ + --plugin=protoc-gen-grpc=$PLUGIN \ + --objc_out=PluginTest \ + --grpc_out=PluginTest \ + -I PluginTest \ + -I ../../../third_party/protobuf/src \ + PluginTest/*.proto + +# Verify the output proto filename +[ -e ./PluginTest/TestDashFilename.pbrpc.h ] || { + echo >&2 "protoc outputs wrong filename." + exit 1 +} + +# TODO(jtattermusch): rewrite the tests to make them more readable. +# Also, the way they are written, they need one extra command to run in order to +# clear $? after they run (see end of this script) +# Verify names of the imported protos in generated code don't contain dashes. +[ "`cat PluginTest/TestDashFilename.pbrpc.h | + egrep '#import ".*\.pb(objc|rpc)\.h"$' | + egrep '-'`" ] && { + echo >&2 "protoc generated import with wrong filename." + exit 1 +} +[ "`cat PluginTest/TestDashFilename.pbrpc.m | + egrep '#import ".*\.pb(objc|rpc)\.h"$' | + egrep '-'`" ] && { + echo >&2 "protoc generated import with wrong filename." + exit 1 +} + +# Run one extra command to clear $? before exiting the script to prevent +# failing even when tests pass. +echo "Plugin tests passed." diff --git a/src/objective-c/tests/run_tests.sh b/src/objective-c/tests/run_tests.sh index d9c78ebac90..8843edaedeb 100755 --- a/src/objective-c/tests/run_tests.sh +++ b/src/objective-c/tests/run_tests.sh @@ -23,38 +23,6 @@ cd $(dirname $0) # Run the tests server. BINDIR=../../../bins/$CONFIG -PROTOC=$BINDIR/protobuf/protoc -PLUGIN=$BINDIR/grpc_objective_c_plugin - -rm -rf PluginTest/*pb* - -# Verify the output proto filename -eval $PROTOC \ - --plugin=protoc-gen-grpc=$PLUGIN \ - --objc_out=PluginTest \ - --grpc_out=PluginTest \ - -I PluginTest \ - -I ../../../third_party/protobuf/src \ - PluginTest/*.proto - -[ -e ./PluginTest/TestDashFilename.pbrpc.h ] || { - echo >&2 "protoc outputs wrong filename." - exit 1 -} - -# Verify names of the imported protos in generated code -[ "`cat PluginTest/TestDashFilename.pbrpc.h | - egrep '#import ".*\.pb(objc|rpc)\.h"$' | - egrep '-'`" ] && { - echo >&2 "protoc generated import with wrong filename." - exit 1 -} -[ "`cat PluginTest/TestDashFilename.pbrpc.m | - egrep '#import ".*\.pb(objc|rpc)\.m"$' | - egrep '-'`" ] && { - echo >&2 "protoc generated import with wrong filename." - exit 1 -} [ -f $BINDIR/interop_server ] || { echo >&2 "Can't find the test server. Make sure run_tests.py is making" \ diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py index 19186bea124..a695a62827c 100755 --- a/tools/run_tests/run_tests.py +++ b/tools/run_tests/run_tests.py @@ -888,11 +888,50 @@ class ObjCLanguage(object): self.config.job_spec(['src/objective-c/tests/run_tests.sh'], timeout_seconds=60*60, shortname='objc-tests', + cpu_cost=1e6, environ=_FORCE_ENVIRON_FOR_WRAPPERS), - self.config.job_spec(['src/objective-c/tests/build_example_test.sh'], - timeout_seconds=30*60, - shortname='objc-examples-build', + self.config.job_spec(['src/objective-c/tests/run_plugin_tests.sh'], + timeout_seconds=60*60, + shortname='objc-plugin-tests', + cpu_cost=1e6, environ=_FORCE_ENVIRON_FOR_WRAPPERS), + self.config.job_spec(['src/objective-c/tests/build_one_example.sh'], + timeout_seconds=10*60, + shortname='objc-build-example-helloworld', + cpu_cost=1e6, + environ={'SCHEME': 'HelloWorld', + 'EXAMPLE_PATH': 'examples/objective-c/helloworld'}), + self.config.job_spec(['src/objective-c/tests/build_one_example.sh'], + timeout_seconds=10*60, + shortname='objc-build-example-routeguide', + cpu_cost=1e6, + environ={'SCHEME': 'RouteGuideClient', + 'EXAMPLE_PATH': 'examples/objective-c/route_guide'}), + self.config.job_spec(['src/objective-c/tests/build_one_example.sh'], + timeout_seconds=10*60, + shortname='objc-build-example-authsample', + cpu_cost=1e6, + environ={'SCHEME': 'AuthSample', + 'EXAMPLE_PATH': 'examples/objective-c/auth_sample'}), + self.config.job_spec(['src/objective-c/tests/build_one_example.sh'], + timeout_seconds=10*60, + shortname='objc-build-example-sample', + cpu_cost=1e6, + environ={'SCHEME': 'Sample', + 'EXAMPLE_PATH': 'src/objective-c/examples/Sample'}), + self.config.job_spec(['src/objective-c/tests/build_one_example.sh'], + timeout_seconds=10*60, + shortname='objc-build-example-sample-frameworks', + cpu_cost=1e6, + environ={'SCHEME': 'Sample', + 'EXAMPLE_PATH': 'src/objective-c/examples/Sample', + 'FRAMEWORKS': 'YES'}), + self.config.job_spec(['src/objective-c/tests/build_one_example.sh'], + timeout_seconds=10*60, + shortname='objc-build-example-switftsample', + cpu_cost=1e6, + environ={'SCHEME': 'SwiftSample', + 'EXAMPLE_PATH': 'src/objective-c/examples/SwiftSample'}), ] def pre_build_steps(self):