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

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

Issue 2283243002: Allow direct executors in cronet. (Closed)
Patch Set: Improve thread checking Created 4 years, 3 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.os.ConditionVariable; 7 import android.os.ConditionVariable;
8 import android.os.StrictMode; 8 import android.os.StrictMode;
9 import android.test.MoreAsserts; 9 import android.test.MoreAsserts;
10 import android.test.suitebuilder.annotation.SmallTest; 10 import android.test.suitebuilder.annotation.SmallTest;
11 import android.util.Log; 11 import android.util.Log;
12 12
13 import org.chromium.base.test.util.Feature; 13 import org.chromium.base.test.util.Feature;
14 import org.chromium.net.TestUrlRequestCallback.FailureType; 14 import org.chromium.net.TestUrlRequestCallback.FailureType;
15 import org.chromium.net.TestUrlRequestCallback.ResponseStep; 15 import org.chromium.net.TestUrlRequestCallback.ResponseStep;
16 import org.chromium.net.impl.CronetUrlRequest; 16 import org.chromium.net.impl.CronetUrlRequest;
17 import org.chromium.net.test.FailurePhase; 17 import org.chromium.net.test.FailurePhase;
18 18
19 import java.io.IOException; 19 import java.io.IOException;
20 import java.net.ConnectException; 20 import java.net.ConnectException;
21 import java.nio.ByteBuffer; 21 import java.nio.ByteBuffer;
22 import java.util.AbstractMap; 22 import java.util.AbstractMap;
23 import java.util.ArrayList; 23 import java.util.ArrayList;
24 import java.util.Arrays; 24 import java.util.Arrays;
25 import java.util.List; 25 import java.util.List;
26 import java.util.Map; 26 import java.util.Map;
27 import java.util.concurrent.Executor;
27 import java.util.concurrent.ExecutorService; 28 import java.util.concurrent.ExecutorService;
28 import java.util.concurrent.Executors; 29 import java.util.concurrent.Executors;
29 import java.util.concurrent.atomic.AtomicBoolean; 30 import java.util.concurrent.atomic.AtomicBoolean;
30 import java.util.regex.Matcher; 31 import java.util.regex.Matcher;
31 import java.util.regex.Pattern; 32 import java.util.regex.Pattern;
32 33
33 /** 34 /**
34 * Test functionality of CronetUrlRequest. 35 * Test functionality of CronetUrlRequest.
35 */ 36 */
36 public class CronetUrlRequestTest extends CronetTestBase { 37 public class CronetUrlRequestTest extends CronetTestBase {
(...skipping 1330 matching lines...) Expand 10 before | Expand all | Expand 10 after
1367 dataProvider.assertClosed(); 1368 dataProvider.assertClosed();
1368 1369
1369 assertEquals(1, dataProvider.getNumReadCalls()); 1370 assertEquals(1, dataProvider.getNumReadCalls());
1370 assertEquals(0, dataProvider.getNumRewindCalls()); 1371 assertEquals(0, dataProvider.getNumRewindCalls());
1371 1372
1372 assertEquals("Exception received from UploadDataProvider", callback.mErr or.getMessage()); 1373 assertEquals("Exception received from UploadDataProvider", callback.mErr or.getMessage());
1373 assertEquals("Async read failure", callback.mError.getCause().getMessage ()); 1374 assertEquals("Async read failure", callback.mError.getCause().getMessage ());
1374 assertEquals(null, callback.mResponseInfo); 1375 assertEquals(null, callback.mResponseInfo);
1375 } 1376 }
1376 1377
1378 /** This test uses a direct executor for upload, and non direct for callback s */
1379 @SmallTest
1380 @Feature({"Cronet"})
1381 public void testDirectExecutorUploadProhibitedByDefault() throws Exception {
1382 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1383 Executor myExecutor = new Executor() {
1384
1385 @Override
1386 public void execute(Runnable command) {
1387 command.run();
1388 }
1389 };
1390 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(),
1391 callback, callback.getExecutor(), mTestFramework.mCronetEngine);
1392
1393 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1394 TestUploadDataProvider.SuccessCallbackMode.SYNC, myExecutor);
1395 // This will never be read, but if the length is 0, read may never be
1396 // called.
1397 dataProvider.addRead("test".getBytes());
1398 builder.setUploadDataProvider(dataProvider, myExecutor);
1399 builder.addHeader("Content-Type", "useless/string");
1400 builder.build().start();
1401 callback.blockForDone();
1402
1403 assertEquals(0, dataProvider.getNumReadCalls());
1404 assertEquals(0, dataProvider.getNumRewindCalls());
1405
1406 assertEquals("Exception received from UploadDataProvider", callback.mErr or.getMessage());
1407 assertEquals("Inline execution is prohibited for this request",
1408 callback.mError.getCause().getMessage());
1409 assertEquals(null, callback.mResponseInfo);
1410 }
1411
1412 /** This test uses a direct executor for callbacks, and non direct for uploa d */
1413 @SmallTest
1414 @Feature({"Cronet"})
1415 public void testDirectExecutorProhibitedByDefault() throws Exception {
1416 System.out.println("testing with " + mTestFramework.mCronetEngine);
1417 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1418 Executor myExecutor = new Executor() {
1419
1420 @Override
1421 public void execute(Runnable command) {
1422 command.run();
1423 }
1424 };
1425 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(),
1426 callback, myExecutor, mTestFramework.mCronetEngine);
1427
1428 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1429 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor());
1430 // This will never be read, but if the length is 0, read may never be
1431 // called.
1432 dataProvider.addRead("test".getBytes());
1433 builder.setUploadDataProvider(dataProvider, callback.getExecutor());
1434 builder.addHeader("Content-Type", "useless/string");
1435 builder.build().start();
1436 callback.blockForDone();
1437
1438 assertEquals(1, dataProvider.getNumReadCalls());
1439 assertEquals(0, dataProvider.getNumRewindCalls());
1440
1441 callback.mError.printStackTrace();
1442 assertEquals("Exception posting task to executor", callback.mError.getMe ssage());
1443 assertEquals("Inline execution is prohibited for this request",
1444 callback.mError.getCause().getMessage());
1445 assertEquals(null, callback.mResponseInfo);
1446 dataProvider.assertClosed();
1447 }
1448
1449 @SmallTest
1450 @Feature({"Cronet"})
1451 public void testDirectExecutorAllowed() throws Exception {
1452 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1453 callback.setAllowDirectExecutor(true);
1454 Executor myExecutor = new Executor() {
1455
1456 @Override
1457 public void execute(Runnable command) {
1458 command.run();
1459 }
1460 };
1461 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(),
1462 callback, myExecutor, mTestFramework.mCronetEngine);
1463 UploadDataProvider dataProvider = UploadDataProviders.create("test".getB ytes("UTF-8"));
1464 builder.setUploadDataProvider(dataProvider, myExecutor);
1465 builder.addHeader("Content-Type", "useless/string");
1466 builder.allowDirectExecutor();
1467 builder.build().start();
1468 callback.blockForDone();
1469
1470 if (callback.mOnErrorCalled) {
1471 throw callback.mError;
1472 }
1473
1474 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
1475 assertEquals("test", callback.mResponseAsString);
1476 }
1477
1377 @SmallTest 1478 @SmallTest
1378 @Feature({"Cronet"}) 1479 @Feature({"Cronet"})
1379 public void testUploadReadFailThrown() throws Exception { 1480 public void testUploadReadFailThrown() throws Exception {
1380 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1481 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1381 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(), 1482 UrlRequest.Builder builder = new UrlRequest.Builder(NativeTestServer.get EchoBodyURL(),
1382 callback, callback.getExecutor(), mTestFramework.mCronetEngine); 1483 callback, callback.getExecutor(), mTestFramework.mCronetEngine);
1383 1484
1384 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1485 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1385 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor()); 1486 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor());
1386 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.THROWN); 1487 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.THROWN);
(...skipping 529 matching lines...) Expand 10 before | Expand all | Expand 10 after
1916 private String bufferContentsToString(ByteBuffer byteBuffer, int start, int end) { 2017 private String bufferContentsToString(ByteBuffer byteBuffer, int start, int end) {
1917 // Use a duplicate to avoid modifying byteBuffer. 2018 // Use a duplicate to avoid modifying byteBuffer.
1918 ByteBuffer duplicate = byteBuffer.duplicate(); 2019 ByteBuffer duplicate = byteBuffer.duplicate();
1919 duplicate.position(start); 2020 duplicate.position(start);
1920 duplicate.limit(end); 2021 duplicate.limit(end);
1921 byte[] contents = new byte[duplicate.remaining()]; 2022 byte[] contents = new byte[duplicate.remaining()];
1922 duplicate.get(contents); 2023 duplicate.get(contents);
1923 return new String(contents); 2024 return new String(contents);
1924 } 2025 }
1925 } 2026 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698