Xcode/iOS/iOSTests/NetworkDiagnosis/NetworkDiagnosisFeatureTests.m (276 lines of code) (raw):
//
// Copyright 2023 aliyun-sls Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
#import <XCTest/XCTest.h>
#import "OCMock.h"
#import "SLSNetworkDiagnosisFeature.h"
@interface NetworkDiagnosisFeatureTests : XCTestCase
@property(nonatomic, strong) SLSNetworkDiagnosisFeature *feature;
@end
@implementation NetworkDiagnosisFeatureTests
- (void)setUp {
// Put setup code here. This method is called before the invocation of each test method in the class.
_feature = [[SLSNetworkDiagnosisFeature alloc] init];
}
- (void)tearDown {
// Put teardown code here. This method is called after the invocation of each test method in the class.
}
#pragma mark -- http
- (void)test_networkDiagnosis$http {
id diagnosis = [OCMockObject mockForClass:[NetSpeedDiagnosis class]];
AliHttpPingConfig __block *config;
[[diagnosis expect] http:[OCMArg checkWithBlock:^BOOL(id obj) {
config = obj;
return YES;
}]];
[_feature setDiagnosis:diagnosis];
[_feature http:@"www.aliyun.com"];
XCTAssertEqualObjects(config.url, @"www.aliyun.com");
}
- (void) test_networkDiagnosis$http$credentials {
id diagnosis = [OCMockObject mockForClass:[NetSpeedDiagnosis class]];
AliHttpPingConfig __block *config;
[[diagnosis expect] http:[OCMArg checkWithBlock:^BOOL(id obj) {
config = obj;
return YES;
}]];
[_feature setDiagnosis:diagnosis];
NSURLCredential *credential = [NSURLCredential credentialWithIdentity:NULL certificates:NULL persistence:NSURLCredentialPersistenceForSession];
[_feature http:@"www.aliyun.com" callback:^(NSString * _Nonnull result) {
return;
} credential:^NSURLCredential * _Nullable(NSString * _Nonnull url) {
return credential;
}];
XCTAssertEqualObjects(config.url, @"www.aliyun.com");
XCTAssertEqual(config.clientCredential, credential);
}
- (void) test_networkDiagnosis$http2 {
id diagnosis = [OCMockObject mockForClass:[NetSpeedDiagnosis class]];
AliHttpPingConfig __block *config;
[[diagnosis expect] http:[OCMArg checkWithBlock:^BOOL(id obj) {
config = obj;
return YES;
}]];
[_feature setDiagnosis:diagnosis];
SLSHttpRequest *request = [[SLSHttpRequest alloc] init];
request.domain = @"www.aliyun.com";
[_feature http2:request];
XCTAssertEqualObjects(config.url, request.domain);
XCTAssertNil(config.clientCredential);
}
- (void) test_networkDiagnosis$http2$credential {
id diagnosis = [OCMockObject mockForClass:[NetSpeedDiagnosis class]];
AliHttpPingConfig __block *config;
[[diagnosis expect] http:[OCMArg checkWithBlock:^BOOL(id obj) {
config = obj;
return YES;
}]];
[_feature setDiagnosis:diagnosis];
SLSHttpRequest *request = [[SLSHttpRequest alloc] init];
request.domain = @"www.aliyun.com";
NSURLCredential *credential = [NSURLCredential credentialWithIdentity:NULL certificates:NULL persistence:NSURLCredentialPersistenceForSession];
request.credential = ^NSURLCredential * _Nullable(NSString * _Nonnull url) {
return credential;
};
[_feature http2:request];
XCTAssertEqualObjects(config.url, request.domain);
XCTAssertEqual(config.clientCredential, credential);
}
#pragma mark -- ping tests
- (void) test_networkDiagnosis$ping {
id diagnosis = [OCMockObject mockForClass:[NetSpeedDiagnosis class]];
AliPingConfig __block *config;
[[diagnosis expect] ping:[OCMArg checkWithBlock:^BOOL(id obj) {
config = obj;
return YES;
}]];
[_feature setDiagnosis:diagnosis];
[_feature ping:@"www.aliyun.com"];
XCTAssertEqualObjects(config.host, @"www.aliyun.com");
}
- (void) test_networkDiagnosis$ping$size {
id diagnosis = [OCMockObject mockForClass:[NetSpeedDiagnosis class]];
AliPingConfig __block *config;
[[diagnosis expect] ping:[OCMArg checkWithBlock:^BOOL(id obj) {
config = obj;
return YES;
}]];
[_feature setDiagnosis:diagnosis];
[_feature ping:@"www.aliyun.com" size:1024 callback:nil];
XCTAssertEqualObjects(config.host, @"www.aliyun.com");
XCTAssertEqual(config.size, 1024);
}
- (void) test_networkDiagnosis$ping$size$maxTimes$timeout {
id diagnosis = [OCMockObject mockForClass:[NetSpeedDiagnosis class]];
AliPingConfig __block *config;
[[diagnosis expect] ping:[OCMArg checkWithBlock:^BOOL(id obj) {
config = obj;
return YES;
}]];
[_feature setDiagnosis:diagnosis];
[_feature ping:@"www.aliyun.com" size:1024 maxTimes:10 timeout:20 callback:nil];
XCTAssertEqualObjects(config.host, @"www.aliyun.com");
XCTAssertEqual(config.size, 1024);
XCTAssertEqual(config.count, 10);
XCTAssertEqual(config.timeout, 20);
}
- (void) test_networkDiagnosis$ping$maxTimes$timeout {
id diagnosis = [OCMockObject mockForClass:[NetSpeedDiagnosis class]];
AliPingConfig __block *config;
[[diagnosis expect] ping:[OCMArg checkWithBlock:^BOOL(id obj) {
config = obj;
return YES;
}]];
[_feature setDiagnosis:diagnosis];
[_feature ping:@"www.aliyun.com" maxTimes:10 timeout:20 callback:nil];
XCTAssertEqualObjects(config.host, @"www.aliyun.com");
XCTAssertEqual(config.count, 10);
XCTAssertEqual(config.timeout, 20);
}
#pragma mark -- tcp ping
- (void) test_networkDiagnosis$tcpping$domain$port {
id diagnosis = [OCMockObject mockForClass:[NetSpeedDiagnosis class]];
AliTcpPingConfig __block *config;
[[diagnosis expect] tcpPing:[OCMArg checkWithBlock:^BOOL(id obj) {
config = obj;
return YES;
}]];
[_feature setDiagnosis:diagnosis];
[_feature tcpPing:@"www.aliyun.com" port:88];
XCTAssertEqualObjects(config.host, @"www.aliyun.com");
XCTAssertEqual(config.port, 88);
}
- (void) test_networkDiagnosis$tcpping$domain$port$maxTimes {
id diagnosis = [OCMockObject mockForClass:[NetSpeedDiagnosis class]];
AliTcpPingConfig __block *config;
[[diagnosis expect] tcpPing:[OCMArg checkWithBlock:^BOOL(id obj) {
config = obj;
return YES;
}]];
[_feature setDiagnosis:diagnosis];
[_feature tcpPing:@"www.aliyun.com" port:88 maxTimes:33 callback:nil];
XCTAssertEqualObjects(config.host, @"www.aliyun.com");
XCTAssertEqual(config.port, 88);
XCTAssertEqual(config.count, 33);
}
- (void) test_networkDiagnosis$tcpping$domain$port$maxTimes$timeout {
id diagnosis = [OCMockObject mockForClass:[NetSpeedDiagnosis class]];
AliTcpPingConfig __block *config;
[[diagnosis expect] tcpPing:[OCMArg checkWithBlock:^BOOL(id obj) {
config = obj;
return YES;
}]];
[_feature setDiagnosis:diagnosis];
[_feature tcpPing:@"www.aliyun.com" port:88 maxTimes:33 timeout:10 callback:nil];
XCTAssertEqualObjects(config.host, @"www.aliyun.com");
XCTAssertEqual(config.port, 88);
XCTAssertEqual(config.count, 33);
XCTAssertEqual(config.timeout, 10);
}
- (void) test_networkDiagnosis$tcpping2$request {
id diagnosis = [OCMockObject mockForClass:[NetSpeedDiagnosis class]];
AliTcpPingConfig __block *config;
[[diagnosis expect] tcpPing:[OCMArg checkWithBlock:^BOOL(id obj) {
config = obj;
return YES;
}]];
[_feature setDiagnosis:diagnosis];
SLSTcpPingRequest *request = [[SLSTcpPingRequest alloc] init];
request.domain = @"www.aliyun.com";
request.port = 88;
request.maxTimes = 33;
request.timeout = 10;
request.context = @"test";
[_feature tcpPing2:request];
XCTAssertEqualObjects(config.host, @"www.aliyun.com");
XCTAssertEqual(config.port, 88);
XCTAssertEqual(config.count, 33);
XCTAssertEqual(config.timeout, 10);
XCTAssertEqualObjects(config.context, @"test");
}
- (void) test_networkDiagnosis$mtr$domain {
id diagnosis = [OCMockObject mockForClass:[NetSpeedDiagnosis class]];
AliMTRConfig __block *config;
[[diagnosis expect] mtr:[OCMArg checkWithBlock:^BOOL(id obj) {
config = obj;
return YES;
}]];
[_feature setDiagnosis:diagnosis];
[_feature mtr:@"www.aliyun.com"];
XCTAssertEqualObjects(config.host, @"www.aliyun.com");
}
- (void) test_networkDiagnosis$mtr$domain$maxTTL {
id diagnosis = [OCMockObject mockForClass:[NetSpeedDiagnosis class]];
AliMTRConfig __block *config;
[[diagnosis expect] mtr:[OCMArg checkWithBlock:^BOOL(id obj) {
config = obj;
return YES;
}]];
[_feature setDiagnosis:diagnosis];
[_feature mtr:@"www.aliyun.com" maxTTL:11 callback:nil];
XCTAssertEqualObjects(config.host, @"www.aliyun.com");
XCTAssertEqual(config.maxTtl, 11);
}
- (void) test_networkDiagnosis$mtr$domain$maxTTL$maxPaths {
id diagnosis = [OCMockObject mockForClass:[NetSpeedDiagnosis class]];
AliMTRConfig __block *config;
[[diagnosis expect] mtr:[OCMArg checkWithBlock:^BOOL(id obj) {
config = obj;
return YES;
}]];
[_feature setDiagnosis:diagnosis];
[_feature mtr:@"www.aliyun.com" maxTTL:11 maxPaths:5 callback:nil];
XCTAssertEqualObjects(config.host, @"www.aliyun.com");
XCTAssertEqual(config.maxTtl, 11);
XCTAssertEqual(config.maxPaths, 5);
}
- (void) test_networkDiagnosis$mtr$domain$maxTTL$maxPaths$maxTimes {
id diagnosis = [OCMockObject mockForClass:[NetSpeedDiagnosis class]];
AliMTRConfig __block *config;
[[diagnosis expect] mtr:[OCMArg checkWithBlock:^BOOL(id obj) {
config = obj;
return YES;
}]];
[_feature setDiagnosis:diagnosis];
[_feature mtr:@"www.aliyun.com" maxTTL:11 maxPaths:5 maxTimes:4 callback:nil];
XCTAssertEqualObjects(config.host, @"www.aliyun.com");
XCTAssertEqual(config.maxTtl, 11);
XCTAssertEqual(config.maxPaths, 5);
XCTAssertEqual(config.maxTimesEachIP, 4);
}
- (void) test_networkDiagnosis$mtr$domain$maxTTL$maxPaths$maxTimes$timeout {
id diagnosis = [OCMockObject mockForClass:[NetSpeedDiagnosis class]];
AliMTRConfig __block *config;
[[diagnosis expect] mtr:[OCMArg checkWithBlock:^BOOL(id obj) {
config = obj;
return YES;
}]];
[_feature setDiagnosis:diagnosis];
[_feature mtr:@"www.aliyun.com" maxTTL:11 maxPaths:5 maxTimes:4 timeout: 39 callback:nil];
XCTAssertEqualObjects(config.host, @"www.aliyun.com");
XCTAssertEqual(config.maxTtl, 11);
XCTAssertEqual(config.maxPaths, 5);
XCTAssertEqual(config.maxTimesEachIP, 4);
XCTAssertEqual(config.timeout, 39);
}
- (void) test_networkDiagnosis$mtr2$request {
id diagnosis = [OCMockObject mockForClass:[NetSpeedDiagnosis class]];
AliMTRConfig __block *config;
[[diagnosis expect] mtr:[OCMArg checkWithBlock:^BOOL(id obj) {
config = obj;
return YES;
}]];
[_feature setDiagnosis:diagnosis];
SLSMtrRequest *request = [[SLSMtrRequest alloc] init];
request.domain = @"www.aliyun.com";
request.maxTTL = 11;
request.maxPaths = 5;
request.maxTimes = 4;
request.timeout = 39;
[_feature mtr2:request];
XCTAssertEqualObjects(config.host, @"www.aliyun.com");
XCTAssertEqual(config.maxTtl, 11);
XCTAssertEqual(config.maxPaths, 5);
XCTAssertEqual(config.maxTimesEachIP, 4);
XCTAssertEqual(config.timeout, 39);
}
//- (void) test_networkDiagnosis$dns$domain {
// id diagnosis = [OCMockObject mockForClass:[NetSpeedDiagnosis class]];
// AliDnsConfig __block *config;
// [[diagnosis expect] dns:[OCMArg checkWithBlock:^BOOL(id obj) {
// config = obj;
// return YES;
// }]];
// [_feature setDiagnosis:diagnosis];
//
//
// [_feature dns:@"www.aliyun.com"];
//
// XCTAssertEqualObjects(config.src, @"www.aliyun.com");
//}
- (void)testPerformanceExample {
// This is an example of a performance test case.
[self measureBlock:^{
// Put the code you want to measure the time of here.
}];
}
@end