/** * Returns an early guess of the next response, used for policy on how an incoming request should * be received. The default implementation returns an empty response. Mischievous implementations * can return other values to test HTTP edge cases, such as unhappy socket policies or throttled * request bodies. */ public MockResponse peek() { return new MockResponse().setSocketPolicy(SocketPolicy.KEEP_OPEN); }
protected Span checkReportsSpanOnTransportException() throws InterruptedException { server.enqueue(new MockResponse().setSocketPolicy(SocketPolicy.DISCONNECT_AT_START)); try { get(client, "/foo"); } catch (Exception e) { // ok, but the span should include an error! } return takeSpan(); }
@Override public MockResponse peek() { MockResponse maybeFailure = failureQueue.peek(); if (maybeFailure != null) return maybeFailure.clone(); return new MockResponse().setSocketPolicy(KEEP_OPEN); } };
@Test public void responseFailure() { server.enqueue(new MockResponse().setSocketPolicy(DISCONNECT_AFTER_REQUEST)); RecordingSingleObserver<Response<String>> observer = observerRule.create(); service.response().subscribe(observer); observer.assertError(IOException.class); }
@Test public void bodyFailure() { server.enqueue(new MockResponse().setSocketPolicy(DISCONNECT_AFTER_REQUEST)); RecordingObserver<String> observer = observerRule.create(); service.body().subscribe(observer); observer.assertError(IOException.class); }
@Test public void resultFailure() { server.enqueue(new MockResponse().setSocketPolicy(DISCONNECT_AFTER_REQUEST)); RecordingSingleObserver<Result<String>> observer = observerRule.create(); service.result().subscribe(observer); Result<String> result = observer.takeValue(); assertThat(result.isError()).isTrue(); assertThat(result.error()).isInstanceOf(IOException.class); }
@Test public void bodyFailure() throws Exception { server.enqueue(new MockResponse().setSocketPolicy(DISCONNECT_AFTER_REQUEST)); Resource<String> stringResource = LiveDataTestUtil.getLiveDataValue(service.body()); assertThat(stringResource.isSuccess()).isFalse(); assertThat(stringResource.getError()).isInstanceOf(IOException.class); }
@Test public void resultFailure() { server.enqueue(new MockResponse().setSocketPolicy(DISCONNECT_AFTER_REQUEST)); RecordingObserver<Result<String>> observer = observerRule.create(); service.result().subscribe(observer); Result<String> result = observer.takeValue(); assertThat(result.isError()).isTrue(); assertThat(result.error()).isInstanceOf(IOException.class); observer.assertComplete(); }
@Test public void failure() { server.enqueue(new MockResponse().setSocketPolicy(DISCONNECT_AFTER_REQUEST)); StepVerifier.create(service.flux()) .expectError(IOException.class) .verify(Duration.ofSeconds(1)); } }
@Test public void resultFailure() { server.enqueue(new MockResponse().setSocketPolicy(DISCONNECT_AFTER_REQUEST)); RecordingSubscriber<Result<String>> subscriber = subscriberRule.create(); service.result().subscribe(subscriber); Result<String> result = subscriber.takeValue(); assertThat(result.isError()).isTrue(); assertThat(result.error()).isInstanceOf(IOException.class); subscriber.assertComplete(); }
@Test public void bodyFailure() { server.enqueue(new MockResponse().setSocketPolicy(DISCONNECT_AFTER_REQUEST)); RecordingSubscriber<String> subscriber = subscriberRule.create(); service.body().subscribe(subscriber); subscriber.assertError(IOException.class); }
@Test public void resultFailure() { server.enqueue(new MockResponse().setSocketPolicy(DISCONNECT_AFTER_REQUEST)); RecordingSubscriber<Result<String>> subscriber = subscriberRule.create(); service.result().subscribe(subscriber); assertThat(subscriber.takeValue().error()).isInstanceOf(IOException.class); subscriber.assertComplete(); } }
@Test public void responseFailure() { server.enqueue(new MockResponse().setSocketPolicy(DISCONNECT_AFTER_REQUEST)); RecordingSubscriber<Response<String>> subscriber = subscriberRule.create(); service.response().subscribe(subscriber); subscriber.assertError(IOException.class); }
@Test public void responseFailure() { server.enqueue(new MockResponse().setSocketPolicy(DISCONNECT_AFTER_REQUEST)); RecordingMaybeObserver<Response<String>> observer = observerRule.create(); service.response().subscribe(observer); observer.assertError(IOException.class); }
@Test public void completableFailure() { server.enqueue(new MockResponse().setSocketPolicy(DISCONNECT_AFTER_REQUEST)); RecordingCompletableObserver observer = observerRule.create(); service.completable().subscribe(observer); observer.assertError(IOException.class); }
@Test public void responseFailure() { server.enqueue(new MockResponse().setSocketPolicy(DISCONNECT_AFTER_REQUEST)); RecordingSubscriber<Response<String>> subscriber = subscriberRule.create(); service.response().subscribe(subscriber); subscriber.assertError(IOException.class); }
@Test public void bodyFailure() { server.enqueue(new MockResponse().setSocketPolicy(DISCONNECT_AFTER_REQUEST)); RecordingSubscriber<String> subscriber = subscriberRule.create(); service.body().subscribe(subscriber); subscriber.assertError(IOException.class); }
@Test public void responseFailure() { server.enqueue(new MockResponse().setSocketPolicy(DISCONNECT_AFTER_REQUEST)); RecordingSubscriber<Response<String>> subscriber = subscriberRule.create(); service.response().subscribe(subscriber); subscriber.assertError(IOException.class); }
@Test public void bodyFailure() { server.enqueue(new MockResponse().setSocketPolicy(DISCONNECT_AFTER_REQUEST)); RecordingSubscriber<String> subscriber = subscriberRule.create(); service.body().subscribe(subscriber); subscriber.assertError(IOException.class); }
@Override public void execute() throws Throwable { CloudantClient mockClient = CloudantClientHelper.newMockWebServerClientBuilder (mockWebServer).readTimeout(50, TimeUnit.MILLISECONDS).build(); // Cause a read timeout to generate an IOException mockWebServer.enqueue(new MockResponse().setSocketPolicy(SocketPolicy.NO_RESPONSE)); Database database = mockClient.database(dbResource.getDatabaseName(), false); // Try to remove a design document by id only, generates a HEAD request for // revision info database.getDesignDocumentManager().remove("example"); } });