33import android .test .AndroidTestCase ;
44import android .util .Log ;
55
6+ import com .qiniu .android .common .Config ;
67import com .qiniu .android .http .ResponseInfo ;
78import com .qiniu .android .storage .Configuration ;
89import com .qiniu .android .storage .UpCompletionHandler ;
1718import java .util .concurrent .CountDownLatch ;
1819import java .util .concurrent .TimeUnit ;
1920
20- public class ComplexUploadSceneTest extends AndroidTestCase {
21+ public class ComplexUploadSceneTest extends UploadBaseTest {
2122
2223 private final CountDownLatch signal = new CountDownLatch (1 );
2324
24- public void testMutiUpload (){
25+ public void testMutiUploadV1 (){
2526
26- final int maxCount = 10 ;
27+ final int maxCount = 40 ;
2728
2829 final TestParam param = new TestParam ();
2930 param .completeCount = 0 ;
3031 param .successCount = 0 ;
3132
32- for (int i = 0 ; i < maxCount ; i ++) {
33- template ((i + 1 ) * 100 , new CompleteHandler () {
34- @ Override
35- public void complete (boolean isSuccess ) {
33+ final int start = 37 ;
34+ for (int i = start ; i < maxCount ; i ++) {
35+ Configuration config = new Configuration .Builder ()
36+ .resumeUploadVersion (Configuration .RESUME_UPLOAD_VERSION_V1 )
37+ .useConcurrentResumeUpload (true )
38+ .concurrentTaskCount (3 )
39+ .chunkSize ((i %4 + 1 ) * 1024 * 1024 + i )
40+ .build ();
41+
42+ int size = (i + 1 ) * 1024 ;
43+ final String keyUp = "android_complex_upload_v1_" + size + "k" ;
44+ File file = null ;
45+ try {
46+ file = TempFile .createFile (size );
47+ } catch (IOException e ) {
48+ continue ;
49+ }
3650
51+ uploadFile (file , keyUp , config , null , new UpCompletionHandler () {
52+ @ Override
53+ public void complete (String key , ResponseInfo info , JSONObject response ) {
3754 synchronized (param ){
3855 param .completeCount += 1 ;
39- if (isSuccess ){
56+ if (info != null && info . isOK () ){
4057 param .successCount += 1 ;
4158 }
42- if (param .completeCount == maxCount ){
59+ if (param .completeCount == ( maxCount - start ) ){
4360 signal .countDown ();
4461 }
4562 }
63+ Log .d ("upload key:" + keyUp , "complex_upload_v1 response: " + info );
4664 }
4765 });
4866 }
@@ -52,40 +70,60 @@ public void complete(boolean isSuccess) {
5270 } catch (InterruptedException e ) {
5371 }
5472
55- Log .d ("ComplexUploadSceneTest" , "complex_upload successCount: " + param .successCount );
73+ Log .d ("ComplexUploadSceneTest" , "complex_upload_v1 successCount: " + param .successCount );
5674 assertTrue ("success count" + param .successCount , param .successCount == param .completeCount );
5775 }
5876
59- private void template ( int size , final CompleteHandler completeHandler ){
77+ public void testMutiUploadV2 ( ){
6078
61- final String keyUp = "android_complex_upload_" + size + "k" ;
62- File file = null ;
63- try {
64- file = TempFile .createFile (size );
65- } catch (IOException e ) {
66- completeHandler .complete (false );
67- return ;
68- }
79+ final int maxCount = 40 ;
6980
70- Configuration configuration = new Configuration .Builder ()
71- .useHttps (true )
72- .build ();
73- UploadManager manager = new UploadManager (configuration );
74-
75- manager .put (file , keyUp , TestConfig .token_na0 , new UpCompletionHandler () {
76- @ Override
77- public void complete (String key , ResponseInfo info , JSONObject response ) {
78- if (info .isOK () && info .reqId != null && keyUp .equals (key )){
79- completeHandler .complete (true );
80- } else {
81- completeHandler .complete (false );
82- }
81+ final TestParam param = new TestParam ();
82+ param .completeCount = 0 ;
83+ param .successCount = 0 ;
84+
85+ final int start = 37 ;
86+ for (int i = start ; i < maxCount ; i ++) {
87+ Configuration config = new Configuration .Builder ()
88+ .resumeUploadVersion (Configuration .RESUME_UPLOAD_VERSION_V2 )
89+ .useConcurrentResumeUpload (true )
90+ .concurrentTaskCount (3 )
91+ .chunkSize ((i %4 + 1 ) * 1024 * 1024 + i )
92+ .build ();
93+
94+ int size = (i + 1 ) * 1024 ;
95+ final String keyUp = "android_complex_upload_v2_" + size + "k" ;
96+ File file = null ;
97+ try {
98+ file = TempFile .createFile (size );
99+ } catch (IOException e ) {
100+ continue ;
83101 }
84- }, null );
85- }
86102
87- private interface CompleteHandler {
88- void complete (boolean isSuccess );
103+ uploadFile (file , keyUp , config , null , new UpCompletionHandler () {
104+ @ Override
105+ public void complete (String key , ResponseInfo info , JSONObject response ) {
106+ synchronized (param ){
107+ param .completeCount += 1 ;
108+ if (info != null && (info .isOK () || info .statusCode == 614 )){
109+ param .successCount += 1 ;
110+ }
111+ if (param .completeCount == (maxCount - start )){
112+ signal .countDown ();
113+ }
114+ }
115+ Log .d ("upload key:" + keyUp , "complex_upload_v2 response: " + info );
116+ }
117+ });
118+ }
119+
120+ try {
121+ signal .await (); // wait for callback
122+ } catch (InterruptedException e ) {
123+ }
124+
125+ Log .d ("ComplexUploadSceneTest" , "complex_upload_v2 successCount: " + param .successCount );
126+ assertTrue ("success count" + param .successCount , param .successCount == (param .completeCount ));
89127 }
90128
91129
0 commit comments