| 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; | |
| 10 import android.support.test.filters.SmallTest; | 9 import android.support.test.filters.SmallTest; |
| 11 | 10 |
| 12 import org.chromium.base.annotations.SuppressFBWarnings; | |
| 13 import org.chromium.base.test.util.Feature; | 11 import org.chromium.base.test.util.Feature; |
| 14 | 12 |
| 15 import java.io.File; | 13 import java.io.File; |
| 16 import java.io.FileOutputStream; | 14 import java.io.FileOutputStream; |
| 17 import java.io.IOException; | 15 import java.io.IOException; |
| 18 import java.nio.ByteBuffer; | 16 import java.nio.ByteBuffer; |
| 19 | 17 |
| 20 /** Test the default provided implementations of {@link UploadDataProvider} */ | 18 /** Test the default provided implementations of {@link UploadDataProvider} */ |
| 21 public class UploadDataProvidersTest extends CronetTestBase { | 19 public class UploadDataProvidersTest extends CronetTestBase { |
| 22 private static final String LOREM = "Lorem ipsum dolor sit amet, consectetur
adipiscing elit. " | 20 private static final String LOREM = "Lorem ipsum dolor sit amet, consectetur
adipiscing elit. " |
| 23 + "Proin elementum, libero laoreet fringilla faucibus, metus tortor
vehicula ante, " | 21 + "Proin elementum, libero laoreet fringilla faucibus, metus tortor
vehicula ante, " |
| 24 + "lacinia lorem eros vel sapien."; | 22 + "lacinia lorem eros vel sapien."; |
| 25 private CronetTestFramework mTestFramework; | 23 private CronetTestFramework mTestFramework; |
| 26 private File mFile; | 24 private File mFile; |
| 27 private StrictMode.VmPolicy mOldVmPolicy; | |
| 28 private MockUrlRequestJobFactory mMockUrlRequestJobFactory; | 25 private MockUrlRequestJobFactory mMockUrlRequestJobFactory; |
| 29 | 26 |
| 30 @Override | 27 @Override |
| 31 protected void setUp() throws Exception { | 28 protected void setUp() throws Exception { |
| 32 super.setUp(); | 29 super.setUp(); |
| 33 mOldVmPolicy = StrictMode.getVmPolicy(); | |
| 34 StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder() | |
| 35 .detectLeakedClosableObjects() | |
| 36 .penaltyLog() | |
| 37 .penaltyDeath() | |
| 38 .build()); | |
| 39 mTestFramework = startCronetTestFramework(); | 30 mTestFramework = startCronetTestFramework(); |
| 40 assertTrue(NativeTestServer.startNativeTestServer(getContext())); | 31 assertTrue(NativeTestServer.startNativeTestServer(getContext())); |
| 41 // Add url interceptors after native application context is initialized. | 32 // Add url interceptors after native application context is initialized. |
| 42 mMockUrlRequestJobFactory = new MockUrlRequestJobFactory(mTestFramework.
mCronetEngine); | 33 mMockUrlRequestJobFactory = new MockUrlRequestJobFactory(mTestFramework.
mCronetEngine); |
| 43 mFile = new File(getContext().getCacheDir().getPath() + "/tmpfile"); | 34 mFile = new File(getContext().getCacheDir().getPath() + "/tmpfile"); |
| 44 FileOutputStream fileOutputStream = new FileOutputStream(mFile); | 35 FileOutputStream fileOutputStream = new FileOutputStream(mFile); |
| 45 try { | 36 try { |
| 46 fileOutputStream.write(LOREM.getBytes("UTF-8")); | 37 fileOutputStream.write(LOREM.getBytes("UTF-8")); |
| 47 } finally { | 38 } finally { |
| 48 fileOutputStream.close(); | 39 fileOutputStream.close(); |
| 49 } | 40 } |
| 50 } | 41 } |
| 51 | 42 |
| 52 @SuppressFBWarnings("DM_GC") // Used to trigger strictmode detecting leaked
closeables | |
| 53 @Override | 43 @Override |
| 54 protected void tearDown() throws Exception { | 44 protected void tearDown() throws Exception { |
| 55 try { | 45 mMockUrlRequestJobFactory.shutdown(); |
| 56 mMockUrlRequestJobFactory.shutdown(); | 46 NativeTestServer.shutdownNativeTestServer(); |
| 57 NativeTestServer.shutdownNativeTestServer(); | 47 mTestFramework.mCronetEngine.shutdown(); |
| 58 mTestFramework.mCronetEngine.shutdown(); | 48 assertTrue(mFile.delete()); |
| 59 assertTrue(mFile.delete()); | 49 super.tearDown(); |
| 60 // Run GC and finalizers a few times to pick up leaked closeables | |
| 61 for (int i = 0; i < 10; i++) { | |
| 62 System.gc(); | |
| 63 System.runFinalization(); | |
| 64 } | |
| 65 System.gc(); | |
| 66 System.runFinalization(); | |
| 67 super.tearDown(); | |
| 68 } finally { | |
| 69 StrictMode.setVmPolicy(mOldVmPolicy); | |
| 70 } | |
| 71 } | 50 } |
| 72 | 51 |
| 73 @SmallTest | 52 @SmallTest |
| 74 @Feature({"Cronet"}) | 53 @Feature({"Cronet"}) |
| 75 public void testFileProvider() throws Exception { | 54 public void testFileProvider() throws Exception { |
| 76 TestUrlRequestCallback callback = new TestUrlRequestCallback(); | 55 TestUrlRequestCallback callback = new TestUrlRequestCallback(); |
| 77 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB
uilder( | 56 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB
uilder( |
| 78 NativeTestServer.getRedirectToEchoBody(), callback, callback.get
Executor()); | 57 NativeTestServer.getRedirectToEchoBody(), callback, callback.get
Executor()); |
| 79 UploadDataProvider dataProvider = UploadDataProviders.create(mFile); | 58 UploadDataProvider dataProvider = UploadDataProviders.create(mFile); |
| 80 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); | 59 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 223 UploadDataProviders.create(uploadDataWithPadding, offset, upload
Data.length); | 202 UploadDataProviders.create(uploadDataWithPadding, offset, upload
Data.length); |
| 224 assertEquals(uploadData.length, dataProvider.getLength()); | 203 assertEquals(uploadData.length, dataProvider.getLength()); |
| 225 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); | 204 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); |
| 226 UrlRequest urlRequest = builder.build(); | 205 UrlRequest urlRequest = builder.build(); |
| 227 urlRequest.start(); | 206 urlRequest.start(); |
| 228 callback.blockForDone(); | 207 callback.blockForDone(); |
| 229 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); | 208 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); |
| 230 assertEquals(LOREM, callback.mResponseAsString); | 209 assertEquals(LOREM, callback.mResponseAsString); |
| 231 } | 210 } |
| 232 } | 211 } |
| OLD | NEW |