| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 } |
| OLD | NEW |