/**
* This test puts a request in front of one that is to be canceled, so that it is canceled before
* I/O takes place.
*/
@Test public void canceledBeforeIOSignalsOnFailure() throws Exception {
// Force requests to be executed serially.
okhttp3.Dispatcher dispatcher = new okhttp3.Dispatcher(client.dispatcher().executorService());
dispatcher.setMaxRequests(1);
client = client.newBuilder()
.dispatcher(dispatcher)
.build();
Request requestA = new Request.Builder().url(server.url("/a")).build();
Request requestB = new Request.Builder().url(server.url("/b")).build();
final Call callA = client.newCall(requestA);
final Call callB = client.newCall(requestB);
server.setDispatcher(new Dispatcher() {
char nextResponse = 'A';
@Override public MockResponse dispatch(RecordedRequest request) {
callB.cancel();
return new MockResponse().setBody(Character.toString(nextResponse++));
}
});
callA.enqueue(callback);
callB.enqueue(callback);
assertEquals("/a", server.takeRequest().getPath());
callback.await(requestA.url()).assertBody("A");
// At this point we know the callback is ready, and that it will receive a cancel failure.
callback.await(requestB.url()).assertFailure("Canceled", "Socket closed");
}
java类okhttp3.mockwebserver.Dispatcher的实例源码
CallTest.java 文件源码
项目:GitHub
阅读 27
收藏 0
点赞 0
评论 0
CallTest.java 文件源码
项目:GitHub
阅读 30
收藏 0
点赞 0
评论 0
/**
* This test puts a request in front of one that is to be canceled, so that it is canceled before
* I/O takes place.
*/
@Test public void canceledBeforeIOSignalsOnFailure() throws Exception {
// Force requests to be executed serially.
okhttp3.Dispatcher dispatcher = new okhttp3.Dispatcher(client.dispatcher().executorService());
dispatcher.setMaxRequests(1);
client = client.newBuilder()
.dispatcher(dispatcher)
.build();
Request requestA = new Request.Builder().url(server.url("/a")).build();
Request requestB = new Request.Builder().url(server.url("/b")).build();
final Call callA = client.newCall(requestA);
final Call callB = client.newCall(requestB);
server.setDispatcher(new Dispatcher() {
char nextResponse = 'A';
@Override public MockResponse dispatch(RecordedRequest request) {
callB.cancel();
return new MockResponse().setBody(Character.toString(nextResponse++));
}
});
callA.enqueue(callback);
callB.enqueue(callback);
assertEquals("/a", server.takeRequest().getPath());
callback.await(requestA.url()).assertBody("A");
// At this point we know the callback is ready, and that it will receive a cancel failure.
callback.await(requestB.url()).assertFailure("Canceled", "Socket closed");
}
CommonBackoffTest.java 文件源码
项目:RetrofitRxErrorHandler
阅读 19
收藏 0
点赞 0
评论 0
/**
* 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);
}
CommonBackoffTest.java 文件源码
项目:RetrofitRxErrorHandler
阅读 20
收藏 0
点赞 0
评论 0
/**
* 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 文件源码
项目:RetrofitRxErrorHandler
阅读 20
收藏 0
点赞 0
评论 0
/**
* Test shows the usage of one
* {@link com.rzagorski.retrofitrx2errorhandler.backoff.BackoffStrategy backoff strategy}.
* Shows that there is minimal delay, if the response from server is different than strategy
* reacts to.
* <br>
* Test created by Robert Zagorski on 19.10.2016
*/
@Test
public void testBackoffError3() throws Exception {
mockWebServer.setDispatcher(new Dispatcher() {
@Override
public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
return new MockResponse().setResponseCode(500);
}
});
RxCallAdapter rxCallAdapter = new RxCallAdapter.Builder()
.addBackoffStrategy(Exponential.init()
.addThrowable(SocketTimeoutException.class)
.setBase(2)
.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));
assertTrue((endTime - startTime) <= 1 * 1000L);
}
CommonBackoffTest.java 文件源码
项目:RetrofitRxErrorHandler
阅读 20
收藏 0
点赞 0
评论 0
/**
* Test shows the usage of two
* {@link com.rzagorski.retrofitrx2errorhandler.backoff.BackoffStrategy backoff strategies}.
* Shows that there is minimal delay, if the response from server is different than strategies
* react to.
* <br>
* Test created by Robert Zagorski on 19.10.2016
*/
@Test
public void testBackoffError4() throws Exception {
mockWebServer.setDispatcher(new Dispatcher() {
@Override
public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
return new MockResponse().setResponseCode(500);
}
});
RxCallAdapter rxCallAdapter = new RxCallAdapter.Builder()
.addBackoffStrategy(Exponential.init()
.addThrowable(SocketTimeoutException.class)
.setBase(2)
.setMaxRetries(3).build())
.addBackoffStrategy(Exponential.init()
.addHttpCode(404)
.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));
assertTrue((endTime - startTime) <= MockWebServerUtils.ONE_SEC);
}
CommonBackoffTest.java 文件源码
项目:RetrofitRxErrorHandler
阅读 18
收藏 0
点赞 0
评论 0
/**
* Test shows the usage of backup `Observable`. Checks if successful response is passed to
* `Subscriber` even if backup `Observable` is invoked.
* <br>
* Test created by Robert Zagorski on 19.10.2016
*/
@Test
public void testBackupObservable1() throws Exception {
mockWebServer.setDispatcher(new Dispatcher() {
@Override
public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
if (mockWebServer.getRequestCount() == 1) {
return new MockResponse().setResponseCode(404);
} else if (mockWebServer.getRequestCount() > 1) {
return MockWebServerUtils.getSuccessfulResponse();
}
return new MockResponse().setResponseCode(500);
}
});
Observable<Boolean> backupObservable = Observable.just(Boolean.TRUE);
RxCallAdapter rxCallAdapter = new RxCallAdapter.Builder()
.addBackoffStrategy(Exponential.init()
.addHttpCode(404)
.addObservable(backupObservable)
.setBase(2)
.setMaxRetries(3)
.build())
.setLoggingEnabled(true)
.build();
GitHub github = createRetrofitInstance(mockWebServer.url("/").toString(),
new RxErrorHandingFactory(rxCallAdapter));
Observable observable = github.repos("square");
TestObserver testObserver = observable.test();
testObserver.awaitTerminalEvent();
testObserver.assertComplete();
}
CommonBackoffTest.java 文件源码
项目:RetrofitRxErrorHandler
阅读 18
收藏 0
点赞 0
评论 0
/**
* Test shows the usage of backup `Observable`. Checks if it is invoked at least one time.
* <br>
* Test created by Robert Zagorski on 19.10.2016
*/
@Test
public void testBackupObservable2() throws Exception {
mockWebServer.setDispatcher(new Dispatcher() {
@Override
public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
if (mockWebServer.getRequestCount() <= 3) {
return new MockResponse().setResponseCode(404);
} else if (mockWebServer.getRequestCount() > 3) {
return MockWebServerUtils.getSuccessfulResponse();
}
return new MockResponse().setResponseCode(500);
}
});
Observable<Boolean> backupObservable = Observable.just(Boolean.TRUE);
TestObservable testBackupObservable = new TestObservable();
backupObservable = testBackupObservable.wrap(backupObservable);
RxCallAdapter rxCallAdapter = new RxCallAdapter.Builder()
.addBackoffStrategy(Exponential.init()
.addHttpCode(404)
.addObservable(backupObservable)
.setBase(2)
.setMaxRetries(3)
.build())
.setLoggingEnabled(true)
.build();
GitHub github = createRetrofitInstance(mockWebServer.url("/").toString(),
new RxErrorHandingFactory(rxCallAdapter));
Observable observable = github.repos("square");
TestObserver testObserver = observable.test();
testObserver.awaitTerminalEvent();
testObserver.awaitTerminalEvent();
testBackupObservable.assertStarted();
}
CommonBackoffTest.java 文件源码
项目:RetrofitRxErrorHandler
阅读 17
收藏 0
点赞 0
评论 0
/**
* Test shows the usage of backup `Observable`. Checks if it completes at least one time.
* <br>
* Test created by Robert Zagorski on 19.10.2016
*/
@Test
public void testBackupObservable4() throws Exception {
final int REQUEST_COUNT = 3;
mockWebServer.setDispatcher(new Dispatcher() {
@Override
public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
if (mockWebServer.getRequestCount() <= REQUEST_COUNT) {
return new MockResponse().setResponseCode(404);
} else if (mockWebServer.getRequestCount() > REQUEST_COUNT) {
return MockWebServerUtils.getSuccessfulResponse();
}
return new MockResponse().setResponseCode(500);
}
});
Observable<Boolean> backupObservable = Observable.just(Boolean.TRUE);
TestObservable testBackupObservable = new TestObservable();
backupObservable = testBackupObservable.wrap(backupObservable);
RxCallAdapter rxCallAdapter = new RxCallAdapter.Builder()
.addBackoffStrategy(Exponential.init()
.addHttpCode(404)
.addObservable(backupObservable)
.setBase(2)
.setMaxRetries(3)
.build())
.setLoggingEnabled(true)
.build();
GitHub github = createRetrofitInstance(mockWebServer.url("/").toString(),
new RxErrorHandingFactory(rxCallAdapter));
Observable observable = github.repos("square");
TestObserver testObserver = observable.test();
testObserver.awaitTerminalEvent();
testBackupObservable.assertCompleted();
}
CommonBackoffTest.java 文件源码
项目:RetrofitRxErrorHandler
阅读 19
收藏 0
点赞 0
评论 0
/**
* Test shows the usage of backup `Observable`. Checks if successful response is passed to
* `Subscriber` even if backup `Observable` is invoked and it does not emits any elements.
* <br>
* Test created by Robert Zagorski on 19.10.2016
*/
@Test
public void testBackupObservable5() throws Exception {
mockWebServer.setDispatcher(new Dispatcher() {
@Override
public MockResponse dispatch(RecordedRequest request) throws InterruptedException {
if (mockWebServer.getRequestCount() == 1) {
return new MockResponse().setResponseCode(404);
} else if (mockWebServer.getRequestCount() > 1) {
return MockWebServerUtils.getSuccessfulResponse();
}
return new MockResponse().setResponseCode(500);
}
});
Observable<Boolean> backupObservable = Observable.empty();
RxCallAdapter rxCallAdapter = new RxCallAdapter.Builder()
.addBackoffStrategy(Exponential.init()
.addHttpCode(404)
.addObservable(backupObservable)
.setBase(2)
.setMaxRetries(3)
.build())
.setLoggingEnabled(true)
.build();
GitHub github = createRetrofitInstance(mockWebServer.url("/").toString(),
new RxErrorHandingFactory(rxCallAdapter));
Observable observable = github.repos("square");
TestObserver testObserver = observable.test();
testObserver.awaitTerminalEvent();
testObserver.assertComplete();
}