Skip to content

Commit

Permalink
Merge branch 'add_test_case' into dns_dev_ys
Browse files Browse the repository at this point in the history
# Conflicts:
#	QiniuSDK.xcodeproj/project.pbxproj
#	QiniuSDKTests/QNFileRecorderTest.m
#	QiniuSDKTests/QNTestConfig.h
  • Loading branch information
YangSen-qn committed May 11, 2020
2 parents 89910af + 336380b commit 947e078
Show file tree
Hide file tree
Showing 12 changed files with 450 additions and 90 deletions.
12 changes: 12 additions & 0 deletions QiniuSDK.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,10 @@
31F553C02457FFB0000B66AD /* QNPipeline.h in Headers */ = {isa = PBXBuildFile; fileRef = 31F553BE2457FFAF000B66AD /* QNPipeline.h */; };
31F553C12457FFB0000B66AD /* QNPipeline.m in Sources */ = {isa = PBXBuildFile; fileRef = 31F553BF2457FFB0000B66AD /* QNPipeline.m */; };
31F553C22457FFB0000B66AD /* QNPipeline.m in Sources */ = {isa = PBXBuildFile; fileRef = 31F553BF2457FFB0000B66AD /* QNPipeline.m */; };
31A1840E246942E0001D6EEE /* QNComplexUploadSceneTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 31A1840D246942E0001D6EEE /* QNComplexUploadSceneTest.m */; };
31A1840F246942E0001D6EEE /* QNComplexUploadSceneTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 31A1840D246942E0001D6EEE /* QNComplexUploadSceneTest.m */; };
31A1841124694A3C001D6EEE /* QNUploadErrorTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 31A1841024694A3C001D6EEE /* QNUploadErrorTest.m */; };
31A1841224694A3C001D6EEE /* QNUploadErrorTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 31A1841024694A3C001D6EEE /* QNUploadErrorTest.m */; };
7CF44E0E25F6BE604AE68F92 /* libPods-QiniuSDK_iOSTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 422A3A07B38819979BBFE724 /* libPods-QiniuSDK_iOSTests.a */; };
A31ADA71DBBF1F4D8A065061 /* libPods-QiniuSDK_Mac.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 73B66D8E78B0B3A0BEEA45A6 /* libPods-QiniuSDK_Mac.a */; };
BA8408541BE251010093B013 /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA8408521BE250C80093B013 /* SystemConfiguration.framework */; };
Expand Down Expand Up @@ -254,6 +258,8 @@
31F553922456F2F3000B66AD /* QNSystem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QNSystem.h; sourceTree = "<group>"; };
31F553BE2457FFAF000B66AD /* QNPipeline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = QNPipeline.h; sourceTree = "<group>"; };
31F553BF2457FFB0000B66AD /* QNPipeline.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = QNPipeline.m; sourceTree = "<group>"; };
31A1840D246942E0001D6EEE /* QNComplexUploadSceneTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = QNComplexUploadSceneTest.m; sourceTree = "<group>"; };
31A1841024694A3C001D6EEE /* QNUploadErrorTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = QNUploadErrorTest.m; sourceTree = "<group>"; };
32036F4A07041AC3410DBF2F /* Pods-QiniuSDK_Mac.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-QiniuSDK_Mac.release.xcconfig"; path = "Pods/Target Support Files/Pods-QiniuSDK_Mac/Pods-QiniuSDK_Mac.release.xcconfig"; sourceTree = "<group>"; };
422A3A07B38819979BBFE724 /* libPods-QiniuSDK_iOSTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-QiniuSDK_iOSTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
466E7AACB5F77BA0D4DE4070 /* Pods-QiniuSDK_MacTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-QiniuSDK_MacTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-QiniuSDK_MacTests/Pods-QiniuSDK_MacTests.debug.xcconfig"; sourceTree = "<group>"; };
Expand Down Expand Up @@ -610,6 +616,8 @@
3142419B2449547B00BD9A21 /* QNCFHttpClientTest.m */,
CC2513C12455C141003F4C65 /* QNTempFile.h */,
CC2513C02455C141003F4C65 /* QNTempFile.m */,
31A1840D246942E0001D6EEE /* QNComplexUploadSceneTest.m */,
31A1841024694A3C001D6EEE /* QNUploadErrorTest.m */,
);
path = QiniuSDKTests;
sourceTree = SOURCE_ROOT;
Expand Down Expand Up @@ -952,9 +960,11 @@
DF0A03241B3BAC3900E3778C /* QNFormUploadTest.m in Sources */,
DFFE0E6019E6575600D7A0FC /* QNFileRecorderTest.m in Sources */,
DF437CDF1B243A2C0099587B /* QNUpTokenTest.m in Sources */,
31A1840E246942E0001D6EEE /* QNComplexUploadSceneTest.m in Sources */,
DF3C504A19DD7D9F000F548F /* QNResumeUploadTest.m in Sources */,
CC251375244EE717003F4C65 /* QNPipelineTest.m in Sources */,
DF293C9719DB865800799011 /* QNCrc32Test.m in Sources */,
31A1841124694A3C001D6EEE /* QNUploadErrorTest.m in Sources */,
CCF661062355C2C00018A41E /* QNConcurrentResumeUploadTest.m in Sources */,
DFF525391A64079B00D02BA1 /* QNSessionTest.m in Sources */,
FDEA88661DAC10D000D037E5 /* QNAutoZoneTest.m in Sources */,
Expand Down Expand Up @@ -1023,9 +1033,11 @@
DF0A03261B3BAC6E00E3778C /* QNBase64Test.m in Sources */,
DF0A03271B3BAC6E00E3778C /* QNCrc32Test.m in Sources */,
DF0A03281B3BAC6E00E3778C /* QNFormUploadTest.m in Sources */,
31A1840F246942E0001D6EEE /* QNComplexUploadSceneTest.m in Sources */,
DF0A03291B3BAC6E00E3778C /* QNResumeUploadTest.m in Sources */,
CC251376244EE717003F4C65 /* QNPipelineTest.m in Sources */,
DF0A032B1B3BAC6E00E3778C /* QNEtagTest.m in Sources */,
31A1841224694A3C001D6EEE /* QNUploadErrorTest.m in Sources */,
CCF661072355C4480018A41E /* QNConcurrentResumeUploadTest.m in Sources */,
DF0A032D1B3BAC6E00E3778C /* QNFileRecorderTest.m in Sources */,
FDEA88671DAC10D000D037E5 /* QNAutoZoneTest.m in Sources */,
Expand Down
4 changes: 4 additions & 0 deletions QiniuSDK/Storage/QNUpToken.m
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,10 @@ + (instancetype)parse:(NSString *)token {
}

