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

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

Issue 1393713005: [Cronet] Add error code and immediatelyRetryable() to UrlRequestException (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address Helen's comments Created 5 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.test.suitebuilder.annotation.SmallTest; 8 import android.test.suitebuilder.annotation.SmallTest;
9 9
10 import org.chromium.base.test.util.Feature; 10 import org.chromium.base.test.util.Feature;
(...skipping 497 matching lines...) Expand 10 before | Expand all | Expand 10 after
508 508
509 @SmallTest 509 @SmallTest
510 @Feature({"Cronet"}) 510 @Feature({"Cronet"})
511 public void testMockStartAsyncError() throws Exception { 511 public void testMockStartAsyncError() throws Exception {
512 final int arbitraryNetError = -3; 512 final int arbitraryNetError = -3;
513 TestUrlRequestCallback callback = 513 TestUrlRequestCallback callback =
514 startAndWaitForComplete(MockUrlRequestJobFactory.getMockUrlWithF ailure( 514 startAndWaitForComplete(MockUrlRequestJobFactory.getMockUrlWithF ailure(
515 FailurePhase.START, arbitraryNetError)); 515 FailurePhase.START, arbitraryNetError));
516 assertNull(callback.mResponseInfo); 516 assertNull(callback.mResponseInfo);
517 assertNotNull(callback.mError); 517 assertNotNull(callback.mError);
518 assertEquals(arbitraryNetError, callback.mError.netError()); 518 assertEquals(arbitraryNetError, callback.mError.getCronetInternalErrorCo de());
519 assertEquals(0, callback.mRedirectCount); 519 assertEquals(0, callback.mRedirectCount);
520 assertTrue(callback.mOnErrorCalled); 520 assertTrue(callback.mOnErrorCalled);
521 assertEquals(callback.mResponseStep, ResponseStep.NOTHING); 521 assertEquals(callback.mResponseStep, ResponseStep.NOTHING);
522 } 522 }
523 523
524 @SmallTest 524 @SmallTest
525 @Feature({"Cronet"}) 525 @Feature({"Cronet"})
526 public void testMockReadDataSyncError() throws Exception { 526 public void testMockReadDataSyncError() throws Exception {
527 final int arbitraryNetError = -4; 527 final int arbitraryNetError = -4;
528 TestUrlRequestCallback callback = 528 TestUrlRequestCallback callback =
529 startAndWaitForComplete(MockUrlRequestJobFactory.getMockUrlWithF ailure( 529 startAndWaitForComplete(MockUrlRequestJobFactory.getMockUrlWithF ailure(
530 FailurePhase.READ_SYNC, arbitraryNetError)); 530 FailurePhase.READ_SYNC, arbitraryNetError));
531 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 531 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
532 assertEquals(0, callback.mResponseInfo.getReceivedBytesCount()); 532 assertEquals(0, callback.mResponseInfo.getReceivedBytesCount());
533 assertNotNull(callback.mError); 533 assertNotNull(callback.mError);
534 assertEquals(arbitraryNetError, callback.mError.netError()); 534 assertEquals(arbitraryNetError, callback.mError.getCronetInternalErrorCo de());
535 assertEquals(0, callback.mRedirectCount); 535 assertEquals(0, callback.mRedirectCount);
536 assertTrue(callback.mOnErrorCalled); 536 assertTrue(callback.mOnErrorCalled);
537 assertEquals(callback.mResponseStep, ResponseStep.ON_RESPONSE_STARTED); 537 assertEquals(callback.mResponseStep, ResponseStep.ON_RESPONSE_STARTED);
538 } 538 }
539 539
540 @SmallTest 540 @SmallTest
541 @Feature({"Cronet"}) 541 @Feature({"Cronet"})
542 public void testMockReadDataAsyncError() throws Exception { 542 public void testMockReadDataAsyncError() throws Exception {
543 final int arbitraryNetError = -5; 543 final int arbitraryNetError = -5;
544 TestUrlRequestCallback callback = 544 TestUrlRequestCallback callback =
545 startAndWaitForComplete(MockUrlRequestJobFactory.getMockUrlWithF ailure( 545 startAndWaitForComplete(MockUrlRequestJobFactory.getMockUrlWithF ailure(
546 FailurePhase.READ_ASYNC, arbitraryNetError)); 546 FailurePhase.READ_ASYNC, arbitraryNetError));
547 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 547 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
548 assertEquals(0, callback.mResponseInfo.getReceivedBytesCount()); 548 assertEquals(0, callback.mResponseInfo.getReceivedBytesCount());
549 assertNotNull(callback.mError); 549 assertNotNull(callback.mError);
550 assertEquals(arbitraryNetError, callback.mError.netError()); 550 assertEquals(arbitraryNetError, callback.mError.getCronetInternalErrorCo de());
551 assertEquals(0, callback.mRedirectCount); 551 assertEquals(0, callback.mRedirectCount);
552 assertTrue(callback.mOnErrorCalled); 552 assertTrue(callback.mOnErrorCalled);
553 assertEquals(callback.mResponseStep, ResponseStep.ON_RESPONSE_STARTED); 553 assertEquals(callback.mResponseStep, ResponseStep.ON_RESPONSE_STARTED);
554 } 554 }
555 555
556 /** 556 /**
557 * Tests that an SSL cert error will be reported via {@link UrlRequest#onFai led}. 557 * Tests that an SSL cert error will be reported via {@link UrlRequest#onFai led}.
558 */ 558 */
559 @SmallTest 559 @SmallTest
560 @Feature({"Cronet"}) 560 @Feature({"Cronet"})
561 public void testMockSSLCertificateError() throws Exception { 561 public void testMockSSLCertificateError() throws Exception {
562 TestUrlRequestCallback callback = startAndWaitForComplete( 562 TestUrlRequestCallback callback = startAndWaitForComplete(
563 MockUrlRequestJobFactory.getMockUrlForSSLCertificateError()); 563 MockUrlRequestJobFactory.getMockUrlForSSLCertificateError());
564 assertNull(callback.mResponseInfo); 564 assertNull(callback.mResponseInfo);
565 assertNotNull(callback.mError); 565 assertNotNull(callback.mError);
566 assertTrue(callback.mOnErrorCalled); 566 assertTrue(callback.mOnErrorCalled);
567 assertEquals(-201, callback.mError.netError()); 567 assertEquals(-201, callback.mError.getCronetInternalErrorCode());
568 assertEquals("Exception in CronetUrlRequest: net::ERR_CERT_DATE_INVALID" , 568 assertEquals("Exception in CronetUrlRequest: net::ERR_CERT_DATE_INVALID" ,
569 callback.mError.getMessage()); 569 callback.mError.getMessage());
570 assertEquals(callback.mResponseStep, ResponseStep.NOTHING); 570 assertEquals(callback.mResponseStep, ResponseStep.NOTHING);
571 } 571 }
572 572
573 /** 573 /**
574 * Checks that the buffer is updated correctly, when starting at an offset, 574 * Checks that the buffer is updated correctly, when starting at an offset,
575 * when using legacy read() API. 575 * when using legacy read() API.
576 */ 576 */
577 @SmallTest 577 @SmallTest
(...skipping 968 matching lines...) Expand 10 before | Expand all | Expand 10 after
1546 dataProvider.mUploadDataSink.onReadSucceeded(false); 1546 dataProvider.mUploadDataSink.onReadSucceeded(false);
1547 // Callback.onFailed will be called on request executor even though uplo ad 1547 // Callback.onFailed will be called on request executor even though uplo ad
1548 // executor is shutdown. 1548 // executor is shutdown.
1549 callback.blockForDone(); 1549 callback.blockForDone();
1550 assertTrue(callback.isDone()); 1550 assertTrue(callback.isDone());
1551 assertTrue(callback.mOnErrorCalled); 1551 assertTrue(callback.mOnErrorCalled);
1552 assertEquals("Exception received from UploadDataProvider", callback.mErr or.getMessage()); 1552 assertEquals("Exception received from UploadDataProvider", callback.mErr or.getMessage());
1553 assertTrue(urlRequest.isDone()); 1553 assertTrue(urlRequest.isDone());
1554 } 1554 }
1555 1555
1556 /**
1557 * Verifies error codes are passed through correctly.
1558 */
1559 @SmallTest
1560 @Feature({"Cronet"})
1561 public void testErrorCodes() throws Exception {
1562 checkSpecificErrorCode(
1563 -105, UrlRequestException.ERROR_HOSTNAME_NOT_RESOLVED, "NAME_NOT _RESOLVED", false);
1564 checkSpecificErrorCode(-106, UrlRequestException.ERROR_INTERNET_DISCONNE CTED,
1565 "INTERNET_DISCONNECTED", false);
1566 checkSpecificErrorCode(
1567 -21, UrlRequestException.ERROR_NETWORK_CHANGED, "NETWORK_CHANGED ", true);
1568 checkSpecificErrorCode(
1569 -100, UrlRequestException.ERROR_CONNECTION_CLOSED, "CONNECTION_C LOSED", true);
1570 checkSpecificErrorCode(
1571 -102, UrlRequestException.ERROR_CONNECTION_REFUSED, "CONNECTION_ REFUSED", false);
1572 checkSpecificErrorCode(
1573 -101, UrlRequestException.ERROR_CONNECTION_RESET, "CONNECTION_RE SET", true);
1574 checkSpecificErrorCode(
1575 -118, UrlRequestException.ERROR_CONNECTION_TIMED_OUT, "CONNECTIO N_TIMED_OUT", true);
1576 checkSpecificErrorCode(-7, UrlRequestException.ERROR_TIMED_OUT, "TIMED_O UT", true);
1577 checkSpecificErrorCode(
1578 -109, UrlRequestException.ERROR_ADDRESS_UNREACHABLE, "ADDRESS_UN REACHABLE", false);
1579 checkSpecificErrorCode(-2, UrlRequestException.ERROR_OTHER, "FAILED", fa lse);
1580 }
1581
1582 private void checkSpecificErrorCode(int netError, int errorCode, String name ,
1583 boolean immediatelyRetryable) throws Exception {
1584 TestUrlRequestCallback callback = startAndWaitForComplete(
1585 MockUrlRequestJobFactory.getMockUrlWithFailure(FailurePhase.STAR T, netError));
1586 assertNull(callback.mResponseInfo);
1587 assertNotNull(callback.mError);
1588 assertEquals(netError, callback.mError.getCronetInternalErrorCode());
1589 assertEquals(errorCode, callback.mError.getErrorCode());
1590 assertEquals(
1591 "Exception in CronetUrlRequest: net::ERR_" + name, callback.mErr or.getMessage());
1592 assertEquals(0, callback.mRedirectCount);
1593 assertTrue(callback.mOnErrorCalled);
1594 assertEquals(callback.mResponseStep, ResponseStep.NOTHING);
1595 }
1596
1556 // Returns the contents of byteBuffer, from its position() to its limit(), 1597 // Returns the contents of byteBuffer, from its position() to its limit(),
1557 // as a String. Does not modify byteBuffer's position(). 1598 // as a String. Does not modify byteBuffer's position().
1558 private String bufferContentsToString(ByteBuffer byteBuffer, int start, 1599 private String bufferContentsToString(ByteBuffer byteBuffer, int start,
1559 int end) { 1600 int end) {
1560 // Use a duplicate to avoid modifying byteBuffer. 1601 // Use a duplicate to avoid modifying byteBuffer.
1561 ByteBuffer duplicate = byteBuffer.duplicate(); 1602 ByteBuffer duplicate = byteBuffer.duplicate();
1562 duplicate.position(start); 1603 duplicate.position(start);
1563 duplicate.limit(end); 1604 duplicate.limit(end);
1564 byte[] contents = new byte[duplicate.remaining()]; 1605 byte[] contents = new byte[duplicate.remaining()];
1565 duplicate.get(contents); 1606 duplicate.get(contents);
1566 return new String(contents); 1607 return new String(contents);
1567 } 1608 }
1568 } 1609 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698