Skip to content

Commit 0ddf7c5

Browse files
author
chupei
committed
add network loss scriot
1 parent 7b8f6f4 commit 0ddf7c5

File tree

3 files changed

+26
-16
lines changed

3 files changed

+26
-16
lines changed

.travis.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,14 @@ before_install:
1111
- rm -rf ~/.cocoapods
1212
- pod setup
1313
- pod install --verbose --no-repo-update
14-
- gem install xcpretty
1514

1615

1716
before_script:
1817
- export QINIU_TEST_ENV="travis"
1918

2019
script:
21-
- bash hack/network_loss.sh 0.5
20+
- xcodebuild test -workspace QiniuSDK.xcworkspace -scheme QiniuSDK_iOS -configuration Release -destination 'platform=iOS Simulator,OS=12.4,name=iPhone Xs Max' -enableCodeCoverage YES
21+
- xcodebuild test -workspace QiniuSDK.xcworkspace -scheme QiniuSDK_Mac -configuration Release -destination 'platform=macOS,arch=x86_64'
2222

2323
after_success:
2424
- bash <(curl -s https://codecov.io/bash)

QiniuSDKTests/QNFormUploadTest.m

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,8 @@ - (void)testUp {
5050
XCTAssert(testInfo.reqId, @"Pass");
5151
}
5252

53-
// test upload 100 file
53+
// upload 100 file and calculate upload success rate
5454
- (void)test100Up {
55-
5655
NSInteger count = 100;
5756
__block NSInteger completeCount = 0;
5857
__block NSInteger successCount = 0;
@@ -69,12 +68,12 @@ - (void)test100Up {
6968
}];
7069
}
7170

72-
// AGWW_WAIT_WHILE(completeCount != 100, 100.0);
73-
[NSThread sleepForTimeInterval:300.0];
71+
AGWW_WAIT_WHILE(completeCount != count, 100.0);
7472

7573
CGFloat successRate = successCount * 1.0 / count;
74+
NSLog(@"successCount: %td", successCount);
7675
NSLog(@"successRate: %lf", successRate);
77-
// XCTAssert(successRate > 0.9, @"Pass");
76+
XCTAssert(completeCount == count, @"Pass");
7877
}
7978

8079
- (void)test100UpTask:(NSString *)taskId complete:(void(^)(BOOL isSuccess))complete{
@@ -83,11 +82,17 @@ - (void)test100UpTask:(NSString *)taskId complete:(void(^)(BOOL isSuccess))compl
8382
}];
8483
QNUploadManager *upManager = [[QNUploadManager alloc]initWithConfiguration:config];
8584
QNUploadOption *opt = [[QNUploadOption alloc] initWithMime:@"text/plain" progressHandler:nil params:@{ @"x:foo" : @"bar" } checkCrc:YES cancellationSignal:nil];
86-
NSData *data = [@"Hello, World!" dataUsingEncoding:NSUTF8StringEncoding];
85+
NSMutableString *contentString = [NSMutableString string];
86+
NSString *word = @"Hello, World!";
87+
while (contentString.length < 1024) {
88+
[contentString appendString:word];
89+
}
90+
NSData *data = [[contentString copy] dataUsingEncoding:NSUTF8StringEncoding];
8791
[upManager putData:data key:taskId token:g_token complete:^(QNResponseInfo *info, NSString *key, NSDictionary *resp) {
8892
if (info.isOK && info.reqId) {
8993
complete(YES);
9094
} else {
95+
NSLog(@"upload failed. response info is: %@",info);
9196
complete(NO);
9297
}
9398
} option:opt];

hack/network_loss.sh

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
#!/bin/bash
22

3+
# Created by chupei on 20/05
4+
# Copyright (c) 2014年 Qiniu. All rights reserved.
5+
# This script is used to test upload success rate in bad network environment.
6+
37
set -o errexit
48
set -o pipefail
5-
set -x
6-
7-
LOSSRATE=$1
89

910
inject-network-loss(){
1011
sudo dnctl pipe 1 config plr $1
12+
# sudo dnctl pipe 1 config plr $1 bw 1000Kbit/s
1113
echo "dummynet in proto tcp from any to any pipe 1" > pf.conf
1214
echo "dummynet out proto tcp from any to any pipe 1" >> pf.conf
1315
sudo pfctl -f pf.conf
@@ -18,29 +20,32 @@ info(){
1820
}
1921

2022
info "enable pf"
21-
sudo pfctl -e
23+
trap 'info "disable pf"; sudo pfctl -d' EXIT
24+
sudo pfctl -e
2225

2326
info "inject network loss 0.01"
2427
inject-network-loss 0.01
2528

2629
info "run unit test"
27-
xcodebuild test -workspace QiniuSDK.xcworkspace -scheme QiniuSDK_iOS -configuration Release -destination 'platform=iOS Simulator,OS=12.4,name=iPhone Xs Max' -only-testing:QiniuSDK_iOSTests/QNFormUploadTest/test100Up
30+
xcodebuild test -workspace QiniuSDK.xcworkspace -scheme QiniuSDK_iOS -configuration Release -destination 'platform=iOS Simulator,OS=13.4.1,name=iPhone 11' -only-testing:QiniuSDK_iOSTests/QNFormUploadTest/test100Up
2831

2932

3033
info "inject network loss 0.1"
3134
inject-network-loss 0.1
3235

3336
info "run unit test"
34-
xcodebuild test -workspace QiniuSDK.xcworkspace -scheme QiniuSDK_iOS -configuration Release -destination 'platform=iOS Simulator,OS=12.4,name=iPhone Xs Max' -only-testing:QiniuSDK_iOSTests/QNFormUploadTest/test100Up
37+
xcodebuild test -workspace QiniuSDK.xcworkspace -scheme QiniuSDK_iOS -configuration Release -destination 'platform=iOS Simulator,OS=13.4.1,name=iPhone 11' -only-testing:QiniuSDK_iOSTests/QNFormUploadTest/test100Up
3538

3639
info "inject network loss 0.2"
3740
inject-network-loss 0.2
3841

3942
info "run unit test"
40-
xcodebuild test -workspace QiniuSDK.xcworkspace -scheme QiniuSDK_iOS -configuration Release -destination 'platform=iOS Simulator,OS=12.4,name=iPhone Xs Max' -only-testing:QiniuSDK_iOSTests/QNFormUploadTest/test100Up
43+
xcodebuild test -workspace QiniuSDK.xcworkspace -scheme QiniuSDK_iOS -configuration Release -destination 'platform=iOS Simulator,OS=13.4.1,name=iPhone 11' -only-testing:QiniuSDK_iOSTests/QNFormUploadTest/test100Up
4144

4245
info "inject network loss 0.5"
4346
inject-network-loss 0.5
4447

4548
info "run unit test"
46-
xcodebuild test -workspace QiniuSDK.xcworkspace -scheme QiniuSDK_iOS -configuration Release -destination 'platform=iOS Simulator,OS=12.4,name=iPhone Xs Max' -only-testing:QiniuSDK_iOSTests/QNFormUploadTest/test100Up
49+
xcodebuild test -workspace QiniuSDK.xcworkspace -scheme QiniuSDK_iOS -configuration Release -destination 'platform=iOS Simulator,OS=13.4.1,name=iPhone 11' -only-testing:QiniuSDK_iOSTests/QNFormUploadTest/test100Up
50+
51+

0 commit comments

Comments
 (0)