From 0b2b94e2b8ce8ce54bb15dd32595a7dd0fe2a1ac Mon Sep 17 00:00:00 2001 From: Muxi Yan Date: Mon, 14 Oct 2019 10:13:16 -0700 Subject: [PATCH] address comment --- src/objective-c/ProtoRPC/ProtoRPC.m | 4 ++-- .../tests/InteropTests/InteropTests.m | 18 +++++++++++++++++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/objective-c/ProtoRPC/ProtoRPC.m b/src/objective-c/ProtoRPC/ProtoRPC.m index e73f909fd6b..3d0c4ae283a 100644 --- a/src/objective-c/ProtoRPC/ProtoRPC.m +++ b/src/objective-c/ProtoRPC/ProtoRPC.m @@ -39,9 +39,9 @@ if ((self = [super init])) { _responseHandler = handler; if (dispatchQueue == nil) { - _responseDispatchQueue = dispatchQueue; - } else { _responseDispatchQueue = dispatch_get_main_queue(); + } else { + _responseDispatchQueue = dispatchQueue; } } return self; diff --git a/src/objective-c/tests/InteropTests/InteropTests.m b/src/objective-c/tests/InteropTests/InteropTests.m index 55c2ea7753c..bf5266e335d 100644 --- a/src/objective-c/tests/InteropTests/InteropTests.m +++ b/src/objective-c/tests/InteropTests/InteropTests.m @@ -567,7 +567,8 @@ static dispatch_once_t initGlobalInterceptorFactory; XCTAssertNotNil([[self class] host]); // The test does not work on a remote server since it does not echo a trailer if ([[self class] isRemoteTest]) return; - __weak XCTestExpectation *expectComplete = [self expectationWithDescription:@"received complete"]; + XCTestExpectation *expectComplete = [self expectationWithDescription:@"call complete"]; + XCTestExpectation *expectCompleteMainQueue = [self expectationWithDescription:@"main queue call complete"]; RMTSimpleRequest *request = [RMTSimpleRequest message]; request.responseType = RMTPayloadType_Compressable; @@ -600,7 +601,22 @@ static dispatch_once_t initGlobalInterceptorFactory; [expectComplete fulfill]; } responseDispatchQueue:dispatch_queue_create(NULL, DISPATCH_QUEUE_SERIAL)]; + __block GRPCUnaryResponseHandler *handlerMainQueue = [[GRPCUnaryResponseHandler alloc] + initWithResponseHandler:^(GPBMessage *response, NSError *error) { + XCTAssertNil(error, @"Unexpected error: %@", error); + RMTSimpleResponse *expectedResponse = [RMTSimpleResponse message]; + expectedResponse.payload.type = RMTPayloadType_Compressable; + expectedResponse.payload.body = [NSMutableData dataWithLength:314159]; + XCTAssertEqualObjects(response, expectedResponse); + XCTAssertEqualObjects(handlerMainQueue.responseHeaders[@"x-grpc-test-echo-initial"], @"test-header"); + XCTAssertEqualObjects(handlerMainQueue.responseTrailers[@"x-grpc-test-echo-trailing-bin"], + trailer_data); + [expectCompleteMainQueue fulfill]; + } + responseDispatchQueue:nil]; + [[_service unaryCallWithMessage:request responseHandler:handler callOptions:options] start]; + [[_service unaryCallWithMessage:request responseHandler:handlerMainQueue callOptions:options] start]; [self waitForExpectationsWithTimeout:TEST_TIMEOUT handler:nil]; }