NSData *data = [QNUrlSafeBase64 decodeString:array[2]];
if (!data) {
return nil;
}

NSError *tmp = nil;
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:&tmp];
if (tmp != nil || dict[@"scope"] == nil || dict[@"deadline"] == nil) {
Expand Down
68 changes: 68 additions & 0 deletions QiniuSDKTests/QNComplexUploadSceneTest.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
//
// QNComplexUploadSceneTestC.m
// QiniuSDK
//
// Created by yangsen on 2020/5/11.
// Copyright © 2020 Qiniu. All rights reserved.
//
#import <XCTest/XCTest.h>
#import <AGAsyncTestHelper.h>
#import "QiniuSDK.h"
#import "QNTempFile.h"
#import "QNTestConfig.h"

@interface QNComplexUploadSceneTest : XCTestCase
@property QNUploadManager *upManager;
@end
@implementation QNComplexUploadSceneTest

- (void)setUp {
QNConfiguration *config = [QNConfiguration build:^(QNConfigurationBuilder *builder) {
builder.useConcurrentResumeUpload = YES;
builder.concurrentTaskCount = 3;
}];
_upManager = [[QNUploadManager alloc] initWithConfiguration:config];
}

- (void)tearDown {
_upManager = nil;
}

- (void)testMutiUpload{
int maxCount = 10;
__block int completeCount = 0;
__block int successCount = 0;
for (int i=0; i<maxCount; i++) {
[self template:(i + 1) * 1024 complete:^(BOOL isSuccess){
@synchronized (self) {
completeCount += 1;
if (isSuccess) {
successCount += 1;
}
}
}];
}

AGWW_WAIT_WHILE(completeCount != maxCount, 60 * 30);
XCTAssert(successCount == maxCount, @"Pass");
}

- (void)template:(int)size complete:(void(^)(BOOL isSuccess))complete{
NSString *keyUp = [NSString stringWithFormat:@"complex_upload_%dk", size];
QNTempFile *tempFile = [QNTempFile createTempfileWithSize:size * 1024 identifier:keyUp];
QNUploadOption *opt = [[QNUploadOption alloc] initWithProgressHandler:^(NSString *key, float percent) {
NSLog(@"progress %f", percent);
}];
[_upManager putFile:tempFile.fileUrl.path key:keyUp token:g_token complete:^(QNResponseInfo *i, NSString *k, NSDictionary *resp) {

if (i.isOK && i.reqId && [keyUp isEqualToString:k] && [tempFile.fileHash isEqualToString:resp[@"hash"]]) {
complete(YES);
} else {
complete(NO);
}
[tempFile remove];

} option:opt];

}
@end
64 changes: 35 additions & 29 deletions QiniuSDKTests/QNConcurrentResumeUploadTest.m
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,8 @@ - (void)tearDown {

- (void)testCancel {
int size = 6 * 1024;
NSURL *tempFile = [QNTempFile createTempfileWithSize:size * 1024];
NSString *keyUp = [NSString stringWithFormat:@"%dk", size];
NSString *keyUp = [NSString stringWithFormat:@"concurrent_cancel_%dk", size];
QNTempFile *tempFile = [QNTempFile createTempfileWithSize:size * 1024 identifier:keyUp];
__block NSString *key = nil;
__block QNResponseInfo *info = nil;
__block BOOL flag = NO;
Expand All @@ -47,11 +47,11 @@ - (void)testCancel {
params:@{ @"x:七牛" : @"objc",
@"x:no" : @"",
@"invalid" : @"invalid" }
checkCrc:NO
checkCrc:YES
cancellationSignal:^BOOL() {
return flag;
}];
[_upManager putFile:tempFile.path key:keyUp token:g_token complete:^(QNResponseInfo *i, NSString *k, NSDictionary *resp) {
[_upManager putFile:tempFile.fileUrl.path key:keyUp token:g_token complete:^(QNResponseInfo *i, NSString *k, NSDictionary *resp) {
key = k;
info = i;
}
Expand All @@ -62,36 +62,39 @@ - (void)testCancel {
XCTAssert(info.isCancelled, @"Pass");
XCTAssert([keyUp isEqualToString:key], @"Pass");

[QNTempFile removeTempfile:tempFile];
[tempFile remove];
}

- (void) template:(int)size {
NSURL *tempFile = [QNTempFile createTempfileWithSize:size * 1024];
NSString *keyUp = [NSString stringWithFormat:@"%dk", size];
NSString *keyUp = [NSString stringWithFormat:@"concurrent_template_%dk", size];
QNTempFile *tempFile = [QNTempFile createTempfileWithSize:size * 1024 identifier:keyUp];
__block NSString *key = nil;
__block QNResponseInfo *info = nil;
__block NSDictionary *response = nil;
QNUploadOption *opt = [[QNUploadOption alloc] initWithProgressHandler:^(NSString *key, float percent) {
NSLog(@"progress %f", percent);
}];
[_upManager putFile:tempFile.path key:keyUp token:g_token complete:^(QNResponseInfo *i, NSString *k, NSDictionary *resp) {
[_upManager putFile:tempFile.fileUrl.path key:keyUp token:g_token complete:^(QNResponseInfo *i, NSString *k, NSDictionary *resp) {
key = k;
info = i;
response = resp;
}
option:opt];
AGWW_WAIT_WHILE(key == nil, 60 * 30);
NSLog(@"info %@", info);
XCTAssert(info.isOK, @"Pass");
XCTAssert(info.reqId, @"Pass");
XCTAssert([keyUp isEqualToString:key], @"Pass");

[QNTempFile removeTempfile:tempFile];
XCTAssert([tempFile.fileHash isEqualToString:response[@"hash"]], @"Pass");
[tempFile remove];
}

- (void)templateHttps:(int)size {
NSURL *tempFile = [QNTempFile createTempfileWithSize:size * 1024];
NSString *keyUp = [NSString stringWithFormat:@"%dk", size];
NSString *keyUp = [NSString stringWithFormat:@"concurrent_templateHttps_%dk", size];
QNTempFile *tempFile = [QNTempFile createTempfileWithSize:size * 1024 identifier:keyUp];
__block NSString *key = nil;
__block QNResponseInfo *info = nil;
__block NSDictionary *response = nil;
QNUploadOption *opt = [[QNUploadOption alloc] initWithProgressHandler:^(NSString *key, float percent) {
NSLog(@"progress %f", percent);
}];
Expand All @@ -103,26 +106,28 @@ - (void)templateHttps:(int)size {
}];
QNUploadManager *upManager = [[QNUploadManager alloc] initWithConfiguration:config];

[upManager putFile:tempFile.path key:keyUp token:g_token complete:^(QNResponseInfo *i, NSString *k, NSDictionary *resp) {
[upManager putFile:tempFile.fileUrl.path key:keyUp token:g_token complete:^(QNResponseInfo *i, NSString *k, NSDictionary *resp) {
key = k;
info = i;
response = resp;
}
option:opt];
AGWW_WAIT_WHILE(key == nil, 60 * 30);
NSLog(@"info %@", info);
XCTAssert(info.isOK, @"Pass");
XCTAssert(info.reqId, @"Pass");
XCTAssert([keyUp isEqualToString:key], @"Pass");

[QNTempFile removeTempfile:tempFile];
XCTAssert([tempFile.fileHash isEqualToString:response[@"hash"]], @"Pass");
[tempFile remove];
}

- (void)testNoKey {
NSURL *tempFile = [QNTempFile createTempfileWithSize:600 * 1024];
NSString *keyUp = [NSString stringWithFormat:@"concurrent_NoKey_%dk", 600];
QNTempFile *tempFile = [QNTempFile createTempfileWithSize:600 * 1024 identifier:keyUp];
__block QNResponseInfo *info = nil;
__block NSDictionary *testResp = nil;
__block NSString *key = nil;
[_upManager putFile:tempFile.path key:nil token:g_token complete:^(QNResponseInfo *i, NSString *k, NSDictionary *resp) {
[_upManager putFile:tempFile.fileUrl.path key:nil token:g_token complete:^(QNResponseInfo *i, NSString *k, NSDictionary *resp) {
key = k;
info = i;
testResp = resp;
Expand All @@ -133,19 +138,20 @@ - (void)testNoKey {
XCTAssert(info.isOK, @"Pass");
XCTAssert(info.reqId, @"Pass");
XCTAssert(key == nil, @"Pass");
XCTAssert([@"FnwKMB9tve71u37IlABna6j4Gdyr" isEqualToString:testResp[@"key"]], @"Pass");
[QNTempFile removeTempfile:tempFile];
XCTAssert([tempFile.fileHash isEqualToString:testResp[@"key"]], @"Pass");
XCTAssert([tempFile.fileHash isEqualToString:testResp[@"hash"]], @"Pass");
[tempFile remove];
}

- (void)test0k {
NSURL *tempFile = [QNTempFile createTempfileWithSize:0];
QNTempFile *tempFile = [QNTempFile createTempfileWithSize:0];
NSString *keyUp = [NSString stringWithFormat:@"%dk", 0];
__block NSString *key = nil;
__block QNResponseInfo *info = nil;
QNUploadOption *opt = [[QNUploadOption alloc] initWithProgressHandler:^(NSString *key, float percent) {
NSLog(@"progress %f", percent);
}];
[_upManager putFile:tempFile.path key:keyUp token:g_token complete:^(QNResponseInfo *i, NSString *k, NSDictionary *resp) {
[_upManager putFile:tempFile.fileUrl.path key:keyUp token:g_token complete:^(QNResponseInfo *i, NSString *k, NSDictionary *resp) {
key = k;
info = i;
}
Expand All @@ -155,7 +161,7 @@ - (void)test0k {
XCTAssert(info.statusCode == kQNZeroDataSize, @"Pass");
XCTAssert([keyUp isEqualToString:key], @"Pass");

[QNTempFile removeTempfile:tempFile];
[tempFile remove];
}

- (void)test500k {
Expand Down Expand Up @@ -207,11 +213,11 @@ - (void)test20M {
// QNUploadManager *upManager = [[QNUploadManager alloc] initWithConfiguration:config];
//
// int size = 600;
// NSURL *tempFile = [QNTempFile createTempfileWithSize:size * 1024];
// QNTempFile *tempFile = [QNTempFile createTempfileWithSize:size * 1024];
// NSString *keyUp = [NSString stringWithFormat:@"%dkproxy", size];
// __block QNResponseInfo *info = nil;
// __block NSString *key = nil;
// [upManager putFile:tempFile.path key:keyUp token:g_token complete:^(QNResponseInfo *i, NSString *k, NSDictionary *resp) {
// [upManager putFile:tempFile.fileUrl.path key:keyUp token:g_token complete:^(QNResponseInfo *i, NSString *k, NSDictionary *resp) {
// key = k;
// info = i;
// }
Expand All @@ -222,7 +228,7 @@ - (void)test20M {
// XCTAssert(info.isOK, @"Pass");
// XCTAssert([keyUp isEqualToString:key], @"Pass");
//
// [QNTempFile removeTempfile:tempFile];
// [tempFile remove];
//}

- (void)testUrlConvert {
Expand All @@ -238,11 +244,11 @@ - (void)testUrlConvert {
QNUploadManager *upManager = [[QNUploadManager alloc] initWithConfiguration:config];

int size = 600;
NSURL *tempFile = [QNTempFile createTempfileWithSize:size * 1024];
NSString *keyUp = [NSString stringWithFormat:@"%dkconvert", size];
NSString *keyUp = [NSString stringWithFormat:@"concurrent_convert_%dk", size];
QNTempFile *tempFile = [QNTempFile createTempfileWithSize:size * 1024 identifier:keyUp];
__block QNResponseInfo *info = nil;
__block NSString *key = nil;
[upManager putFile:tempFile.path key:keyUp token:g_token complete:^(QNResponseInfo *i, NSString *k, NSDictionary *resp) {
[upManager putFile:tempFile.fileUrl.path key:keyUp token:g_token complete:^(QNResponseInfo *i, NSString *k, NSDictionary *resp) {
key = k;
info = i;
}
Expand All @@ -253,7 +259,7 @@ - (void)testUrlConvert {
XCTAssert(info.isOK, @"Pass");
XCTAssert([keyUp isEqualToString:key], @"Pass");
XCTAssert([info.host isEqual:@"up.qiniu.com"], @"Pass");
[QNTempFile removeTempfile:tempFile];
[tempFile remove];
}

@end
8 changes: 4 additions & 4 deletions QiniuSDKTests/QNCrc32Test.m
Original file line number Diff line number Diff line change
Expand Up @@ -25,11 +25,11 @@ - (void)testData {

- (void)testFile {
NSError *error;
NSURL *file = [QNTempFile createTempfileWithSize:5 * 1024 * 1024];
UInt32 u = [QNCrc32 file:[file relativePath] error:&error];
QNTempFile *file = [QNTempFile createTempfileWithSize:5 * 1024 * 1024 identifier:@"crc_5M"];
UInt32 u = [QNCrc32 file:[file.fileUrl relativePath] error:&error];

XCTAssert(u == 3376132981, @"Pass");
[QNTempFile removeTempfile:file];
XCTAssert(u == 1630269785, @"Pass");
[file remove];
}

@end
16 changes: 8 additions & 8 deletions QiniuSDKTests/QNEtagTest.m
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,18 @@ - (void)testEtagZero {

- (void)testFile5M {
NSError *error;
NSURL *file = [QNTempFile createTempfileWithSize:5 * 1024 * 1024];
NSString *x = [QNEtag file:[file relativePath] error:&error];
XCTAssert([@"lrMhp7oU8rzWSRlmUeGJ73Q2pVa-" isEqualToString:x], @"Pass");
[QNTempFile removeTempfile:file];
QNTempFile *file = [QNTempFile createTempfileWithSize:5 * 1024 * 1024 identifier:@"5M"];
NSString *x = [QNEtag file:file.fileUrl.path error:&error];
XCTAssert([@"ljfceY5osQDM_NJlPaUFlJqQ8POB" isEqualToString:x], @"Pass");
[file remove];
}

- (void)testFile3M {
NSError *error;
NSURL *file = [QNTempFile createTempfileWithSize:3 * 1024 * 1024];
NSString *x = [QNEtag file:[file relativePath] error:&error];
XCTAssert([@"Fh5fje9Auwyw9xVrnCurnvtJz7aZ" isEqualToString:x], @"Pass");
[QNTempFile removeTempfile:file];
QNTempFile *file = [QNTempFile createTempfileWithSize:3 * 1024 * 1024 identifier:@"3M"];
NSString *x = [QNEtag file:file.fileUrl.path error:&error];
XCTAssert([@"FtPguFLrJJy4r4LRCzjJDP7wgIZe" isEqualToString:x], @"Pass");
[file remove];
}

- (void)testData {
Expand Down
Loading

0 comments on commit 947e078

Please sign in to comment.