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 java.lang.Math.min;
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.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyString;
@ -100,7 +101,6 @@ public final class CronetDataSourceTest {
@Mock private UrlRequest.Builder mockUrlRequestBuilder;
@Mock private UrlRequest mockUrlRequest;
@Mock private TransferListener mockTransferListener;
@Mock private NetworkException mockNetworkException;
@Mock private CronetEngine mockCronetEngine;
private ExecutorService executorService;
@ -242,7 +242,11 @@ public final class CronetDataSourceTest {
invocation -> {
// Invoke the callback for the previous request.
dataSourceUnderTest.urlRequestCallback.onFailed(
mockUrlRequest, testUrlResponseInfo, mockNetworkException);
mockUrlRequest,
testUrlResponseInfo,
createNetworkException(
/* errorCode= */ Integer.MAX_VALUE,
/* cause= */ new IllegalArgumentException()));
dataSourceUnderTest.urlRequestCallback.onResponseStarted(
mockUrlRequest2, testUrlResponseInfo);
return null;
@ -336,7 +340,8 @@ public final class CronetDataSourceTest {
@Test
public void requestOpenFail() {
mockResponseStartFailure();
mockResponseStartFailure(
/* errorCode= */ Integer.MAX_VALUE, /* cause= */ new IllegalArgumentException());
try {
dataSourceUnderTest.open(testDataSpec);
@ -372,9 +377,8 @@ public final class CronetDataSourceTest {
@Test
public void requestOpenFailDueToDnsFailure() {
mockResponseStartFailure();
when(mockNetworkException.getErrorCode())
.thenReturn(NetworkException.ERROR_HOSTNAME_NOT_RESOLVED);
mockResponseStartFailure(
/* errorCode= */ ERROR_HOSTNAME_NOT_RESOLVED, /* cause= */ new UnknownHostException());
try {
dataSourceUnderTest.open(testDataSpec);
@ -1544,13 +1548,13 @@ public final class CronetDataSourceTest {
.followRedirect();
}
private void mockResponseStartFailure() {
private void mockResponseStartFailure(int errorCode, Throwable cause) {
doAnswer(
invocation -> {
dataSourceUnderTest.urlRequestCallback.onFailed(
mockUrlRequest,
createUrlResponseInfo(500), // statusCode
mockNetworkException);
createNetworkException(errorCode, cause));
return null;
})
.when(mockUrlRequest)
@ -1585,7 +1589,9 @@ public final class CronetDataSourceTest {
dataSourceUnderTest.urlRequestCallback.onFailed(
mockUrlRequest,
createUrlResponseInfo(500), // statusCode
mockNetworkException);
createNetworkException(
/* errorCode= */ Integer.MAX_VALUE,
/* cause= */ new IllegalArgumentException()));
return null;
})
.when(mockUrlRequest)
@ -1663,4 +1669,23 @@ public final class CronetDataSourceTest {
SystemClock.setCurrentTimeMillis(nowMs);
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;
}
};
}
}