CommonBackoffTest.java 文件源码

java
阅读 19 收藏 0 点赞 0 评论 0

项目:RetrofitRxErrorHandler 作者:
/**
 * 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 {@link retrofit2.HttpException} 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 testBackoffError1() 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()
                    .addThrowable(HttpException.class)
                    .setBase(2)
                    .setMaxRetries(3).build())
            .addBackoffStrategy(Simple.init()
                    .addThrowable(SocketTimeoutException.class)
                    .setMaxRetries(3).build())
            .setLoggingEnabled(true)
            .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);
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号