/**
* Test shows the usage of two
* {@link com.rzagorski.retrofitrx2errorhandler.backoff.BackoffStrategy backoff strategies}.
* Shows that the delay is greater than 3 exponential backoff strategy invocation, that reacts
* to 500 server error and 3 simple strategies, that reacts to {@link java.net.SocketTimeoutException}
* <br>
* Shows that every backoff strategy is invoked as many times as in
* {@link com.rzagorski.retrofitrx2errorhandler.backoff.strategies.Exponential.Builder#setMaxRetries(int)}
* or in {@link com.rzagorski.retrofitrx2errorhandler.backoff.strategies.Simple.Builder#setMaxRetries(int)}
* independently.
* <br>
* Test created by Robert Zagorski on 19.10.2016
*/
@Test
public void testBackoffError2() throws Exception {
mockWebServer.setDispatcher(new Dispatcher() {
@Override
public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
if (mockWebServer.getRequestCount() % 2 == 0) {
return new MockResponse().setResponseCode(500);
} else {
return new MockResponse().setSocketPolicy(SocketPolicy.NO_RESPONSE);
}
}
});
RxCallAdapter rxCallAdapter = new RxCallAdapter.Builder()
.addBackoffStrategy(Exponential.init()
.addHttpCode(500)
.setBase(2)
.setMaxRetries(3).build())
.addBackoffStrategy(Simple.init()
.addThrowable(SocketTimeoutException.class)
.setMaxRetries(3).build())
.build();
GitHub github = createRetrofitInstance(mockWebServer.url("/").toString(),
new RxErrorHandingFactory(rxCallAdapter));
long startTime = System.currentTimeMillis();
Observable observable = github.repos("square");
TestObserver testObserver = observable.test();
testObserver.awaitTerminalEvent();
long endTime = System.currentTimeMillis();
System.out.println((endTime - startTime));
//four SocketTimeoutExceptions and 3 exponential backoff's
assertTrue((endTime - startTime) >= (1 + 2 + 4 + 8) * MockWebServerUtils.ONE_SEC + 4 * 10 * MockWebServerUtils.ONE_SEC);
}
CommonBackoffTest.java 文件源码
java
阅读 20
收藏 0
点赞 0
评论 0
项目:RetrofitRxErrorHandler
作者:
评论列表
文章目录