OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 package org.chromium.net; | 5 package org.chromium.net; |
6 | 6 |
7 import android.os.ConditionVariable; | 7 import android.os.ConditionVariable; |
8 import android.os.ParcelFileDescriptor; | 8 import android.os.ParcelFileDescriptor; |
9 import android.os.StrictMode; | 9 import android.os.StrictMode; |
10 import android.test.suitebuilder.annotation.SmallTest; | 10 import android.test.suitebuilder.annotation.SmallTest; |
11 | 11 |
12 import org.chromium.base.annotations.SuppressFBWarnings; | 12 import org.chromium.base.annotations.SuppressFBWarnings; |
13 import org.chromium.base.test.util.Feature; | 13 import org.chromium.base.test.util.Feature; |
14 | 14 |
15 import java.io.File; | 15 import java.io.File; |
16 import java.io.FileOutputStream; | 16 import java.io.FileOutputStream; |
17 import java.io.IOException; | 17 import java.io.IOException; |
18 import java.nio.ByteBuffer; | 18 import java.nio.ByteBuffer; |
19 | 19 |
20 /** Test the default provided implementations of {@link UploadDataProvider} */ | 20 /** Test the default provided implementations of {@link UploadDataProvider} */ |
21 public class UploadDataProvidersTest extends CronetTestBase { | 21 public class UploadDataProvidersTest extends CronetTestBase { |
22 private static final String LOREM = "Lorem ipsum dolor sit amet, consectetur
adipiscing elit. " | 22 private static final String LOREM = "Lorem ipsum dolor sit amet, consectetur
adipiscing elit. " |
23 + "Proin elementum, libero laoreet fringilla faucibus, metus tortor
vehicula ante, " | 23 + "Proin elementum, libero laoreet fringilla faucibus, metus tortor
vehicula ante, " |
24 + "lacinia lorem eros vel sapien."; | 24 + "lacinia lorem eros vel sapien."; |
25 private CronetTestFramework mTestFramework; | 25 private CronetTestFramework mTestFramework; |
26 private File mFile; | 26 private File mFile; |
27 private StrictMode.VmPolicy mOldVmPolicy; | 27 private StrictMode.VmPolicy mOldVmPolicy; |
| 28 private MockUrlRequestJobFactory mMockUrlRequestJobFactory; |
28 | 29 |
29 @Override | 30 @Override |
30 protected void setUp() throws Exception { | 31 protected void setUp() throws Exception { |
31 super.setUp(); | 32 super.setUp(); |
32 mOldVmPolicy = StrictMode.getVmPolicy(); | 33 mOldVmPolicy = StrictMode.getVmPolicy(); |
33 StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() | 34 StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() |
34 .detectLeakedClosableObjects() | 35 .detectLeakedClosableObjects() |
35 .penaltyLog() | 36 .penaltyLog() |
36 .penaltyDeath() | 37 .penaltyDeath() |
37 .build()); | 38 .build()); |
38 mTestFramework = startCronetTestFramework(); | 39 mTestFramework = startCronetTestFramework(); |
39 assertTrue(NativeTestServer.startNativeTestServer(getContext())); | 40 assertTrue(NativeTestServer.startNativeTestServer(getContext())); |
40 // Add url interceptors after native application context is initialized. | 41 // Add url interceptors after native application context is initialized. |
41 MockUrlRequestJobFactory.setUp(); | 42 mMockUrlRequestJobFactory = new MockUrlRequestJobFactory(mTestFramework.
mCronetEngine); |
42 mFile = new File(getContext().getCacheDir().getPath() + "/tmpfile"); | 43 mFile = new File(getContext().getCacheDir().getPath() + "/tmpfile"); |
43 FileOutputStream fileOutputStream = new FileOutputStream(mFile); | 44 FileOutputStream fileOutputStream = new FileOutputStream(mFile); |
44 try { | 45 try { |
45 fileOutputStream.write(LOREM.getBytes("UTF-8")); | 46 fileOutputStream.write(LOREM.getBytes("UTF-8")); |
46 } finally { | 47 } finally { |
47 fileOutputStream.close(); | 48 fileOutputStream.close(); |
48 } | 49 } |
49 } | 50 } |
50 | 51 |
51 @SuppressFBWarnings("DM_GC") // Used to trigger strictmode detecting leaked
closeables | 52 @SuppressFBWarnings("DM_GC") // Used to trigger strictmode detecting leaked
closeables |
52 @Override | 53 @Override |
53 protected void tearDown() throws Exception { | 54 protected void tearDown() throws Exception { |
54 try { | 55 try { |
| 56 mMockUrlRequestJobFactory.shutdown(); |
55 NativeTestServer.shutdownNativeTestServer(); | 57 NativeTestServer.shutdownNativeTestServer(); |
56 mTestFramework.mCronetEngine.shutdown(); | 58 mTestFramework.mCronetEngine.shutdown(); |
57 assertTrue(mFile.delete()); | 59 assertTrue(mFile.delete()); |
58 // Run GC and finalizers a few times to pick up leaked closeables | 60 // Run GC and finalizers a few times to pick up leaked closeables |
59 for (int i = 0; i < 10; i++) { | 61 for (int i = 0; i < 10; i++) { |
60 System.gc(); | 62 System.gc(); |
61 System.runFinalization(); | 63 System.runFinalization(); |
62 } | 64 } |
63 System.gc(); | 65 System.gc(); |
64 System.runFinalization(); | 66 System.runFinalization(); |
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
222 UploadDataProviders.create(uploadDataWithPadding, offset, upload
Data.length); | 224 UploadDataProviders.create(uploadDataWithPadding, offset, upload
Data.length); |
223 assertEquals(uploadData.length, dataProvider.getLength()); | 225 assertEquals(uploadData.length, dataProvider.getLength()); |
224 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); | 226 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); |
225 UrlRequest urlRequest = builder.build(); | 227 UrlRequest urlRequest = builder.build(); |
226 urlRequest.start(); | 228 urlRequest.start(); |
227 callback.blockForDone(); | 229 callback.blockForDone(); |
228 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 230 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
229 assertEquals(LOREM, callback.mResponseAsString); | 231 assertEquals(LOREM, callback.mResponseAsString); |
230 } | 232 } |
231 } | 233 } |
OLD | NEW |