Do not mock NetworkException

PiperOrigin-RevId: 372321626
This commit is contained in:
bachinger 2021-05-06 13:21:11 +01:00
parent 782c1739c8
commit a9fc3185fe

View File

@ -18,6 +18,7 @@ package com.google.android.exoplayer2.ext.cronet;
import static com.google.common.truth.Truth.assertThat; import static com.google.common.truth.Truth.assertThat;
import static java.lang.Math.min; import static java.lang.Math.min;
import static java.util.concurrent.TimeUnit.SECONDS; import static java.util.concurrent.TimeUnit.SECONDS;
import static org.chromium.net.NetworkException.ERROR_HOSTNAME_NOT_RESOLVED;
import static org.junit.Assert.fail; import static org.junit.Assert.fail;
import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.anyString;
@ -100,7 +101,6 @@ public final class CronetDataSourceTest {
@Mock private UrlRequest.Builder mockUrlRequestBuilder; @Mock private UrlRequest.Builder mockUrlRequestBuilder;
@Mock private UrlRequest mockUrlRequest; @Mock private UrlRequest mockUrlRequest;
@Mock private TransferListener mockTransferListener; @Mock private TransferListener mockTransferListener;
@Mock private NetworkException mockNetworkException;
@Mock private CronetEngine mockCronetEngine; @Mock private CronetEngine mockCronetEngine;
private ExecutorService executorService; private ExecutorService executorService;
@ -242,7 +242,11 @@ public final class CronetDataSourceTest {
invocation -> { invocation -> {
// Invoke the callback for the previous request. // Invoke the callback for the previous request.
dataSourceUnderTest.urlRequestCallback.onFailed( dataSourceUnderTest.urlRequestCallback.onFailed(
mockUrlRequest, testUrlResponseInfo, mockNetworkException); mockUrlRequest,
testUrlResponseInfo,
createNetworkException(
/* errorCode= */ Integer.MAX_VALUE,
/* cause= */ new IllegalArgumentException()));
dataSourceUnderTest.urlRequestCallback.onResponseStarted( dataSourceUnderTest.urlRequestCallback.onResponseStarted(
mockUrlRequest2, testUrlResponseInfo); mockUrlRequest2, testUrlResponseInfo);
return null; return null;
@ -336,7 +340,8 @@ public final class CronetDataSourceTest {
@Test @Test
public void requestOpenFail() { public void requestOpenFail() {
mockResponseStartFailure(); mockResponseStartFailure(
/* errorCode= */ Integer.MAX_VALUE, /* cause= */ new IllegalArgumentException());
try { try {
dataSourceUnderTest.open(testDataSpec); dataSourceUnderTest.open(testDataSpec);
@ -372,9 +377,8 @@ public final class CronetDataSourceTest {
@Test @Test
public void requestOpenFailDueToDnsFailure() { public void requestOpenFailDueToDnsFailure() {
mockResponseStartFailure(); mockResponseStartFailure(
when(mockNetworkException.getErrorCode()) /* errorCode= */ ERROR_HOSTNAME_NOT_RESOLVED, /* cause= */ new UnknownHostException());
.thenReturn(NetworkException.ERROR_HOSTNAME_NOT_RESOLVED);
try { try {
dataSourceUnderTest.open(testDataSpec); dataSourceUnderTest.open(testDataSpec);
@ -1544,13 +1548,13 @@ public final class CronetDataSourceTest {
.followRedirect(); .followRedirect();
} }
private void mockResponseStartFailure() { private void mockResponseStartFailure(int errorCode, Throwable cause) {
doAnswer( doAnswer(
invocation -> { invocation -> {
dataSourceUnderTest.urlRequestCallback.onFailed( dataSourceUnderTest.urlRequestCallback.onFailed(
mockUrlRequest, mockUrlRequest,
createUrlResponseInfo(500), // statusCode createUrlResponseInfo(500), // statusCode
mockNetworkException); createNetworkException(errorCode, cause));
return null; return null;
}) })
.when(mockUrlRequest) .when(mockUrlRequest)
@ -1585,7 +1589,9 @@ public final class CronetDataSourceTest {
dataSourceUnderTest.urlRequestCallback.onFailed( dataSourceUnderTest.urlRequestCallback.onFailed(
mockUrlRequest, mockUrlRequest,
createUrlResponseInfo(500), // statusCode createUrlResponseInfo(500), // statusCode
mockNetworkException); createNetworkException(
/* errorCode= */ Integer.MAX_VALUE,
/* cause= */ new IllegalArgumentException()));
return null; return null;
}) })
.when(mockUrlRequest) .when(mockUrlRequest)
@ -1663,4 +1669,23 @@ public final class CronetDataSourceTest {
SystemClock.setCurrentTimeMillis(nowMs); SystemClock.setCurrentTimeMillis(nowMs);
ShadowLooper.idleMainLooper(); ShadowLooper.idleMainLooper();
} }
private static NetworkException createNetworkException(int errorCode, Throwable cause) {
return new NetworkException("", cause) {
@Override
public int getErrorCode() {
return errorCode;
}
@Override
public int getCronetInternalErrorCode() {
return errorCode;
}
@Override
public boolean immediatelyRetryable() {
return false;
}
};
}
} }