|
|
|
@ -229,6 +229,52 @@ BOOL isRemoteInteropTest(NSString *host) { |
|
|
|
|
[self waitForExpectationsWithTimeout:TEST_TIMEOUT handler:nil]; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// Test that responses can be dispatched even if we do not run main run-loop |
|
|
|
|
- (void)testAsyncDispatchWithV2API { |
|
|
|
|
XCTAssertNotNil([[self class] host]); |
|
|
|
|
|
|
|
|
|
GPBEmpty *request = [GPBEmpty message]; |
|
|
|
|
GRPCMutableCallOptions *options = [[GRPCMutableCallOptions alloc] init]; |
|
|
|
|
options.transportType = [[self class] transportType]; |
|
|
|
|
options.PEMRootCertificates = [[self class] PEMRootCertificates]; |
|
|
|
|
options.hostNameOverride = [[self class] hostNameOverride]; |
|
|
|
|
|
|
|
|
|
__block BOOL messageReceived = NO; |
|
|
|
|
__block BOOL done = NO; |
|
|
|
|
NSCondition *cond = [[NSCondition alloc] init]; |
|
|
|
|
GRPCUnaryProtoCall *call = [_service |
|
|
|
|
emptyCallWithMessage:request |
|
|
|
|
responseHandler:[[InteropTestsBlockCallbacks alloc] initWithInitialMetadataCallback:nil |
|
|
|
|
messageCallback:^(id message) { |
|
|
|
|
if (message) { |
|
|
|
|
id expectedResponse = [GPBEmpty message]; |
|
|
|
|
XCTAssertEqualObjects(message, expectedResponse); |
|
|
|
|
[cond lock]; |
|
|
|
|
messageReceived = YES; |
|
|
|
|
[cond unlock]; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
closeCallback:^(NSDictionary *trailingMetadata, NSError *error) { |
|
|
|
|
XCTAssertNil(error, @"Unexpected error: %@", error); |
|
|
|
|
[cond lock]; |
|
|
|
|
done = YES; |
|
|
|
|
[cond signal]; |
|
|
|
|
[cond unlock]; |
|
|
|
|
}] |
|
|
|
|
callOptions:options]; |
|
|
|
|
|
|
|
|
|
NSDate *deadline = [NSDate dateWithTimeIntervalSinceNow:TEST_TIMEOUT]; |
|
|
|
|
[call start]; |
|
|
|
|
|
|
|
|
|
[cond lock]; |
|
|
|
|
while (!done && [deadline timeIntervalSinceNow] > 0) { |
|
|
|
|
[cond waitUntilDate:deadline]; |
|
|
|
|
} |
|
|
|
|
XCTAssertTrue(messageReceived); |
|
|
|
|
XCTAssertTrue(done); |
|
|
|
|
[cond unlock]; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
- (void)testLargeUnaryRPC { |
|
|
|
|
XCTAssertNotNil([[self class] host]); |
|
|
|
|
__weak XCTestExpectation *expectation = [self expectationWithDescription:@"LargeUnary"]; |
|
|
|
|