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

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 comment and get building Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.net; 5 package org.chromium.net;
6 6
7 import android.os.ConditionVariable; 7 import android.os.ConditionVariable;
8 import android.test.MoreAsserts; 8 import android.test.MoreAsserts;
9 import android.test.suitebuilder.annotation.SmallTest; 9 import android.test.suitebuilder.annotation.SmallTest;
10 import android.util.Log; 10 import android.util.Log;
(...skipping 504 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 @SmallTest 515 @SmallTest
516 @Feature({"Cronet"}) 516 @Feature({"Cronet"})
517 @OnlyRunNativeCronet // Java impl doesn't support MockUrlRequestJobFactory 517 @OnlyRunNativeCronet // Java impl doesn't support MockUrlRequestJobFactory
518 public void testMockStartAsyncError() throws Exception { 518 public void testMockStartAsyncError() throws Exception {
519 final int arbitraryNetError = -3; 519 final int arbitraryNetError = -3;
520 TestUrlRequestCallback callback = 520 TestUrlRequestCallback callback =
521 startAndWaitForComplete(MockUrlRequestJobFactory.getMockUrlWithF ailure( 521 startAndWaitForComplete(MockUrlRequestJobFactory.getMockUrlWithF ailure(
522 FailurePhase.START, arbitraryNetError)); 522 FailurePhase.START, arbitraryNetError));
523 assertNull(callback.mResponseInfo); 523 assertNull(callback.mResponseInfo);
524 assertNotNull(callback.mError); 524 assertNotNull(callback.mError);
525 assertEquals(arbitraryNetError, callback.mError.netError()); 525 assertEquals(arbitraryNetError, callback.mError.getCronetInternalErrorCo de());
526 assertEquals(0, callback.mRedirectCount); 526 assertEquals(0, callback.mRedirectCount);
527 assertTrue(callback.mOnErrorCalled); 527 assertTrue(callback.mOnErrorCalled);
528 assertEquals(callback.mResponseStep, ResponseStep.NOTHING); 528 assertEquals(callback.mResponseStep, ResponseStep.NOTHING);
529 } 529 }
530 530
531 @SmallTest 531 @SmallTest
532 @Feature({"Cronet"}) 532 @Feature({"Cronet"})
533 @OnlyRunNativeCronet // Java impl doesn't support MockUrlRequestJobFactory 533 @OnlyRunNativeCronet // Java impl doesn't support MockUrlRequestJobFactory
534 public void testMockReadDataSyncError() throws Exception { 534 public void testMockReadDataSyncError() throws Exception {
535 final int arbitraryNetError = -4; 535 final int arbitraryNetError = -4;
536 TestUrlRequestCallback callback = 536 TestUrlRequestCallback callback =
537 startAndWaitForComplete(MockUrlRequestJobFactory.getMockUrlWithF ailure( 537 startAndWaitForComplete(MockUrlRequestJobFactory.getMockUrlWithF ailure(
538 FailurePhase.READ_SYNC, arbitraryNetError)); 538 FailurePhase.READ_SYNC, arbitraryNetError));
539 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 539 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
540 assertEquals(0, callback.mResponseInfo.getReceivedBytesCount()); 540 assertEquals(0, callback.mResponseInfo.getReceivedBytesCount());
541 assertNotNull(callback.mError); 541 assertNotNull(callback.mError);
542 assertEquals(arbitraryNetError, callback.mError.netError()); 542 assertEquals(arbitraryNetError, callback.mError.getCronetInternalErrorCo de());
543 assertEquals(0, callback.mRedirectCount); 543 assertEquals(0, callback.mRedirectCount);
544 assertTrue(callback.mOnErrorCalled); 544 assertTrue(callback.mOnErrorCalled);
545 assertEquals(callback.mResponseStep, ResponseStep.ON_RESPONSE_STARTED); 545 assertEquals(callback.mResponseStep, ResponseStep.ON_RESPONSE_STARTED);
546 } 546 }
547 547
548 @SmallTest 548 @SmallTest
549 @Feature({"Cronet"}) 549 @Feature({"Cronet"})
550 @OnlyRunNativeCronet // Java impl doesn't support MockUrlRequestJobFactory 550 @OnlyRunNativeCronet // Java impl doesn't support MockUrlRequestJobFactory
551 public void testMockReadDataAsyncError() throws Exception { 551 public void testMockReadDataAsyncError() throws Exception {
552 final int arbitraryNetError = -5; 552 final int arbitraryNetError = -5;
553 TestUrlRequestCallback callback = 553 TestUrlRequestCallback callback =
554 startAndWaitForComplete(MockUrlRequestJobFactory.getMockUrlWithF ailure( 554 startAndWaitForComplete(MockUrlRequestJobFactory.getMockUrlWithF ailure(
555 FailurePhase.READ_ASYNC, arbitraryNetError)); 555 FailurePhase.READ_ASYNC, arbitraryNetError));
556 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 556 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
557 assertEquals(0, callback.mResponseInfo.getReceivedBytesCount()); 557 assertEquals(0, callback.mResponseInfo.getReceivedBytesCount());
558 assertNotNull(callback.mError); 558 assertNotNull(callback.mError);
559 assertEquals(arbitraryNetError, callback.mError.netError()); 559 assertEquals(arbitraryNetError, callback.mError.getCronetInternalErrorCo de());
560 assertEquals(0, callback.mRedirectCount); 560 assertEquals(0, callback.mRedirectCount);
561 assertTrue(callback.mOnErrorCalled); 561 assertTrue(callback.mOnErrorCalled);
562 assertEquals(callback.mResponseStep, ResponseStep.ON_RESPONSE_STARTED); 562 assertEquals(callback.mResponseStep, ResponseStep.ON_RESPONSE_STARTED);
563 } 563 }
564 564
565 /** 565 /**
566 * Tests that request continues when client certificate is requested. 566 * Tests that request continues when client certificate is requested.
567 */ 567 */
568 @SmallTest 568 @SmallTest
569 @Feature({"Cronet"}) 569 @Feature({"Cronet"})
(...skipping 14 matching lines...) Expand all
584 */ 584 */
585 @SmallTest 585 @SmallTest
586 @Feature({"Cronet"}) 586 @Feature({"Cronet"})
587 @OnlyRunNativeCronet // Java impl doesn't support MockUrlRequestJobFactory 587 @OnlyRunNativeCronet // Java impl doesn't support MockUrlRequestJobFactory
588 public void testMockSSLCertificateError() throws Exception { 588 public void testMockSSLCertificateError() throws Exception {
589 TestUrlRequestCallback callback = startAndWaitForComplete( 589 TestUrlRequestCallback callback = startAndWaitForComplete(
590 MockUrlRequestJobFactory.getMockUrlForSSLCertificateError()); 590 MockUrlRequestJobFactory.getMockUrlForSSLCertificateError());
591 assertNull(callback.mResponseInfo); 591 assertNull(callback.mResponseInfo);
592 assertNotNull(callback.mError); 592 assertNotNull(callback.mError);
593 assertTrue(callback.mOnErrorCalled); 593 assertTrue(callback.mOnErrorCalled);
594 assertEquals(-201, callback.mError.netError()); 594 assertEquals(-201, callback.mError.getCronetInternalErrorCode());
595 assertEquals("Exception in CronetUrlRequest: net::ERR_CERT_DATE_INVALID" , 595 assertEquals("Exception in CronetUrlRequest: net::ERR_CERT_DATE_INVALID" ,
596 callback.mError.getMessage()); 596 callback.mError.getMessage());
597 assertEquals(callback.mResponseStep, ResponseStep.NOTHING); 597 assertEquals(callback.mResponseStep, ResponseStep.NOTHING);
598 } 598 }
599 599
600 /** 600 /**
601 * Checks that the buffer is updated correctly, when starting at an offset, 601 * Checks that the buffer is updated correctly, when starting at an offset,
602 * when using legacy read() API. 602 * when using legacy read() API.
603 */ 603 */
604 @SmallTest 604 @SmallTest
(...skipping 996 matching lines...) Expand 10 before | Expand all | Expand 10 after
1601 } 1601 }
1602 }); 1602 });
1603 1603
1604 request.start(); 1604 request.start();
1605 uploadDataStreamAdapterDestroyed.block(); 1605 uploadDataStreamAdapterDestroyed.block();
1606 1606
1607 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 1607 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
1608 assertEquals("", callback.mResponseAsString); 1608 assertEquals("", callback.mResponseAsString);
1609 } 1609 }
1610 1610
1611 /*
1612 * Verifies error codes are passed through correctly.
1613 */
1611 @SmallTest 1614 @SmallTest
1615 @Feature({"Cronet"})
1616 public void testErrorCodes() throws Exception {
1617 checkSpecificErrorCode(
1618 -105, UrlRequestException.ERROR_HOSTNAME_NOT_RESOLVED, "NAME_NOT _RESOLVED", false);
1619 checkSpecificErrorCode(-106, UrlRequestException.ERROR_INTERNET_DISCONNE CTED,
1620 "INTERNET_DISCONNECTED", false);
1621 checkSpecificErrorCode(
1622 -21, UrlRequestException.ERROR_NETWORK_CHANGED, "NETWORK_CHANGED ", true);
1623 checkSpecificErrorCode(
1624 -100, UrlRequestException.ERROR_CONNECTION_CLOSED, "CONNECTION_C LOSED", true);
1625 checkSpecificErrorCode(
1626 -102, UrlRequestException.ERROR_CONNECTION_REFUSED, "CONNECTION_ REFUSED", false);
1627 checkSpecificErrorCode(
1628 -101, UrlRequestException.ERROR_CONNECTION_RESET, "CONNECTION_RE SET", true);
1629 checkSpecificErrorCode(
1630 -118, UrlRequestException.ERROR_CONNECTION_TIMED_OUT, "CONNECTIO N_TIMED_OUT", true);
1631 checkSpecificErrorCode(-7, UrlRequestException.ERROR_TIMED_OUT, "TIMED_O UT", true);
1632 checkSpecificErrorCode(
1633 -109, UrlRequestException.ERROR_ADDRESS_UNREACHABLE, "ADDRESS_UN REACHABLE", false);
1634 checkSpecificErrorCode(-2, UrlRequestException.ERROR_OTHER, "FAILED", fa lse);
1635 }
1636
1637 private void checkSpecificErrorCode(int netError, int errorCode, String name ,
1638 boolean immediatelyRetryable) throws Exception {
1639 TestUrlRequestCallback callback = startAndWaitForComplete(
1640 MockUrlRequestJobFactory.getMockUrlWithFailure(FailurePhase.STAR T, netError));
1641 assertNull(callback.mResponseInfo);
1642 assertNotNull(callback.mError);
1643 assertEquals(netError, callback.mError.getCronetInternalErrorCode());
1644 assertEquals(errorCode, callback.mError.getErrorCode());
1645 assertEquals(
1646 "Exception in CronetUrlRequest: net::ERR_" + name, callback.mErr or.getMessage());
1647 assertEquals(0, callback.mRedirectCount);
1648 assertTrue(callback.mOnErrorCalled);
1649 assertEquals(callback.mResponseStep, ResponseStep.NOTHING);
1650 }
1651
1612 // Returns the contents of byteBuffer, from its position() to its limit(), 1652 // Returns the contents of byteBuffer, from its position() to its limit(),
1613 // as a String. Does not modify byteBuffer's position(). 1653 // as a String. Does not modify byteBuffer's position().
1614 private String bufferContentsToString(ByteBuffer byteBuffer, int start, int end) { 1654 private String bufferContentsToString(ByteBuffer byteBuffer, int start, int end) {
1615 // Use a duplicate to avoid modifying byteBuffer. 1655 // Use a duplicate to avoid modifying byteBuffer.
1616 ByteBuffer duplicate = byteBuffer.duplicate(); 1656 ByteBuffer duplicate = byteBuffer.duplicate();
1617 duplicate.position(start); 1657 duplicate.position(start);
1618 duplicate.limit(end); 1658 duplicate.limit(end);
1619 byte[] contents = new byte[duplicate.remaining()]; 1659 byte[] contents = new byte[duplicate.remaining()];
1620 duplicate.get(contents); 1660 duplicate.get(contents);
1621 return new String(contents); 1661 return new String(contents);
1622 } 1662 }
1623 } 1663 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698