aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/objective-c/tests/ChannelTests/ChannelTests.m
diff options
context:
space:
mode:
authorGravatar Muxi Yan <mxyan@google.com>2018-11-18 22:47:35 -0800
committerGravatar Muxi Yan <mxyan@google.com>2018-11-18 22:47:35 -0800
commitf0cbcde73195b8e17130538c3479d4c0e3bcd2a2 (patch)
tree06483748c28dc85c4927eec35e88b6001923999e /src/objective-c/tests/ChannelTests/ChannelTests.m
parent87abab45c99ab4b40718557cbc1c25dcd7f5a418 (diff)
New channel pool design
Diffstat (limited to 'src/objective-c/tests/ChannelTests/ChannelTests.m')
-rw-r--r--src/objective-c/tests/ChannelTests/ChannelTests.m126
1 files changed, 77 insertions, 49 deletions
diff --git a/src/objective-c/tests/ChannelTests/ChannelTests.m b/src/objective-c/tests/ChannelTests/ChannelTests.m
index 5daafcdf3f..212db2f653 100644
--- a/src/objective-c/tests/ChannelTests/ChannelTests.m
+++ b/src/objective-c/tests/ChannelTests/ChannelTests.m
@@ -20,65 +20,93 @@
#import "../../GRPCClient/GRPCCallOptions.h"
#import "../../GRPCClient/private/GRPCChannel.h"
+#import "../../GRPCClient/private/GRPCChannelPool.h"
#import "../../GRPCClient/private/GRPCCompletionQueue.h"
-@interface ChannelTests : XCTestCase
+/*
+#define TEST_TIMEOUT 8
+
+@interface GRPCChannelFake : NSObject
+
+- (instancetype)initWithCreateExpectation:(XCTestExpectation *)createExpectation
+ unrefExpectation:(XCTestExpectation *)unrefExpectation;
+
+- (nullable grpc_call *)unmanagedCallWithPath:(NSString *)path
+ completionQueue:(GRPCCompletionQueue *)queue
+ callOptions:(GRPCCallOptions *)callOptions;
+
+- (void)unrefUnmanagedCall:(grpc_call *)unmanagedCall;
@end
-@implementation ChannelTests
+@implementation GRPCChannelFake {
+ __weak XCTestExpectation *_createExpectation;
+ __weak XCTestExpectation *_unrefExpectation;
+ long _grpcCallCounter;
+}
-+ (void)setUp {
- grpc_init();
+- (nullable instancetype)initWithChannelConfiguration:(GRPCChannelConfiguration *)channelConfiguration {
+ return nil;
}
-- (void)testTimedDisconnection {
- NSString *const kHost = @"grpc-test.sandbox.googleapis.com";
- const NSTimeInterval kDestroyDelay = 1;
- GRPCCallOptions *options = [[GRPCCallOptions alloc] init];
- GRPCChannelConfiguration *configuration =
- [[GRPCChannelConfiguration alloc] initWithHost:kHost callOptions:options];
- GRPCChannel *channel =
- [[GRPCChannel alloc] initWithChannelConfiguration:configuration destroyDelay:kDestroyDelay];
- BOOL disconnected;
- grpc_call *call = [channel unmanagedCallWithPath:@"dummy.path"
- completionQueue:[GRPCCompletionQueue completionQueue]
- callOptions:options
- disconnected:&disconnected];
- XCTAssertFalse(disconnected);
- grpc_call_unref(call);
- [channel unref];
- XCTAssertFalse(channel.disconnected, @"Channel is pre-maturely disconnected.");
- sleep(kDestroyDelay + 1);
- XCTAssertTrue(channel.disconnected, @"Channel is not disconnected after delay.");
-
- // Check another call creation returns null and indicates disconnected.
- call = [channel unmanagedCallWithPath:@"dummy.path"
- completionQueue:[GRPCCompletionQueue completionQueue]
- callOptions:options
- disconnected:&disconnected];
- XCTAssert(call == NULL);
- XCTAssertTrue(disconnected);
+- (instancetype)initWithCreateExpectation:(XCTestExpectation *)createExpectation
+ unrefExpectation:(XCTestExpectation *)unrefExpectation {
+ if ((self = [super init])) {
+ _createExpectation = createExpectation;
+ _unrefExpectation = unrefExpectation;
+ _grpcCallCounter = 0;
+ }
+ return self;
}
-- (void)testForceDisconnection {
- NSString *const kHost = @"grpc-test.sandbox.googleapis.com";
- const NSTimeInterval kDestroyDelay = 1;
- GRPCCallOptions *options = [[GRPCCallOptions alloc] init];
- GRPCChannelConfiguration *configuration =
- [[GRPCChannelConfiguration alloc] initWithHost:kHost callOptions:options];
- GRPCChannel *channel =
- [[GRPCChannel alloc] initWithChannelConfiguration:configuration destroyDelay:kDestroyDelay];
- grpc_call *call = [channel unmanagedCallWithPath:@"dummy.path"
- completionQueue:[GRPCCompletionQueue completionQueue]
- callOptions:options
- disconnected:nil];
- grpc_call_unref(call);
- [channel disconnect];
- XCTAssertTrue(channel.disconnected, @"Channel is not disconnected.");
-
- // Test calling another unref here will not crash
- [channel unref];
+- (nullable grpc_call *)unmanagedCallWithPath:(NSString *)path
+ completionQueue:(GRPCCompletionQueue *)queue
+ callOptions:(GRPCCallOptions *)callOptions {
+ if (_createExpectation) [_createExpectation fulfill];
+ return (grpc_call *)(++_grpcCallCounter);
+}
+
+- (void)unrefUnmanagedCall:(grpc_call *)unmanagedCall {
+ if (_unrefExpectation) [_unrefExpectation fulfill];
+}
+
+@end
+
+@interface GRPCChannelPoolFake : NSObject
+
+- (instancetype)initWithDelayedDestroyExpectation:(XCTestExpectation *)delayedDestroyExpectation;
+
+- (GRPCChannel *)rawChannelWithHost:(NSString *)host callOptions:(GRPCCallOptions *)callOptions;
+
+- (void)delayedDestroyChannel;
+
+@end
+
+@implementation GRPCChannelPoolFake {
+ __weak XCTestExpectation *_delayedDestroyExpectation;
+}
+
+- (instancetype)initWithDelayedDestroyExpectation:(XCTestExpectation *)delayedDestroyExpectation {
+ if ((self = [super init])) {
+ _delayedDestroyExpectation = delayedDestroyExpectation;
+ }
+ return self;
+}
+
+- (void)delayedDestroyChannel {
+ if (_delayedDestroyExpectation) [_delayedDestroyExpectation fulfill];
+}
+
+@end */
+
+@interface ChannelTests : XCTestCase
+
+@end
+
+@implementation ChannelTests
+
++ (void)setUp {
+ grpc_init();
}
@end