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

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

Powered by Google App Engine
This is Rietveld 408576698