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

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

Issue 2506653003: Instrument CronetUrlRequestTest#testThrowOrCancelInOnCanceled flaky test (Closed)
Patch Set: Spelling fix Created 4 years, 1 month 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;
(...skipping 351 matching lines...) Expand 10 before | Expand all | Expand 10 after
362 String url = NativeTestServer.getFileURL( 362 String url = NativeTestServer.getFileURL(
363 "/content_length_mismatch.html"); 363 "/content_length_mismatch.html");
364 TestUrlRequestCallback callback = startAndWaitForComplete(url); 364 TestUrlRequestCallback callback = startAndWaitForComplete(url);
365 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 365 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
366 // The entire response body will be read before the error is returned. 366 // The entire response body will be read before the error is returned.
367 // This is because the network stack returns data as it's read from the 367 // This is because the network stack returns data as it's read from the
368 // socket, and the socket close message which triggers the error will 368 // socket, and the socket close message which triggers the error will
369 // only be passed along after all data has been read. 369 // only be passed along after all data has been read.
370 assertEquals("Response that lies about content length.", callback.mRespo nseAsString); 370 assertEquals("Response that lies about content length.", callback.mRespo nseAsString);
371 assertNotNull(callback.mError); 371 assertNotNull(callback.mError);
372 assertEquals("Exception in CronetUrlRequest: net::ERR_CONTENT_LENGTH_MIS MATCH", 372 assertContains("Exception in CronetUrlRequest: net::ERR_CONTENT_LENGTH_M ISMATCH",
373 callback.mError.getMessage()); 373 callback.mError.getMessage());
374 // Wait for a couple round trips to make sure there are no pending 374 // Wait for a couple round trips to make sure there are no pending
375 // onFailed messages. This test relies on checks in 375 // onFailed messages. This test relies on checks in
376 // TestUrlRequestCallback catching a second onFailed call. 376 // TestUrlRequestCallback catching a second onFailed call.
377 testSimpleGet(); 377 testSimpleGet();
378 } 378 }
379 379
380 @SmallTest 380 @SmallTest
381 @Feature({"Cronet"}) 381 @Feature({"Cronet"})
382 public void testSetHttpMethod() throws Exception { 382 public void testSetHttpMethod() throws Exception {
(...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after
682 @SmallTest 682 @SmallTest
683 @Feature({"Cronet"}) 683 @Feature({"Cronet"})
684 @OnlyRunNativeCronet // Java impl doesn't support MockUrlRequestJobFactory 684 @OnlyRunNativeCronet // Java impl doesn't support MockUrlRequestJobFactory
685 public void testMockSSLCertificateError() throws Exception { 685 public void testMockSSLCertificateError() throws Exception {
686 TestUrlRequestCallback callback = startAndWaitForComplete( 686 TestUrlRequestCallback callback = startAndWaitForComplete(
687 MockUrlRequestJobFactory.getMockUrlForSSLCertificateError()); 687 MockUrlRequestJobFactory.getMockUrlForSSLCertificateError());
688 assertNull(callback.mResponseInfo); 688 assertNull(callback.mResponseInfo);
689 assertNotNull(callback.mError); 689 assertNotNull(callback.mError);
690 assertTrue(callback.mOnErrorCalled); 690 assertTrue(callback.mOnErrorCalled);
691 assertEquals(-201, callback.mError.getCronetInternalErrorCode()); 691 assertEquals(-201, callback.mError.getCronetInternalErrorCode());
692 assertEquals("Exception in CronetUrlRequest: net::ERR_CERT_DATE_INVALID" , 692 assertContains("Exception in CronetUrlRequest: net::ERR_CERT_DATE_INVALI D",
693 callback.mError.getMessage()); 693 callback.mError.getMessage());
694 assertEquals(ResponseStep.ON_FAILED, callback.mResponseStep); 694 assertEquals(ResponseStep.ON_FAILED, callback.mResponseStep);
695 } 695 }
696 696
697 /** 697 /**
698 * Checks that the buffer is updated correctly, when starting at an offset. 698 * Checks that the buffer is updated correctly, when starting at an offset.
699 */ 699 */
700 @SmallTest 700 @SmallTest
701 @Feature({"Cronet"}) 701 @Feature({"Cronet"})
702 public void testSimpleGetBufferUpdates() throws Exception { 702 public void testSimpleGetBufferUpdates() throws Exception {
(...skipping 537 matching lines...) Expand 10 before | Expand all | Expand 10 after
1240 byteBuffer.put("12".getBytes()); 1240 byteBuffer.put("12".getBytes());
1241 uploadDataSink.onReadSucceeded(false); 1241 uploadDataSink.onReadSucceeded(false);
1242 } 1242 }
1243 }; 1243 };
1244 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); 1244 builder.setUploadDataProvider(dataProvider, callback.getExecutor());
1245 builder.addHeader("Content-Type", "useless/string"); 1245 builder.addHeader("Content-Type", "useless/string");
1246 builder.build().start(); 1246 builder.build().start();
1247 callback.blockForDone(); 1247 callback.blockForDone();
1248 dataProvider.assertClosed(); 1248 dataProvider.assertClosed();
1249 1249
1250 assertEquals("Exception received from UploadDataProvider", callback.mErr or.getMessage()); 1250 assertContains("Exception received from UploadDataProvider", callback.mE rror.getMessage());
1251 assertEquals("Read upload data length 2 exceeds expected length 1", 1251 assertContains("Read upload data length 2 exceeds expected length 1",
1252 callback.mError.getCause().getMessage()); 1252 callback.mError.getCause().getMessage());
1253 assertEquals(null, callback.mResponseInfo); 1253 assertEquals(null, callback.mResponseInfo);
1254 } 1254 }
1255 1255
1256 @SmallTest 1256 @SmallTest
1257 @Feature({"Cronet"}) 1257 @Feature({"Cronet"})
1258 public void testUploadWithBadLengthBufferAligned() throws Exception { 1258 public void testUploadWithBadLengthBufferAligned() throws Exception {
1259 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1259 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1260 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder( 1260 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
1261 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto r()); 1261 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto r());
(...skipping 11 matching lines...) Expand all
1273 byteBuffer.put("0123456789abcdef".getBytes()); 1273 byteBuffer.put("0123456789abcdef".getBytes());
1274 uploadDataSink.onReadSucceeded(false); 1274 uploadDataSink.onReadSucceeded(false);
1275 } 1275 }
1276 }; 1276 };
1277 dataProvider.addRead("test".getBytes()); 1277 dataProvider.addRead("test".getBytes());
1278 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); 1278 builder.setUploadDataProvider(dataProvider, callback.getExecutor());
1279 builder.addHeader("Content-Type", "useless/string"); 1279 builder.addHeader("Content-Type", "useless/string");
1280 builder.build().start(); 1280 builder.build().start();
1281 callback.blockForDone(); 1281 callback.blockForDone();
1282 dataProvider.assertClosed(); 1282 dataProvider.assertClosed();
1283 assertEquals("Exception received from UploadDataProvider", callback.mErr or.getMessage()); 1283 assertContains("Exception received from UploadDataProvider", callback.mE rror.getMessage());
1284 assertEquals("Read upload data length 8192 exceeds expected length 8191" , 1284 assertContains("Read upload data length 8192 exceeds expected length 819 1",
1285 callback.mError.getCause().getMessage()); 1285 callback.mError.getCause().getMessage());
1286 assertEquals(null, callback.mResponseInfo); 1286 assertEquals(null, callback.mResponseInfo);
1287 } 1287 }
1288 1288
1289 @SmallTest 1289 @SmallTest
1290 @Feature({"Cronet"}) 1290 @Feature({"Cronet"})
1291 public void testUploadReadFailSync() throws Exception { 1291 public void testUploadReadFailSync() throws Exception {
1292 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1292 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1293 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder( 1293 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
1294 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto r()); 1294 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto r());
1295 1295
1296 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1296 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1297 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor()); 1297 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor());
1298 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.CALLBACK_ SYNC); 1298 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.CALLBACK_ SYNC);
1299 // This will never be read, but if the length is 0, read may never be 1299 // This will never be read, but if the length is 0, read may never be
1300 // called. 1300 // called.
1301 dataProvider.addRead("test".getBytes()); 1301 dataProvider.addRead("test".getBytes());
1302 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); 1302 builder.setUploadDataProvider(dataProvider, callback.getExecutor());
1303 builder.addHeader("Content-Type", "useless/string"); 1303 builder.addHeader("Content-Type", "useless/string");
1304 builder.build().start(); 1304 builder.build().start();
1305 callback.blockForDone(); 1305 callback.blockForDone();
1306 dataProvider.assertClosed(); 1306 dataProvider.assertClosed();
1307 1307
1308 assertEquals(1, dataProvider.getNumReadCalls()); 1308 assertEquals(1, dataProvider.getNumReadCalls());
1309 assertEquals(0, dataProvider.getNumRewindCalls()); 1309 assertEquals(0, dataProvider.getNumRewindCalls());
1310 1310
1311 assertEquals("Exception received from UploadDataProvider", callback.mErr or.getMessage()); 1311 assertContains("Exception received from UploadDataProvider", callback.mE rror.getMessage());
1312 assertEquals("Sync read failure", callback.mError.getCause().getMessage( )); 1312 assertContains("Sync read failure", callback.mError.getCause().getMessag e());
1313 assertEquals(null, callback.mResponseInfo); 1313 assertEquals(null, callback.mResponseInfo);
1314 } 1314 }
1315 1315
1316 @SmallTest 1316 @SmallTest
1317 @Feature({"Cronet"}) 1317 @Feature({"Cronet"})
1318 public void testUploadLengthFailSync() throws Exception { 1318 public void testUploadLengthFailSync() throws Exception {
1319 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1319 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1320 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder( 1320 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
1321 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto r()); 1321 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto r());
1322 1322
1323 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1323 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1324 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor()); 1324 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor());
1325 dataProvider.setLengthFailure(); 1325 dataProvider.setLengthFailure();
1326 // This will never be read, but if the length is 0, read may never be 1326 // This will never be read, but if the length is 0, read may never be
1327 // called. 1327 // called.
1328 dataProvider.addRead("test".getBytes()); 1328 dataProvider.addRead("test".getBytes());
1329 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); 1329 builder.setUploadDataProvider(dataProvider, callback.getExecutor());
1330 builder.addHeader("Content-Type", "useless/string"); 1330 builder.addHeader("Content-Type", "useless/string");
1331 builder.build().start(); 1331 builder.build().start();
1332 callback.blockForDone(); 1332 callback.blockForDone();
1333 dataProvider.assertClosed(); 1333 dataProvider.assertClosed();
1334 1334
1335 assertEquals(0, dataProvider.getNumReadCalls()); 1335 assertEquals(0, dataProvider.getNumReadCalls());
1336 assertEquals(0, dataProvider.getNumRewindCalls()); 1336 assertEquals(0, dataProvider.getNumRewindCalls());
1337 1337
1338 assertEquals("Exception received from UploadDataProvider", callback.mErr or.getMessage()); 1338 assertContains("Exception received from UploadDataProvider", callback.mE rror.getMessage());
1339 assertEquals("Sync length failure", callback.mError.getCause().getMessag e()); 1339 assertContains("Sync length failure", callback.mError.getCause().getMess age());
1340 assertEquals(null, callback.mResponseInfo); 1340 assertEquals(null, callback.mResponseInfo);
1341 } 1341 }
1342 1342
1343 @SmallTest 1343 @SmallTest
1344 @Feature({"Cronet"}) 1344 @Feature({"Cronet"})
1345 public void testUploadReadFailAsync() throws Exception { 1345 public void testUploadReadFailAsync() throws Exception {
1346 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1346 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1347 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder( 1347 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
1348 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto r()); 1348 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto r());
1349 1349
1350 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1350 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1351 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor()); 1351 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor());
1352 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.CALLBACK_ ASYNC); 1352 dataProvider.setReadFailure(0, TestUploadDataProvider.FailMode.CALLBACK_ ASYNC);
1353 // This will never be read, but if the length is 0, read may never be 1353 // This will never be read, but if the length is 0, read may never be
1354 // called. 1354 // called.
1355 dataProvider.addRead("test".getBytes()); 1355 dataProvider.addRead("test".getBytes());
1356 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); 1356 builder.setUploadDataProvider(dataProvider, callback.getExecutor());
1357 builder.addHeader("Content-Type", "useless/string"); 1357 builder.addHeader("Content-Type", "useless/string");
1358 builder.build().start(); 1358 builder.build().start();
1359 callback.blockForDone(); 1359 callback.blockForDone();
1360 dataProvider.assertClosed(); 1360 dataProvider.assertClosed();
1361 1361
1362 assertEquals(1, dataProvider.getNumReadCalls()); 1362 assertEquals(1, dataProvider.getNumReadCalls());
1363 assertEquals(0, dataProvider.getNumRewindCalls()); 1363 assertEquals(0, dataProvider.getNumRewindCalls());
1364 1364
1365 assertEquals("Exception received from UploadDataProvider", callback.mErr or.getMessage()); 1365 assertContains("Exception received from UploadDataProvider", callback.mE rror.getMessage());
1366 assertEquals("Async read failure", callback.mError.getCause().getMessage ()); 1366 assertContains("Async read failure", callback.mError.getCause().getMessa ge());
1367 assertEquals(null, callback.mResponseInfo); 1367 assertEquals(null, callback.mResponseInfo);
1368 } 1368 }
1369 1369
1370 /** This test uses a direct executor for upload, and non direct for callback s */ 1370 /** This test uses a direct executor for upload, and non direct for callback s */
1371 @SmallTest 1371 @SmallTest
1372 @Feature({"Cronet"}) 1372 @Feature({"Cronet"})
1373 public void testDirectExecutorUploadProhibitedByDefault() throws Exception { 1373 public void testDirectExecutorUploadProhibitedByDefault() throws Exception {
1374 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1374 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1375 Executor myExecutor = new Executor() { 1375 Executor myExecutor = new Executor() {
1376 1376
(...skipping 11 matching lines...) Expand all
1388 // called. 1388 // called.
1389 dataProvider.addRead("test".getBytes()); 1389 dataProvider.addRead("test".getBytes());
1390 builder.setUploadDataProvider(dataProvider, myExecutor); 1390 builder.setUploadDataProvider(dataProvider, myExecutor);
1391 builder.addHeader("Content-Type", "useless/string"); 1391 builder.addHeader("Content-Type", "useless/string");
1392 builder.build().start(); 1392 builder.build().start();
1393 callback.blockForDone(); 1393 callback.blockForDone();
1394 1394
1395 assertEquals(0, dataProvider.getNumReadCalls()); 1395 assertEquals(0, dataProvider.getNumReadCalls());
1396 assertEquals(0, dataProvider.getNumRewindCalls()); 1396 assertEquals(0, dataProvider.getNumRewindCalls());
1397 1397
1398 assertEquals("Exception received from UploadDataProvider", callback.mErr or.getMessage()); 1398 assertContains("Exception received from UploadDataProvider", callback.mE rror.getMessage());
1399 assertEquals("Inline execution is prohibited for this request", 1399 assertContains("Inline execution is prohibited for this request",
1400 callback.mError.getCause().getMessage()); 1400 callback.mError.getCause().getMessage());
1401 assertEquals(null, callback.mResponseInfo); 1401 assertEquals(null, callback.mResponseInfo);
1402 } 1402 }
1403 1403
1404 /** This test uses a direct executor for callbacks, and non direct for uploa d */ 1404 /** This test uses a direct executor for callbacks, and non direct for uploa d */
1405 @SmallTest 1405 @SmallTest
1406 @Feature({"Cronet"}) 1406 @Feature({"Cronet"})
1407 public void testDirectExecutorProhibitedByDefault() throws Exception { 1407 public void testDirectExecutorProhibitedByDefault() throws Exception {
1408 System.out.println("testing with " + mTestFramework.mCronetEngine); 1408 System.out.println("testing with " + mTestFramework.mCronetEngine);
1409 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1409 TestUrlRequestCallback callback = new TestUrlRequestCallback();
(...skipping 14 matching lines...) Expand all
1424 dataProvider.addRead("test".getBytes()); 1424 dataProvider.addRead("test".getBytes());
1425 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); 1425 builder.setUploadDataProvider(dataProvider, callback.getExecutor());
1426 builder.addHeader("Content-Type", "useless/string"); 1426 builder.addHeader("Content-Type", "useless/string");
1427 builder.build().start(); 1427 builder.build().start();
1428 callback.blockForDone(); 1428 callback.blockForDone();
1429 1429
1430 assertEquals(1, dataProvider.getNumReadCalls()); 1430 assertEquals(1, dataProvider.getNumReadCalls());
1431 assertEquals(0, dataProvider.getNumRewindCalls()); 1431 assertEquals(0, dataProvider.getNumRewindCalls());
1432 1432
1433 callback.mError.printStackTrace(); 1433 callback.mError.printStackTrace();
1434 assertEquals("Exception posting task to executor", callback.mError.getMe ssage()); 1434 assertContains("Exception posting task to executor", callback.mError.get Message());
1435 assertEquals("Inline execution is prohibited for this request", 1435 assertContains("Inline execution is prohibited for this request",
1436 callback.mError.getCause().getMessage()); 1436 callback.mError.getCause().getMessage());
1437 assertEquals(null, callback.mResponseInfo); 1437 assertEquals(null, callback.mResponseInfo);
1438 dataProvider.assertClosed(); 1438 dataProvider.assertClosed();
1439 } 1439 }
1440 1440
1441 @SmallTest 1441 @SmallTest
1442 @Feature({"Cronet"}) 1442 @Feature({"Cronet"})
1443 public void testDirectExecutorAllowed() throws Exception { 1443 public void testDirectExecutorAllowed() throws Exception {
1444 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1444 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1445 callback.setAllowDirectExecutor(true); 1445 callback.setAllowDirectExecutor(true);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
1482 dataProvider.addRead("test".getBytes()); 1482 dataProvider.addRead("test".getBytes());
1483 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); 1483 builder.setUploadDataProvider(dataProvider, callback.getExecutor());
1484 builder.addHeader("Content-Type", "useless/string"); 1484 builder.addHeader("Content-Type", "useless/string");
1485 builder.build().start(); 1485 builder.build().start();
1486 callback.blockForDone(); 1486 callback.blockForDone();
1487 dataProvider.assertClosed(); 1487 dataProvider.assertClosed();
1488 1488
1489 assertEquals(1, dataProvider.getNumReadCalls()); 1489 assertEquals(1, dataProvider.getNumReadCalls());
1490 assertEquals(0, dataProvider.getNumRewindCalls()); 1490 assertEquals(0, dataProvider.getNumRewindCalls());
1491 1491
1492 assertEquals("Exception received from UploadDataProvider", callback.mErr or.getMessage()); 1492 assertContains("Exception received from UploadDataProvider", callback.mE rror.getMessage());
1493 assertEquals("Thrown read failure", callback.mError.getCause().getMessag e()); 1493 assertContains("Thrown read failure", callback.mError.getCause().getMess age());
1494 assertEquals(null, callback.mResponseInfo); 1494 assertEquals(null, callback.mResponseInfo);
1495 } 1495 }
1496 1496
1497 @SmallTest 1497 @SmallTest
1498 @Feature({"Cronet"}) 1498 @Feature({"Cronet"})
1499 public void testUploadRewindFailSync() throws Exception { 1499 public void testUploadRewindFailSync() throws Exception {
1500 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1500 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1501 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder( 1501 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
1502 NativeTestServer.getRedirectToEchoBody(), callback, callback.get Executor()); 1502 NativeTestServer.getRedirectToEchoBody(), callback, callback.get Executor());
1503 1503
1504 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1504 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1505 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor()); 1505 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor());
1506 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.CALLBACK_S YNC); 1506 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.CALLBACK_S YNC);
1507 dataProvider.addRead("test".getBytes()); 1507 dataProvider.addRead("test".getBytes());
1508 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); 1508 builder.setUploadDataProvider(dataProvider, callback.getExecutor());
1509 builder.addHeader("Content-Type", "useless/string"); 1509 builder.addHeader("Content-Type", "useless/string");
1510 builder.build().start(); 1510 builder.build().start();
1511 callback.blockForDone(); 1511 callback.blockForDone();
1512 dataProvider.assertClosed(); 1512 dataProvider.assertClosed();
1513 1513
1514 assertEquals(1, dataProvider.getNumReadCalls()); 1514 assertEquals(1, dataProvider.getNumReadCalls());
1515 assertEquals(1, dataProvider.getNumRewindCalls()); 1515 assertEquals(1, dataProvider.getNumRewindCalls());
1516 1516
1517 assertEquals("Exception received from UploadDataProvider", callback.mErr or.getMessage()); 1517 assertContains("Exception received from UploadDataProvider", callback.mE rror.getMessage());
1518 assertEquals("Sync rewind failure", callback.mError.getCause().getMessag e()); 1518 assertContains("Sync rewind failure", callback.mError.getCause().getMess age());
1519 assertEquals(null, callback.mResponseInfo); 1519 assertEquals(null, callback.mResponseInfo);
1520 } 1520 }
1521 1521
1522 @SmallTest 1522 @SmallTest
1523 @Feature({"Cronet"}) 1523 @Feature({"Cronet"})
1524 public void testUploadRewindFailAsync() throws Exception { 1524 public void testUploadRewindFailAsync() throws Exception {
1525 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1525 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1526 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder( 1526 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
1527 NativeTestServer.getRedirectToEchoBody(), callback, callback.get Executor()); 1527 NativeTestServer.getRedirectToEchoBody(), callback, callback.get Executor());
1528 1528
1529 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1529 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1530 TestUploadDataProvider.SuccessCallbackMode.ASYNC, callback.getEx ecutor()); 1530 TestUploadDataProvider.SuccessCallbackMode.ASYNC, callback.getEx ecutor());
1531 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.CALLBACK_A SYNC); 1531 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.CALLBACK_A SYNC);
1532 dataProvider.addRead("test".getBytes()); 1532 dataProvider.addRead("test".getBytes());
1533 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); 1533 builder.setUploadDataProvider(dataProvider, callback.getExecutor());
1534 builder.addHeader("Content-Type", "useless/string"); 1534 builder.addHeader("Content-Type", "useless/string");
1535 builder.build().start(); 1535 builder.build().start();
1536 callback.blockForDone(); 1536 callback.blockForDone();
1537 dataProvider.assertClosed(); 1537 dataProvider.assertClosed();
1538 1538
1539 assertEquals(1, dataProvider.getNumReadCalls()); 1539 assertEquals(1, dataProvider.getNumReadCalls());
1540 assertEquals(1, dataProvider.getNumRewindCalls()); 1540 assertEquals(1, dataProvider.getNumRewindCalls());
1541 1541
1542 assertEquals("Exception received from UploadDataProvider", callback.mErr or.getMessage()); 1542 assertContains("Exception received from UploadDataProvider", callback.mE rror.getMessage());
1543 assertEquals("Async rewind failure", callback.mError.getCause().getMessa ge()); 1543 assertContains("Async rewind failure", callback.mError.getCause().getMes sage());
1544 assertEquals(null, callback.mResponseInfo); 1544 assertEquals(null, callback.mResponseInfo);
1545 } 1545 }
1546 1546
1547 @SmallTest 1547 @SmallTest
1548 @Feature({"Cronet"}) 1548 @Feature({"Cronet"})
1549 public void testUploadRewindFailThrown() throws Exception { 1549 public void testUploadRewindFailThrown() throws Exception {
1550 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1550 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1551 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder( 1551 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
1552 NativeTestServer.getRedirectToEchoBody(), callback, callback.get Executor()); 1552 NativeTestServer.getRedirectToEchoBody(), callback, callback.get Executor());
1553 1553
1554 TestUploadDataProvider dataProvider = new TestUploadDataProvider( 1554 TestUploadDataProvider dataProvider = new TestUploadDataProvider(
1555 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor()); 1555 TestUploadDataProvider.SuccessCallbackMode.SYNC, callback.getExe cutor());
1556 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.THROWN); 1556 dataProvider.setRewindFailure(TestUploadDataProvider.FailMode.THROWN);
1557 dataProvider.addRead("test".getBytes()); 1557 dataProvider.addRead("test".getBytes());
1558 builder.setUploadDataProvider(dataProvider, callback.getExecutor()); 1558 builder.setUploadDataProvider(dataProvider, callback.getExecutor());
1559 builder.addHeader("Content-Type", "useless/string"); 1559 builder.addHeader("Content-Type", "useless/string");
1560 builder.build().start(); 1560 builder.build().start();
1561 callback.blockForDone(); 1561 callback.blockForDone();
1562 dataProvider.assertClosed(); 1562 dataProvider.assertClosed();
1563 1563
1564 assertEquals(1, dataProvider.getNumReadCalls()); 1564 assertEquals(1, dataProvider.getNumReadCalls());
1565 assertEquals(1, dataProvider.getNumRewindCalls()); 1565 assertEquals(1, dataProvider.getNumRewindCalls());
1566 1566
1567 assertEquals("Exception received from UploadDataProvider", callback.mErr or.getMessage()); 1567 assertContains("Exception received from UploadDataProvider", callback.mE rror.getMessage());
1568 assertEquals("Thrown rewind failure", callback.mError.getCause().getMess age()); 1568 assertContains("Thrown rewind failure", callback.mError.getCause().getMe ssage());
1569 assertEquals(null, callback.mResponseInfo); 1569 assertEquals(null, callback.mResponseInfo);
1570 } 1570 }
1571 1571
1572 @SmallTest 1572 @SmallTest
1573 @Feature({"Cronet"}) 1573 @Feature({"Cronet"})
1574 public void testUploadChunked() throws Exception { 1574 public void testUploadChunked() throws Exception {
1575 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1575 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1576 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder( 1576 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
1577 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto r()); 1577 NativeTestServer.getEchoBodyURL(), callback, callback.getExecuto r());
1578 1578
(...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after
1639 builder.addHeader("Content-Type", "useless/string"); 1639 builder.addHeader("Content-Type", "useless/string");
1640 builder.build().start(); 1640 builder.build().start();
1641 callback.blockForDone(); 1641 callback.blockForDone();
1642 dataProvider.assertClosed(); 1642 dataProvider.assertClosed();
1643 1643
1644 assertNull(callback.mResponseInfo); 1644 assertNull(callback.mResponseInfo);
1645 if (testingJavaImpl()) { 1645 if (testingJavaImpl()) {
1646 Throwable cause = callback.mError.getCause(); 1646 Throwable cause = callback.mError.getCause();
1647 assertTrue("Exception was: " + cause, cause instanceof ConnectExcept ion); 1647 assertTrue("Exception was: " + cause, cause instanceof ConnectExcept ion);
1648 } else { 1648 } else {
1649 assertEquals("Exception in CronetUrlRequest: net::ERR_CONNECTION_REF USED", 1649 assertContains("Exception in CronetUrlRequest: net::ERR_CONNECTION_R EFUSED",
1650 callback.mError.getMessage()); 1650 callback.mError.getMessage());
1651 } 1651 }
1652 } 1652 }
1653 1653
1654 private void throwOrCancel(FailureType failureType, ResponseStep failureStep , 1654 private void throwOrCancel(FailureType failureType, ResponseStep failureStep ,
1655 boolean expectResponseInfo, boolean expectError) { 1655 boolean expectResponseInfo, boolean expectError) {
1656 if (Log.isLoggable("TESTING", Log.VERBOSE)) { 1656 if (Log.isLoggable("TESTING", Log.VERBOSE)) {
1657 Log.v("TESTING", "Testing " + failureType + " during " + failureStep ); 1657 Log.v("TESTING", "Testing " + failureType + " during " + failureStep );
1658 } 1658 }
1659 TestUrlRequestCallback callback = new TestUrlRequestCallback(); 1659 TestUrlRequestCallback callback = new TestUrlRequestCallback();
1660 callback.setFailure(failureType, failureStep); 1660 callback.setFailure(failureType, failureStep);
1661 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder( 1661 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequestB uilder(
1662 NativeTestServer.getRedirectURL(), callback, callback.getExecuto r()); 1662 NativeTestServer.getRedirectURL(), callback, callback.getExecuto r());
1663 UrlRequest urlRequest = builder.build(); 1663 UrlRequest urlRequest = builder.build();
1664 urlRequest.start(); 1664 urlRequest.start();
1665 callback.blockForDone(); 1665 callback.blockForDone();
1666 // Wait for all posted tasks to be executed to ensure there is no unhand led exception. 1666 // Wait for all posted tasks to be executed to ensure there is no unhand led exception.
1667 callback.shutdownExecutorAndWait(); 1667 callback.shutdownExecutorAndWait();
1668 assertEquals(1, callback.mRedirectCount); 1668 assertEquals(1, callback.mRedirectCount);
1669 if (failureType == FailureType.CANCEL_SYNC || failureType == FailureType .CANCEL_ASYNC) { 1669 if (failureType == FailureType.CANCEL_SYNC || failureType == FailureType .CANCEL_ASYNC) {
1670 assertEquals(ResponseStep.ON_CANCELED, callback.mResponseStep); 1670 assertResponseStepCanceled(callback);
1671 } else if (failureType == FailureType.THROW_SYNC) { 1671 } else if (failureType == FailureType.THROW_SYNC) {
1672 assertEquals(ResponseStep.ON_FAILED, callback.mResponseStep); 1672 assertEquals(ResponseStep.ON_FAILED, callback.mResponseStep);
1673 } 1673 }
1674 assertTrue(urlRequest.isDone()); 1674 assertTrue(urlRequest.isDone());
1675 assertEquals(expectResponseInfo, callback.mResponseInfo != null); 1675 assertEquals(expectResponseInfo, callback.mResponseInfo != null);
1676 assertEquals(expectError, callback.mError != null); 1676 assertEquals(expectError, callback.mError != null);
1677 assertEquals(expectError, callback.mOnErrorCalled); 1677 assertEquals(expectError, callback.mOnErrorCalled);
1678 assertEquals(failureType == FailureType.CANCEL_SYNC 1678 assertEquals(failureType == FailureType.CANCEL_SYNC
1679 || failureType == FailureType.CANCEL_ASYNC 1679 || failureType == FailureType.CANCEL_ASYNC
1680 || failureType == FailureType.CANCEL_ASYNC_WITHOUT_PAUSE , 1680 || failureType == FailureType.CANCEL_ASYNC_WITHOUT_PAUSE ,
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
1778 } 1778 }
1779 }; 1779 };
1780 callback.setFailure(type, ResponseStep.ON_CANCELED); 1780 callback.setFailure(type, ResponseStep.ON_CANCELED);
1781 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequ estBuilder( 1781 UrlRequest.Builder builder = mTestFramework.mCronetEngine.newUrlRequ estBuilder(
1782 NativeTestServer.getEchoBodyURL(), callback, callback.getExe cutor()); 1782 NativeTestServer.getEchoBodyURL(), callback, callback.getExe cutor());
1783 UrlRequest urlRequest = builder.build(); 1783 UrlRequest urlRequest = builder.build();
1784 urlRequest.start(); 1784 urlRequest.start();
1785 callback.blockForDone(); 1785 callback.blockForDone();
1786 // Wait for all posted tasks to be executed to ensure there is no un handled exception. 1786 // Wait for all posted tasks to be executed to ensure there is no un handled exception.
1787 callback.shutdownExecutorAndWait(); 1787 callback.shutdownExecutorAndWait();
1788 assertEquals(ResponseStep.ON_CANCELED, callback.mResponseStep); 1788 assertResponseStepCanceled(callback);
1789 assertTrue(urlRequest.isDone()); 1789 assertTrue(urlRequest.isDone());
1790 assertNotNull(callback.mResponseInfo); 1790 assertNotNull(callback.mResponseInfo);
1791 assertNull(callback.mError); 1791 assertNull(callback.mError);
1792 assertTrue(callback.mOnCanceledCalled); 1792 assertTrue(callback.mOnCanceledCalled);
1793 } 1793 }
1794 } 1794 }
1795 1795
1796 @SmallTest 1796 @SmallTest
1797 @Feature({"Cronet"}) 1797 @Feature({"Cronet"})
1798 @OnlyRunNativeCronet // No destroyed callback for tests 1798 @OnlyRunNativeCronet // No destroyed callback for tests
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
1869 // Shutdown the executor, so posting next task will throw an exception. 1869 // Shutdown the executor, so posting next task will throw an exception.
1870 uploadExecutor.shutdown(); 1870 uploadExecutor.shutdown();
1871 // Continue the upload. 1871 // Continue the upload.
1872 dataProvider.mByteBuffer.putInt(42); 1872 dataProvider.mByteBuffer.putInt(42);
1873 dataProvider.mUploadDataSink.onReadSucceeded(false); 1873 dataProvider.mUploadDataSink.onReadSucceeded(false);
1874 // Callback.onFailed will be called on request executor even though uplo ad 1874 // Callback.onFailed will be called on request executor even though uplo ad
1875 // executor is shutdown. 1875 // executor is shutdown.
1876 callback.blockForDone(); 1876 callback.blockForDone();
1877 assertTrue(callback.isDone()); 1877 assertTrue(callback.isDone());
1878 assertTrue(callback.mOnErrorCalled); 1878 assertTrue(callback.mOnErrorCalled);
1879 assertEquals("Exception received from UploadDataProvider", callback.mErr or.getMessage()); 1879 assertContains("Exception received from UploadDataProvider", callback.mE rror.getMessage());
1880 assertTrue(urlRequest.isDone()); 1880 assertTrue(urlRequest.isDone());
1881 } 1881 }
1882 1882
1883 /** 1883 /**
1884 * A TestUrlRequestCallback that shuts down executor upon receiving onSuccee ded callback. 1884 * A TestUrlRequestCallback that shuts down executor upon receiving onSuccee ded callback.
1885 */ 1885 */
1886 private static class QuitOnSuccessCallback extends TestUrlRequestCallback { 1886 private static class QuitOnSuccessCallback extends TestUrlRequestCallback {
1887 @Override 1887 @Override
1888 public void onSucceeded(UrlRequest request, UrlResponseInfo info) { 1888 public void onSucceeded(UrlRequest request, UrlResponseInfo info) {
1889 // Stop accepting new tasks. 1889 // Stop accepting new tasks.
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after
1987 } 1987 }
1988 1988
1989 private void checkSpecificErrorCode(int netError, int errorCode, String name , 1989 private void checkSpecificErrorCode(int netError, int errorCode, String name ,
1990 boolean immediatelyRetryable) throws Exception { 1990 boolean immediatelyRetryable) throws Exception {
1991 TestUrlRequestCallback callback = startAndWaitForComplete( 1991 TestUrlRequestCallback callback = startAndWaitForComplete(
1992 MockUrlRequestJobFactory.getMockUrlWithFailure(FailurePhase.STAR T, netError)); 1992 MockUrlRequestJobFactory.getMockUrlWithFailure(FailurePhase.STAR T, netError));
1993 assertNull(callback.mResponseInfo); 1993 assertNull(callback.mResponseInfo);
1994 assertNotNull(callback.mError); 1994 assertNotNull(callback.mError);
1995 assertEquals(netError, callback.mError.getCronetInternalErrorCode()); 1995 assertEquals(netError, callback.mError.getCronetInternalErrorCode());
1996 assertEquals(errorCode, callback.mError.getErrorCode()); 1996 assertEquals(errorCode, callback.mError.getErrorCode());
1997 assertEquals( 1997 assertContains(
1998 "Exception in CronetUrlRequest: net::ERR_" + name, callback.mErr or.getMessage()); 1998 "Exception in CronetUrlRequest: net::ERR_" + name, callback.mErr or.getMessage());
1999 assertEquals(0, callback.mRedirectCount); 1999 assertEquals(0, callback.mRedirectCount);
2000 assertTrue(callback.mOnErrorCalled); 2000 assertTrue(callback.mOnErrorCalled);
2001 assertEquals(ResponseStep.ON_FAILED, callback.mResponseStep); 2001 assertEquals(ResponseStep.ON_FAILED, callback.mResponseStep);
2002 } 2002 }
2003 2003
2004 // Returns the contents of byteBuffer, from its position() to its limit(), 2004 // Returns the contents of byteBuffer, from its position() to its limit(),
2005 // as a String. Does not modify byteBuffer's position(). 2005 // as a String. Does not modify byteBuffer's position().
2006 private String bufferContentsToString(ByteBuffer byteBuffer, int start, int end) { 2006 private String bufferContentsToString(ByteBuffer byteBuffer, int start, int end) {
2007 // Use a duplicate to avoid modifying byteBuffer. 2007 // Use a duplicate to avoid modifying byteBuffer.
2008 ByteBuffer duplicate = byteBuffer.duplicate(); 2008 ByteBuffer duplicate = byteBuffer.duplicate();
2009 duplicate.position(start); 2009 duplicate.position(start);
2010 duplicate.limit(end); 2010 duplicate.limit(end);
2011 byte[] contents = new byte[duplicate.remaining()]; 2011 byte[] contents = new byte[duplicate.remaining()];
2012 duplicate.get(contents); 2012 duplicate.get(contents);
2013 return new String(contents); 2013 return new String(contents);
2014 } 2014 }
2015
2016 private void assertResponseStepCanceled(TestUrlRequestCallback callback) {
2017 if (callback.mResponseStep == ResponseStep.ON_FAILED && callback.mError != null) {
2018 throw new Error(
2019 "Unexpected response state: " + ResponseStep.ON_FAILED, call back.mError);
2020 }
2021 assertEquals(ResponseStep.ON_CANCELED, callback.mResponseStep);
2022 }
2015 } 2023 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698