|
|
|
@ -26,8 +26,8 @@ |
|
|
|
|
#import <RemoteTest/Test.pbrpc.h> |
|
|
|
|
#import <RxLibrary/GRXBufferedPipe.h> |
|
|
|
|
|
|
|
|
|
#import "InteropTestsBlockCallbacks.h" |
|
|
|
|
#import "../EnableCronet.h" |
|
|
|
|
#import "InteropTestsBlockCallbacks.h" |
|
|
|
|
|
|
|
|
|
#define NSStringize_helper(x) #x |
|
|
|
|
#define NSStringize(x) @NSStringize_helper(x) |
|
|
|
@ -67,8 +67,6 @@ static const NSTimeInterval TEST_TIMEOUT = 8000; |
|
|
|
|
} |
|
|
|
|
@end |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@interface InteropTestsMultipleChannels : XCTestCase |
|
|
|
|
|
|
|
|
|
@end |
|
|
|
@ -97,7 +95,6 @@ dispatch_once_t initCronet; |
|
|
|
|
// Cronet stack with remote host |
|
|
|
|
_remoteCronetService = [RMTTestService serviceWithHost:kRemoteSSLHost callOptions:options]; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Local stack with no SSL |
|
|
|
|
options = [[GRPCMutableCallOptions alloc] init]; |
|
|
|
|
options.transportType = GRPCTransportTypeInsecure; |
|
|
|
@ -134,42 +131,54 @@ dispatch_once_t initCronet; |
|
|
|
|
XCTAssertEqualObjects(message, expectedResponse); |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
GRPCUnaryProtoCall *callRemote = [_remoteService emptyCallWithMessage:request |
|
|
|
|
responseHandler:[[InteropTestsBlockCallbacks alloc] initWithInitialMetadataCallback:nil |
|
|
|
|
messageCallback:messageHandler |
|
|
|
|
closeCallback:^(NSDictionary *trailingMetadata, NSError *error) { |
|
|
|
|
XCTAssertNil(error); |
|
|
|
|
[expectRemote fulfill]; |
|
|
|
|
} |
|
|
|
|
writeMessageCallback:nil] |
|
|
|
|
callOptions:nil]; |
|
|
|
|
GRPCUnaryProtoCall *callCronet = [_remoteCronetService emptyCallWithMessage:request |
|
|
|
|
responseHandler:[[InteropTestsBlockCallbacks alloc] initWithInitialMetadataCallback:nil |
|
|
|
|
messageCallback:messageHandler |
|
|
|
|
closeCallback:^(NSDictionary *trailingMetadata, NSError *error) { |
|
|
|
|
XCTAssertNil(error); |
|
|
|
|
[expectCronetRemote fulfill]; |
|
|
|
|
} |
|
|
|
|
writeMessageCallback:nil] |
|
|
|
|
callOptions:nil]; |
|
|
|
|
GRPCUnaryProtoCall *callCleartext = [_localCleartextService emptyCallWithMessage:request |
|
|
|
|
responseHandler:[[InteropTestsBlockCallbacks alloc] initWithInitialMetadataCallback:nil |
|
|
|
|
messageCallback:messageHandler |
|
|
|
|
closeCallback:^(NSDictionary *trailingMetadata, NSError *error) { |
|
|
|
|
XCTAssertNil(error); |
|
|
|
|
[expectCleartext fulfill]; |
|
|
|
|
} |
|
|
|
|
writeMessageCallback:nil] |
|
|
|
|
callOptions:nil]; |
|
|
|
|
GRPCUnaryProtoCall *callSSL = [_localSSLService emptyCallWithMessage:request |
|
|
|
|
responseHandler:[[InteropTestsBlockCallbacks alloc] initWithInitialMetadataCallback:nil |
|
|
|
|
messageCallback:messageHandler |
|
|
|
|
closeCallback:^(NSDictionary *trailingMetadata, NSError *error) { |
|
|
|
|
XCTAssertNil(error); |
|
|
|
|
[expectSSL fulfill]; |
|
|
|
|
} |
|
|
|
|
writeMessageCallback:nil] |
|
|
|
|
callOptions:nil]; |
|
|
|
|
GRPCUnaryProtoCall *callRemote = [_remoteService |
|
|
|
|
emptyCallWithMessage:request |
|
|
|
|
responseHandler:[[InteropTestsBlockCallbacks alloc] |
|
|
|
|
initWithInitialMetadataCallback:nil |
|
|
|
|
messageCallback:messageHandler |
|
|
|
|
closeCallback:^(NSDictionary *trailingMetadata, |
|
|
|
|
NSError *error) { |
|
|
|
|
XCTAssertNil(error); |
|
|
|
|
[expectRemote fulfill]; |
|
|
|
|
} |
|
|
|
|
writeMessageCallback:nil] |
|
|
|
|
callOptions:nil]; |
|
|
|
|
GRPCUnaryProtoCall *callCronet = [_remoteCronetService |
|
|
|
|
emptyCallWithMessage:request |
|
|
|
|
responseHandler:[[InteropTestsBlockCallbacks alloc] |
|
|
|
|
initWithInitialMetadataCallback:nil |
|
|
|
|
messageCallback:messageHandler |
|
|
|
|
closeCallback:^(NSDictionary *trailingMetadata, |
|
|
|
|
NSError *error) { |
|
|
|
|
XCTAssertNil(error); |
|
|
|
|
[expectCronetRemote fulfill]; |
|
|
|
|
} |
|
|
|
|
writeMessageCallback:nil] |
|
|
|
|
callOptions:nil]; |
|
|
|
|
GRPCUnaryProtoCall *callCleartext = [_localCleartextService |
|
|
|
|
emptyCallWithMessage:request |
|
|
|
|
responseHandler:[[InteropTestsBlockCallbacks alloc] |
|
|
|
|
initWithInitialMetadataCallback:nil |
|
|
|
|
messageCallback:messageHandler |
|
|
|
|
closeCallback:^(NSDictionary *trailingMetadata, |
|
|
|
|
NSError *error) { |
|
|
|
|
XCTAssertNil(error); |
|
|
|
|
[expectCleartext fulfill]; |
|
|
|
|
} |
|
|
|
|
writeMessageCallback:nil] |
|
|
|
|
callOptions:nil]; |
|
|
|
|
GRPCUnaryProtoCall *callSSL = [_localSSLService |
|
|
|
|
emptyCallWithMessage:request |
|
|
|
|
responseHandler:[[InteropTestsBlockCallbacks alloc] |
|
|
|
|
initWithInitialMetadataCallback:nil |
|
|
|
|
messageCallback:messageHandler |
|
|
|
|
closeCallback:^(NSDictionary *trailingMetadata, |
|
|
|
|
NSError *error) { |
|
|
|
|
XCTAssertNil(error); |
|
|
|
|
[expectSSL fulfill]; |
|
|
|
|
} |
|
|
|
|
writeMessageCallback:nil] |
|
|
|
|
callOptions:nil]; |
|
|
|
|
[callRemote start]; |
|
|
|
|
[callCronet start]; |
|
|
|
|
[callCleartext start]; |
|
|
|
@ -219,42 +228,58 @@ dispatch_once_t initCronet; |
|
|
|
|
} |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
calls[0] = [_remoteService fullDuplexCallWithResponseHandler:[[InteropTestsBlockCallbacks alloc] initWithInitialMetadataCallback:nil |
|
|
|
|
messageCallback:^(id message) { |
|
|
|
|
handler(0, message); |
|
|
|
|
} |
|
|
|
|
closeCallback:^(NSDictionary *trailingMetadata, NSError *error) { |
|
|
|
|
XCTAssertNil(error); |
|
|
|
|
[expectRemote fulfill]; |
|
|
|
|
} writeMessageCallback:nil] |
|
|
|
|
callOptions:nil]; |
|
|
|
|
calls[1] = [_remoteCronetService fullDuplexCallWithResponseHandler:[[InteropTestsBlockCallbacks alloc] initWithInitialMetadataCallback:nil |
|
|
|
|
messageCallback:^(id message) { |
|
|
|
|
handler(1, message); |
|
|
|
|
} |
|
|
|
|
closeCallback:^(NSDictionary *trailingMetadata, NSError *error) { |
|
|
|
|
XCTAssertNil(error); |
|
|
|
|
[expectCronetRemote fulfill]; |
|
|
|
|
} writeMessageCallback:nil] |
|
|
|
|
callOptions:nil]; |
|
|
|
|
calls[2] = [_localCleartextService fullDuplexCallWithResponseHandler:[[InteropTestsBlockCallbacks alloc] initWithInitialMetadataCallback:nil |
|
|
|
|
messageCallback:^(id message) { |
|
|
|
|
handler(2, message); |
|
|
|
|
} |
|
|
|
|
closeCallback:^(NSDictionary *trailingMetadata, NSError *error) { |
|
|
|
|
XCTAssertNil(error); |
|
|
|
|
[expectCleartext fulfill]; |
|
|
|
|
} writeMessageCallback:nil] |
|
|
|
|
callOptions:nil]; |
|
|
|
|
calls[3] = [_localSSLService fullDuplexCallWithResponseHandler:[[InteropTestsBlockCallbacks alloc] initWithInitialMetadataCallback:nil |
|
|
|
|
messageCallback:^(id message) { |
|
|
|
|
handler(3, message); |
|
|
|
|
} |
|
|
|
|
closeCallback:^(NSDictionary *trailingMetadata, NSError *error) { |
|
|
|
|
XCTAssertNil(error); |
|
|
|
|
[expectSSL fulfill]; |
|
|
|
|
} writeMessageCallback:nil] |
|
|
|
|
callOptions:nil]; |
|
|
|
|
calls[0] = [_remoteService |
|
|
|
|
fullDuplexCallWithResponseHandler:[[InteropTestsBlockCallbacks alloc] |
|
|
|
|
initWithInitialMetadataCallback:nil |
|
|
|
|
messageCallback:^(id message) { |
|
|
|
|
handler(0, message); |
|
|
|
|
} |
|
|
|
|
closeCallback:^(NSDictionary *trailingMetadata, |
|
|
|
|
NSError *error) { |
|
|
|
|
XCTAssertNil(error); |
|
|
|
|
[expectRemote fulfill]; |
|
|
|
|
} |
|
|
|
|
writeMessageCallback:nil] |
|
|
|
|
callOptions:nil]; |
|
|
|
|
calls[1] = [_remoteCronetService |
|
|
|
|
fullDuplexCallWithResponseHandler:[[InteropTestsBlockCallbacks alloc] |
|
|
|
|
initWithInitialMetadataCallback:nil |
|
|
|
|
messageCallback:^(id message) { |
|
|
|
|
handler(1, message); |
|
|
|
|
} |
|
|
|
|
closeCallback:^(NSDictionary *trailingMetadata, |
|
|
|
|
NSError *error) { |
|
|
|
|
XCTAssertNil(error); |
|
|
|
|
[expectCronetRemote fulfill]; |
|
|
|
|
} |
|
|
|
|
writeMessageCallback:nil] |
|
|
|
|
callOptions:nil]; |
|
|
|
|
calls[2] = [_localCleartextService |
|
|
|
|
fullDuplexCallWithResponseHandler:[[InteropTestsBlockCallbacks alloc] |
|
|
|
|
initWithInitialMetadataCallback:nil |
|
|
|
|
messageCallback:^(id message) { |
|
|
|
|
handler(2, message); |
|
|
|
|
} |
|
|
|
|
closeCallback:^(NSDictionary *trailingMetadata, |
|
|
|
|
NSError *error) { |
|
|
|
|
XCTAssertNil(error); |
|
|
|
|
[expectCleartext fulfill]; |
|
|
|
|
} |
|
|
|
|
writeMessageCallback:nil] |
|
|
|
|
callOptions:nil]; |
|
|
|
|
calls[3] = [_localSSLService |
|
|
|
|
fullDuplexCallWithResponseHandler:[[InteropTestsBlockCallbacks alloc] |
|
|
|
|
initWithInitialMetadataCallback:nil |
|
|
|
|
messageCallback:^(id message) { |
|
|
|
|
handler(3, message); |
|
|
|
|
} |
|
|
|
|
closeCallback:^(NSDictionary *trailingMetadata, |
|
|
|
|
NSError *error) { |
|
|
|
|
XCTAssertNil(error); |
|
|
|
|
[expectSSL fulfill]; |
|
|
|
|
} |
|
|
|
|
writeMessageCallback:nil] |
|
|
|
|
callOptions:nil]; |
|
|
|
|
for (int i = 0; i < 4; i++) { |
|
|
|
|
[calls[i] start]; |
|
|
|
|
[calls[i] writeMessage:requests[0]]; |
|
|
|
|