diff --git a/src/objective-c/tests/UnitTests/GRPCClientTests.m b/src/objective-c/tests/UnitTests/GRPCClientTests.m index de687e471a8..8f094439035 100644 --- a/src/objective-c/tests/UnitTests/GRPCClientTests.m +++ b/src/objective-c/tests/UnitTests/GRPCClientTests.m @@ -33,6 +33,7 @@ #include +#import "../Common/TestUtils.h" #import "../version.h" #define TEST_TIMEOUT 16 @@ -41,7 +42,6 @@ // in turn derived from environment variable of the same name. #define NSStringize_helper(x) #x #define NSStringize(x) @NSStringize_helper(x) -static NSString *const kHostAddress = NSStringize(HOST_PORT_LOCAL); static NSString *const kPackage = @"grpc.testing"; static NSString *const kService = @"TestService"; @@ -108,10 +108,10 @@ static GRPCProtoMethod *kFullDuplexCallMethod; - (void)setUp { // Add a custom user agent prefix and suffix that will be used in test - [GRPCCall setUserAgentPrefix:@"Foo" forHost:kHostAddress]; - [GRPCCall setUserAgentSuffix:@"Suffix" forHost:kHostAddress]; + [GRPCCall setUserAgentPrefix:@"Foo" forHost:GRPCGetLocalInteropTestServerAddressPlainText()]; + [GRPCCall setUserAgentSuffix:@"Suffix" forHost:GRPCGetLocalInteropTestServerAddressPlainText()]; // Register test server as non-SSL. - [GRPCCall useInsecureConnectionsForHost:kHostAddress]; + [GRPCCall useInsecureConnectionsForHost:GRPCGetLocalInteropTestServerAddressPlainText()]; // This method isn't implemented by the remote server. kInexistentMethod = [[GRPCProtoMethod alloc] initWithPackage:kPackage @@ -131,7 +131,7 @@ static GRPCProtoMethod *kFullDuplexCallMethod; - (void)testConnectionToRemoteServer { __weak XCTestExpectation *expectation = [self expectationWithDescription:@"Server reachable."]; - GRPCCall *call = [[GRPCCall alloc] initWithHost:kHostAddress + GRPCCall *call = [[GRPCCall alloc] initWithHost:GRPCGetLocalInteropTestServerAddressPlainText() path:kInexistentMethod.HTTPPath requestsWriter:[GRXWriter writerWithValue:[NSData data]]]; @@ -155,7 +155,7 @@ static GRPCProtoMethod *kFullDuplexCallMethod; [self expectationWithDescription:@"Empty response received."]; __weak XCTestExpectation *completion = [self expectationWithDescription:@"Empty RPC completed."]; - GRPCCall *call = [[GRPCCall alloc] initWithHost:kHostAddress + GRPCCall *call = [[GRPCCall alloc] initWithHost:GRPCGetLocalInteropTestServerAddressPlainText() path:kEmptyCallMethod.HTTPPath requestsWriter:[GRXWriter writerWithValue:[NSData data]]]; @@ -185,7 +185,7 @@ static GRPCProtoMethod *kFullDuplexCallMethod; request.fillOauthScope = YES; GRXWriter *requestsWriter = [GRXWriter writerWithValue:[request data]]; - GRPCCall *call = [[GRPCCall alloc] initWithHost:kHostAddress + GRPCCall *call = [[GRPCCall alloc] initWithHost:GRPCGetLocalInteropTestServerAddressPlainText() path:kUnaryCallMethod.HTTPPath requestsWriter:requestsWriter]; @@ -215,7 +215,7 @@ static GRPCProtoMethod *kFullDuplexCallMethod; __weak XCTestExpectation *completion = [self expectationWithDescription:@"Empty RPC completed."]; __weak XCTestExpectation *metadata = [self expectationWithDescription:@"Metadata changed."]; - GRPCCall *call = [[GRPCCall alloc] initWithHost:kHostAddress + GRPCCall *call = [[GRPCCall alloc] initWithHost:GRPCGetLocalInteropTestServerAddressPlainText() path:kEmptyCallMethod.HTTPPath requestsWriter:[GRXWriter writerWithValue:[NSData data]]]; @@ -249,7 +249,7 @@ static GRPCProtoMethod *kFullDuplexCallMethod; [self expectationWithDescription:@"Empty response received."]; __weak XCTestExpectation *completion = [self expectationWithDescription:@"Empty RPC completed."]; - GRPCCall *call = [[GRPCCall alloc] initWithHost:kHostAddress + GRPCCall *call = [[GRPCCall alloc] initWithHost:GRPCGetLocalInteropTestServerAddressPlainText() path:kEmptyCallMethod.HTTPPath requestsWriter:[GRXWriter writerWithValue:[NSData data]]]; // Setting this special key in the header will cause the interop server to echo back the @@ -309,7 +309,7 @@ static GRPCProtoMethod *kFullDuplexCallMethod; [self expectationWithDescription:@"Empty response received."]; __weak XCTestExpectation *completion = [self expectationWithDescription:@"Empty RPC completed."]; - GRPCCall *call = [[GRPCCall alloc] initWithHost:kHostAddress + GRPCCall *call = [[GRPCCall alloc] initWithHost:GRPCGetLocalInteropTestServerAddressPlainText() path:kEmptyCallMethod.HTTPPath requestsWriter:[GRXWriter writerWithValue:[NSData data]]]; // Setting this special key in the header will cause the interop server to echo back the @@ -350,7 +350,7 @@ static GRPCProtoMethod *kFullDuplexCallMethod; GRXWriter *requestsWriter = [GRXWriter emptyWriter]; [requestsWriter finishWithError:nil]; @try { - (void)[[GRPCCall alloc] initWithHost:kHostAddress + (void)[[GRPCCall alloc] initWithHost:GRPCGetLocalInteropTestServerAddressPlainText() path:kUnaryCallMethod.HTTPPath requestsWriter:requestsWriter]; XCTFail(@"Did not receive an exception when GRXWriter has incorrect state."); @@ -373,7 +373,7 @@ static GRPCProtoMethod *kFullDuplexCallMethod; GRXWriter *requestsWriter1 = [GRXWriter writerWithValue:[request data]]; - GRPCCall *call1 = [[GRPCCall alloc] initWithHost:kHostAddress + GRPCCall *call1 = [[GRPCCall alloc] initWithHost:GRPCGetLocalInteropTestServerAddressPlainText() path:kUnaryCallMethod.HTTPPath requestsWriter:requestsWriter1]; @@ -401,7 +401,7 @@ static GRPCProtoMethod *kFullDuplexCallMethod; GRXWriter *requestsWriter2 = [GRXWriter writerWithValue:[request data]]; - GRPCCall *call2 = [[GRPCCall alloc] initWithHost:kHostAddress + GRPCCall *call2 = [[GRPCCall alloc] initWithHost:GRPCGetLocalInteropTestServerAddressPlainText() path:kUnaryCallMethod.HTTPPath requestsWriter:requestsWriter2]; @@ -427,7 +427,7 @@ static GRPCProtoMethod *kFullDuplexCallMethod; __weak XCTestExpectation *completion = [self expectationWithDescription:@"RPC completed."]; GRXBufferedPipe *pipe = [GRXBufferedPipe pipe]; - GRPCCall *call = [[GRPCCall alloc] initWithHost:kHostAddress + GRPCCall *call = [[GRPCCall alloc] initWithHost:GRPCGetLocalInteropTestServerAddressPlainText() path:kFullDuplexCallMethod.HTTPPath requestsWriter:pipe]; diff --git a/src/objective-c/tests/run_one_test_bazel.sh b/src/objective-c/tests/run_one_test_bazel.sh index 09da7bfbd59..2cbca248a3f 100755 --- a/src/objective-c/tests/run_one_test_bazel.sh +++ b/src/objective-c/tests/run_one_test_bazel.sh @@ -27,12 +27,8 @@ 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 + $BAZEL build //test/cpp/interop:interop_server } [ -z "$(ps aux |egrep 'port_server\.py.*-p\s32766')" ] && { @@ -48,4 +44,7 @@ $INTEROP --port=$TLS_PORT --max_send_message_size=8388608 --use_tls & trap 'kill -9 `jobs -p` ; echo "EXIT TIME: $(date)"' EXIT -../../../tools/bazel run $SCHEME +time $BAZEL run \ + --test_env HOST_PORT_LOCALSSL=localhost:$TLS_PORT \ + --test_env HOST_PORT_LOCAL=localhost:$PLAIN_PORT \ + $SCHEME diff --git a/tools/internal_ci/macos/grpc_objc_bazel_test.sh b/tools/internal_ci/macos/grpc_objc_bazel_test.sh index 2ed9c7c4130..9ecb0237ad5 100755 --- a/tools/internal_ci/macos/grpc_objc_bazel_test.sh +++ b/tools/internal_ci/macos/grpc_objc_bazel_test.sh @@ -69,11 +69,17 @@ build_interop_server/bazel_wrapper \ -- \ //test/cpp/interop:interop_server +# Start port server and allocate ports to run interop_server +python3 tools/run_tests/start_port_server.py + +PLAIN_PORT=$(curl localhost:32766/get) +TLS_PORT=$(curl localhost:32766/get) + INTEROP_SERVER_BINARY=bazel-bin/test/cpp/interop/interop_server # run the interop server on the background. The port numbers must match TestConfigs in BUILD. # TODO(jtattermusch): can we make the ports configurable (but avoid breaking bazel build cache at the same time?) -"${INTEROP_SERVER_BINARY}" --port=5050 --max_send_message_size=8388608 & -"${INTEROP_SERVER_BINARY}" --port=5051 --max_send_message_size=8388608 --use_tls & +"${INTEROP_SERVER_BINARY}" --port=$PLAIN_PORT --max_send_message_size=8388608 & +"${INTEROP_SERVER_BINARY}" --port=$TLS_PORT --max_send_message_size=8388608 --use_tls & # make sure the interop_server processes we started on the background are killed upon exit. trap 'echo "KILLING interop_server binaries running on the background"; kill -9 $(jobs -p)' EXIT # === END SECTION: run interop_server on the background ==== @@ -90,6 +96,8 @@ objc_bazel_tests/bazel_wrapper \ --google_credentials="${KOKORO_GFILE_DIR}/GrpcTesting-d0eeee2db331.json" \ "${BAZEL_REMOTE_CACHE_ARGS[@]}" \ $BAZEL_FLAGS \ + --test_env HOST_PORT_LOCAL=localhost:$PLAIN_PORT \ + --test_env HOST_PORT_LOCALSSL=localhost:$TLS_PORT \ -- \ "${EXAMPLE_TARGETS[@]}" \ "${TEST_TARGETS[@]}"