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

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

Issue 2876253002: [Cronet] Add ExperimentalCronetEngine.Builder.setThreadPriority() API (Closed)
Patch Set: tweaks Created 3 years, 7 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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.content.Context; 7 import android.content.Context;
8 import android.content.ContextWrapper; 8 import android.content.ContextWrapper;
9 import android.os.ConditionVariable; 9 import android.os.ConditionVariable;
10 import android.os.Handler; 10 import android.os.Handler;
11 import android.os.Looper; 11 import android.os.Looper;
12 import android.os.Process;
12 import android.support.test.filters.SmallTest; 13 import android.support.test.filters.SmallTest;
13 14
14 import org.json.JSONObject; 15 import org.json.JSONObject;
15 16
16 import static org.chromium.net.CronetEngine.Builder.HTTP_CACHE_IN_MEMORY; 17 import static org.chromium.net.CronetEngine.Builder.HTTP_CACHE_IN_MEMORY;
17 18
18 import org.chromium.base.FileUtils; 19 import org.chromium.base.FileUtils;
19 import org.chromium.base.PathUtils; 20 import org.chromium.base.PathUtils;
20 import org.chromium.base.annotations.JNINamespace; 21 import org.chromium.base.annotations.JNINamespace;
21 import org.chromium.base.test.util.Feature; 22 import org.chromium.base.test.util.Feature;
22 import org.chromium.net.TestUrlRequestCallback.ResponseStep; 23 import org.chromium.net.TestUrlRequestCallback.ResponseStep;
23 import org.chromium.net.impl.CronetEngineBase; 24 import org.chromium.net.impl.CronetEngineBase;
24 import org.chromium.net.impl.CronetEngineBuilderImpl; 25 import org.chromium.net.impl.CronetEngineBuilderImpl;
25 import org.chromium.net.impl.CronetLibraryLoader; 26 import org.chromium.net.impl.CronetLibraryLoader;
26 import org.chromium.net.impl.CronetUrlRequestContext; 27 import org.chromium.net.impl.CronetUrlRequestContext;
27 import org.chromium.net.test.EmbeddedTestServer; 28 import org.chromium.net.test.EmbeddedTestServer;
28 29
29 import java.io.BufferedReader; 30 import java.io.BufferedReader;
30 import java.io.File; 31 import java.io.File;
31 import java.io.FileReader; 32 import java.io.FileReader;
32 import java.net.URL; 33 import java.net.URL;
34 import java.nio.ByteBuffer;
33 import java.util.Arrays; 35 import java.util.Arrays;
36 import java.util.concurrent.Callable;
34 import java.util.concurrent.Executor; 37 import java.util.concurrent.Executor;
38 import java.util.concurrent.FutureTask;
35 import java.util.concurrent.atomic.AtomicReference; 39 import java.util.concurrent.atomic.AtomicReference;
36 40
37 /** 41 /**
38 * Test CronetEngine. 42 * Test CronetEngine.
39 */ 43 */
40 @JNINamespace("cronet") 44 @JNINamespace("cronet")
41 public class CronetUrlRequestContextTest extends CronetTestBase { 45 public class CronetUrlRequestContextTest extends CronetTestBase {
42 private static final String TAG = CronetUrlRequestContextTest.class.getSimpl eName(); 46 private static final String TAG = CronetUrlRequestContextTest.class.getSimpl eName();
43 47
44 // URLs used for tests. 48 // URLs used for tests.
(...skipping 1214 matching lines...) Expand 10 before | Expand all | Expand 10 after
1259 startCronetTestFrameworkWithUrlAndCronetEngineBuilder(null, cron etEngineBuilder); 1263 startCronetTestFrameworkWithUrlAndCronetEngineBuilder(null, cron etEngineBuilder);
1260 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1264 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1261 URL requestUrl = 1265 URL requestUrl =
1262 new URL("http", resolverTestHostname, testUrl.getPort(), testUrl .getFile()); 1266 new URL("http", resolverTestHostname, testUrl.getPort(), testUrl .getFile());
1263 UrlRequest.Builder urlRequestBuilder = testFramework.mCronetEngine.newUr lRequestBuilder( 1267 UrlRequest.Builder urlRequestBuilder = testFramework.mCronetEngine.newUr lRequestBuilder(
1264 requestUrl.toString(), callback, callback.getExecutor()); 1268 requestUrl.toString(), callback, callback.getExecutor());
1265 urlRequestBuilder.build().start(); 1269 urlRequestBuilder.build().start();
1266 callback.blockForDone(); 1270 callback.blockForDone();
1267 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 1271 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
1268 } 1272 }
1273
1274 /**
1275 * Runs {@code r} on {@code engine}'s network thread.
1276 */
1277 private static void postToNetworkThread(final CronetEngine engine, final Run nable r) {
1278 // Works by requesting an invalid URL which results in onFailed() being called, which is
1279 // done through a direct executor which causes onFailed to be run on the network thread.
1280 Executor directExecutor = new Executor() {
1281 @Override
1282 public void execute(Runnable runable) {
1283 runable.run();
1284 }
1285 };
1286 UrlRequest.Callback callback = new UrlRequest.Callback() {
1287 @Override
1288 public void onRedirectReceived(
1289 UrlRequest request, UrlResponseInfo responseInfo, String new LocationUrl) {}
1290 @Override
1291 public void onResponseStarted(UrlRequest request, UrlResponseInfo re sponseInfo) {}
1292 @Override
1293 public void onReadCompleted(
1294 UrlRequest request, UrlResponseInfo responseInfo, ByteBuffer byteBuffer) {}
1295 @Override
1296 public void onSucceeded(UrlRequest request, UrlResponseInfo response Info) {}
1297
1298 @Override
1299 public void onFailed(
1300 UrlRequest request, UrlResponseInfo responseInfo, CronetExce ption error) {
1301 r.run();
1302 }
1303 };
1304 engine.newUrlRequestBuilder("", callback, directExecutor).build().start( );
1305 }
1306
1307 /**
1308 * @returns the thread priority of {@code engine}'s network thread.
1309 */
1310 private int getThreadPriority(CronetEngine engine) throws Exception {
1311 FutureTask<Integer> task = new FutureTask<Integer>(new Callable<Integer> () {
1312 public Integer call() {
1313 return Process.getThreadPriority(Process.myTid());
1314 }
1315 });
1316 postToNetworkThread(engine, task);
1317 return task.get();
1318 }
1319
1320 @SmallTest
1321 @Feature({"Cronet"})
1322 public void testCronetEngineThreadPriority() throws Exception {
1323 ExperimentalCronetEngine.Builder builder =
1324 new ExperimentalCronetEngine.Builder(getContext());
1325 // Try out of bounds thread priorities.
1326 try {
1327 builder.setThreadPriority(-21);
1328 fail();
1329 } catch (IllegalArgumentException e) {
1330 assertEquals("Thread priority invalid", e.getMessage());
1331 }
1332 try {
1333 builder.setThreadPriority(20);
1334 fail();
1335 } catch (IllegalArgumentException e) {
1336 assertEquals("Thread priority invalid", e.getMessage());
1337 }
1338 // Test that valid thread priority range (-20..19) is working.
1339 for (int threadPriority = -20; threadPriority < 20; threadPriority++) {
1340 builder.setThreadPriority(threadPriority);
1341 assertEquals(threadPriority, getThreadPriority(builder.build()));
mef 2017/05/15 17:20:11 This loop creates and leaks 40*2 CronetEngines. I
pauljensen 2017/05/16 13:19:45 Done.
1342 }
1343 }
1269 } 1344 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698