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

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: fix missing test annotation Created 4 years, 10 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 488 matching lines...) Expand 10 before | Expand all | Expand 10 after
499 @SmallTest 499 @SmallTest
500 @Feature({"Cronet"}) 500 @Feature({"Cronet"})
501 @OnlyRunNativeCronet // Java impl doesn't support MockUrlRequestJobFactory 501 @OnlyRunNativeCronet // Java impl doesn't support MockUrlRequestJobFactory
502 public void testMockStartAsyncError() throws Exception { 502 public void testMockStartAsyncError() throws Exception {
503 final int arbitraryNetError = -3; 503 final int arbitraryNetError = -3;
504 TestUrlRequestCallback callback = 504 TestUrlRequestCallback callback =
505 startAndWaitForComplete(MockUrlRequestJobFactory.getMockUrlWithF ailure( 505 startAndWaitForComplete(MockUrlRequestJobFactory.getMockUrlWithF ailure(
506 FailurePhase.START, arbitraryNetError)); 506 FailurePhase.START, arbitraryNetError));
507 assertNull(callback.mResponseInfo); 507 assertNull(callback.mResponseInfo);
508 assertNotNull(callback.mError); 508 assertNotNull(callback.mError);
509 assertEquals(arbitraryNetError, callback.mError.netError()); 509 assertEquals(arbitraryNetError, callback.mError.getCronetInternalErrorCo de());
510 assertEquals(0, callback.mRedirectCount); 510 assertEquals(0, callback.mRedirectCount);
511 assertTrue(callback.mOnErrorCalled); 511 assertTrue(callback.mOnErrorCalled);
512 assertEquals(callback.mResponseStep, ResponseStep.NOTHING); 512 assertEquals(callback.mResponseStep, ResponseStep.NOTHING);
513 } 513 }
514 514
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 testMockReadDataSyncError() throws Exception { 518 public void testMockReadDataSyncError() throws Exception {
519 final int arbitraryNetError = -4; 519 final int arbitraryNetError = -4;
520 TestUrlRequestCallback callback = 520 TestUrlRequestCallback callback =
521 startAndWaitForComplete(MockUrlRequestJobFactory.getMockUrlWithF ailure( 521 startAndWaitForComplete(MockUrlRequestJobFactory.getMockUrlWithF ailure(
522 FailurePhase.READ_SYNC, arbitraryNetError)); 522 FailurePhase.READ_SYNC, arbitraryNetError));
523 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 523 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
524 assertEquals(0, callback.mResponseInfo.getReceivedBytesCount()); 524 assertEquals(0, callback.mResponseInfo.getReceivedBytesCount());
525 assertNotNull(callback.mError); 525 assertNotNull(callback.mError);
526 assertEquals(arbitraryNetError, callback.mError.netError()); 526 assertEquals(arbitraryNetError, callback.mError.getCronetInternalErrorCo de());
527 assertEquals(0, callback.mRedirectCount); 527 assertEquals(0, callback.mRedirectCount);
528 assertTrue(callback.mOnErrorCalled); 528 assertTrue(callback.mOnErrorCalled);
529 assertEquals(callback.mResponseStep, ResponseStep.ON_RESPONSE_STARTED); 529 assertEquals(callback.mResponseStep, ResponseStep.ON_RESPONSE_STARTED);
530 } 530 }
531 531
532 @SmallTest 532 @SmallTest
533 @Feature({"Cronet"}) 533 @Feature({"Cronet"})
534 @OnlyRunNativeCronet // Java impl doesn't support MockUrlRequestJobFactory 534 @OnlyRunNativeCronet // Java impl doesn't support MockUrlRequestJobFactory
535 public void testMockReadDataAsyncError() throws Exception { 535 public void testMockReadDataAsyncError() throws Exception {
536 final int arbitraryNetError = -5; 536 final int arbitraryNetError = -5;
537 TestUrlRequestCallback callback = 537 TestUrlRequestCallback callback =
538 startAndWaitForComplete(MockUrlRequestJobFactory.getMockUrlWithF ailure( 538 startAndWaitForComplete(MockUrlRequestJobFactory.getMockUrlWithF ailure(
539 FailurePhase.READ_ASYNC, arbitraryNetError)); 539 FailurePhase.READ_ASYNC, arbitraryNetError));
540 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 540 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
541 assertEquals(0, callback.mResponseInfo.getReceivedBytesCount()); 541 assertEquals(0, callback.mResponseInfo.getReceivedBytesCount());
542 assertNotNull(callback.mError); 542 assertNotNull(callback.mError);
543 assertEquals(arbitraryNetError, callback.mError.netError()); 543 assertEquals(arbitraryNetError, callback.mError.getCronetInternalErrorCo de());
544 assertEquals(0, callback.mRedirectCount); 544 assertEquals(0, callback.mRedirectCount);
545 assertTrue(callback.mOnErrorCalled); 545 assertTrue(callback.mOnErrorCalled);
546 assertEquals(callback.mResponseStep, ResponseStep.ON_RESPONSE_STARTED); 546 assertEquals(callback.mResponseStep, ResponseStep.ON_RESPONSE_STARTED);
547 } 547 }
548 548
549 /** 549 /**
550 * Tests that request continues when client certificate is requested. 550 * Tests that request continues when client certificate is requested.
551 */ 551 */
552 @SmallTest 552 @SmallTest
553 @Feature({"Cronet"}) 553 @Feature({"Cronet"})
(...skipping 14 matching lines...) Expand all
568 */ 568 */
569 @SmallTest 569 @SmallTest
570 @Feature({"Cronet"}) 570 @Feature({"Cronet"})
571 @OnlyRunNativeCronet // Java impl doesn't support MockUrlRequestJobFactory 571 @OnlyRunNativeCronet // Java impl doesn't support MockUrlRequestJobFactory
572 public void testMockSSLCertificateError() throws Exception { 572 public void testMockSSLCertificateError() throws Exception {
573 TestUrlRequestCallback callback = startAndWaitForComplete( 573 TestUrlRequestCallback callback = startAndWaitForComplete(
574 MockUrlRequestJobFactory.getMockUrlForSSLCertificateError()); 574 MockUrlRequestJobFactory.getMockUrlForSSLCertificateError());
575 assertNull(callback.mResponseInfo); 575 assertNull(callback.mResponseInfo);
576 assertNotNull(callback.mError); 576 assertNotNull(callback.mError);
577 assertTrue(callback.mOnErrorCalled); 577 assertTrue(callback.mOnErrorCalled);
578 assertEquals(-201, callback.mError.netError()); 578 assertEquals(-201, callback.mError.getCronetInternalErrorCode());
579 assertEquals("Exception in CronetUrlRequest: net::ERR_CERT_DATE_INVALID" , 579 assertEquals("Exception in CronetUrlRequest: net::ERR_CERT_DATE_INVALID" ,
580 callback.mError.getMessage()); 580 callback.mError.getMessage());
581 assertEquals(callback.mResponseStep, ResponseStep.NOTHING); 581 assertEquals(callback.mResponseStep, ResponseStep.NOTHING);
582 } 582 }
583 583
584 /** 584 /**
585 * Checks that the buffer is updated correctly, when starting at an offset, 585 * Checks that the buffer is updated correctly, when starting at an offset,
586 * when using legacy read() API. 586 * when using legacy read() API.
587 */ 587 */
588 @SmallTest 588 @SmallTest
(...skipping 996 matching lines...) Expand 10 before | Expand all | Expand 10 after
1585 } 1585 }
1586 }); 1586 });
1587 1587
1588 request.start(); 1588 request.start();
1589 uploadDataStreamAdapterDestroyed.block(); 1589 uploadDataStreamAdapterDestroyed.block();
1590 1590
1591 assertEquals(200, callback.mResponseInfo.getHttpStatusCode()); 1591 assertEquals(200, callback.mResponseInfo.getHttpStatusCode());
1592 assertEquals("", callback.mResponseAsString); 1592 assertEquals("", callback.mResponseAsString);
1593 } 1593 }
1594 1594
1595 /*
1596 * Verifies error codes are passed through correctly.
1597 */
1595 @SmallTest 1598 @SmallTest
1599 @Feature({"Cronet"})
1600 @OnlyRunNativeCronet // Java impl doesn't support MockUrlRequestJobFactory
1601 public void testErrorCodes() throws Exception {
1602 checkSpecificErrorCode(
1603 -105, UrlRequestException.ERROR_HOSTNAME_NOT_RESOLVED, "NAME_NOT _RESOLVED", false);
1604 checkSpecificErrorCode(-106, UrlRequestException.ERROR_INTERNET_DISCONNE CTED,
1605 "INTERNET_DISCONNECTED", false);
1606 checkSpecificErrorCode(
1607 -21, UrlRequestException.ERROR_NETWORK_CHANGED, "NETWORK_CHANGED ", true);
1608 checkSpecificErrorCode(
1609 -100, UrlRequestException.ERROR_CONNECTION_CLOSED, "CONNECTION_C LOSED", true);
1610 checkSpecificErrorCode(
1611 -102, UrlRequestException.ERROR_CONNECTION_REFUSED, "CONNECTION_ REFUSED", false);
1612 checkSpecificErrorCode(
1613 -101, UrlRequestException.ERROR_CONNECTION_RESET, "CONNECTION_RE SET", true);
1614 checkSpecificErrorCode(
1615 -118, UrlRequestException.ERROR_CONNECTION_TIMED_OUT, "CONNECTIO N_TIMED_OUT", true);
1616 checkSpecificErrorCode(-7, UrlRequestException.ERROR_TIMED_OUT, "TIMED_O UT", true);
1617 checkSpecificErrorCode(
1618 -109, UrlRequestException.ERROR_ADDRESS_UNREACHABLE, "ADDRESS_UN REACHABLE", false);
1619 checkSpecificErrorCode(-2, UrlRequestException.ERROR_OTHER, "FAILED", fa lse);
1620 }
1621
1622 private void checkSpecificErrorCode(int netError, int errorCode, String name ,
1623 boolean immediatelyRetryable) throws Exception {
1624 TestUrlRequestCallback callback = startAndWaitForComplete(
1625 MockUrlRequestJobFactory.getMockUrlWithFailure(FailurePhase.STAR T, netError));
1626 assertNull(callback.mResponseInfo);
1627 assertNotNull(callback.mError);
1628 assertEquals(netError, callback.mError.getCronetInternalErrorCode());
1629 assertEquals(errorCode, callback.mError.getErrorCode());
1630 assertEquals(
1631 "Exception in CronetUrlRequest: net::ERR_" + name, callback.mErr or.getMessage());
1632 assertEquals(0, callback.mRedirectCount);
1633 assertTrue(callback.mOnErrorCalled);
1634 assertEquals(callback.mResponseStep, ResponseStep.NOTHING);
1635 }
1636
1596 // Returns the contents of byteBuffer, from its position() to its limit(), 1637 // Returns the contents of byteBuffer, from its position() to its limit(),
1597 // as a String. Does not modify byteBuffer's position(). 1638 // as a String. Does not modify byteBuffer's position().
1598 private String bufferContentsToString(ByteBuffer byteBuffer, int start, int end) { 1639 private String bufferContentsToString(ByteBuffer byteBuffer, int start, int end) {
1599 // Use a duplicate to avoid modifying byteBuffer. 1640 // Use a duplicate to avoid modifying byteBuffer.
1600 ByteBuffer duplicate = byteBuffer.duplicate(); 1641 ByteBuffer duplicate = byteBuffer.duplicate();
1601 duplicate.position(start); 1642 duplicate.position(start);
1602 duplicate.limit(end); 1643 duplicate.limit(end);
1603 byte[] contents = new byte[duplicate.remaining()]; 1644 byte[] contents = new byte[duplicate.remaining()];
1604 duplicate.get(contents); 1645 duplicate.get(contents);
1605 return new String(contents); 1646 return new String(contents);
1606 } 1647 }
1607 } 1648 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698