forked from grpc/grpc
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrun_one_test.sh
executable file
·92 lines (75 loc) · 2.67 KB
/
run_one_test.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#!/bin/bash
# Copyright 2019 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 -ex
cd $(dirname $0)
BAZEL=../../../tools/bazel
INTEROP=../../../bazel-out/darwin-fastbuild/bin/test/cpp/interop/interop_server
[ -d Tests.xcworkspace ] || {
./build_tests.sh
}
[ -f $INTEROP ] || {
$BAZEL build //test/cpp/interop:interop_server
}
[ -z "$(ps aux |egrep 'port_server\.py.*-p\s32766')" ] && {
echo >&2 "Can't find the port server. Start port server with tools/run_tests/start_port_server.py."
exit 1
}
PLAIN_PORT=$(curl localhost:32766/get)
TLS_PORT=$(curl localhost:32766/get)
# start interop_server for plaintext and interop_server for TLS on random ports obtained
# from the port server.
$INTEROP --port=$PLAIN_PORT --max_send_message_size=8388608 &
$INTEROP --port=$TLS_PORT --max_send_message_size=8388608 --use_tls &
# Create loopback aliases for iOS performance tests
if [ $SCHEME == PerfTests ] || [ $SCHEME == PerfTestsPosix ]; then
for ((i=2;i<11;i++))
do
sudo ifconfig lo0 alias 127.0.0.$i up
done
fi
function finish {
if [ $SCHEME == PerfTests ] || [ $SCHEME == PerfTestsPosix ]; then
for ((i=2;i<11;i++))
do
sudo ifconfig lo0 -alias 127.0.0.$i
done
fi
kill -9 `jobs -p`
echo "EXIT TIME: $(date)"
}
trap finish EXIT
set -o pipefail # preserve xcodebuild exit code when piping output
if [ -z $PLATFORM ]; then
DESTINATION='name=iPhone 8'
elif [ $PLATFORM == ios ]; then
DESTINATION='name=iPhone 8'
elif [ $PLATFORM == macos ]; then
DESTINATION='platform=macOS'
elif [ $PLATFORM == tvos ]; then
DESTINATION='platform=tvOS Simulator,name=Apple TV'
fi
XCODEBUILD_FILTER_OUTPUT_SCRIPT="./xcodebuild_filter_output.sh"
TEST_DEFS="HOST_PORT_LOCAL=localhost:$PLAIN_PORT \
HOST_PORT_LOCALSSL=localhost:$TLS_PORT \
HOST_PORT_REMOTE=grpc-test.sandbox.googleapis.com \
GCC_OPTIMIZATION_LEVEL=s"
time xcodebuild \
-workspace Tests.xcworkspace \
-scheme $SCHEME \
-destination "${DESTINATION}" \
GCC_PREPROCESSOR_DEFINITIONS='$GCC_PREPROCESSOR_DEFINITIONS'" $TEST_DEFS" \
test | "${XCODEBUILD_FILTER_OUTPUT_SCRIPT}"