Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(482)

Side by Side Diff: components/cronet/android/test/javatests/src/org/chromium/net/UploadDataProvidersTest.java

Issue 2903193002: [Cronet] Fix two races/leaks in JavaUrlRequest (Closed)
Patch Set: whoops, put back JavaUrlRequest.java Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestTest.java ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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 }
OLDNEW
« no previous file with comments | « components/cronet/android/test/javatests/src/org/chromium/net/CronetUrlRequestTest.java ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698