[JAVA-12608] Add logging to debug failing tests (#12587)
This commit is contained in:
parent
3252ba5775
commit
a800f72b99
|
@ -4,6 +4,7 @@ import io.netty.channel.ChannelOption;
|
||||||
import io.netty.handler.timeout.ReadTimeoutException;
|
import io.netty.handler.timeout.ReadTimeoutException;
|
||||||
import io.netty.handler.timeout.ReadTimeoutHandler;
|
import io.netty.handler.timeout.ReadTimeoutHandler;
|
||||||
import io.netty.handler.timeout.WriteTimeoutHandler;
|
import io.netty.handler.timeout.WriteTimeoutHandler;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
import org.springframework.boot.test.context.SpringBootTest;
|
import org.springframework.boot.test.context.SpringBootTest;
|
||||||
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
|
import org.springframework.boot.test.context.SpringBootTest.WebEnvironment;
|
||||||
|
@ -43,6 +44,7 @@ import java.util.concurrent.TimeUnit;
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
@SpringBootTest(classes = WebClientApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT)
|
@SpringBootTest(classes = WebClientApplication.class, webEnvironment = WebEnvironment.RANDOM_PORT)
|
||||||
|
@Slf4j
|
||||||
class WebClientIntegrationTest {
|
class WebClientIntegrationTest {
|
||||||
|
|
||||||
private static final String BODY_VALUE = "bodyValue";
|
private static final String BODY_VALUE = "bodyValue";
|
||||||
|
@ -54,11 +56,14 @@ class WebClientIntegrationTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void givenDifferentWebClientCreationMethods_whenUsed_thenObtainExpectedResponse() {
|
void givenDifferentWebClientCreationMethods_whenUsed_thenObtainExpectedResponse() {
|
||||||
|
log.info("Executing test using several webclient configs ....");
|
||||||
// WebClient creation
|
// WebClient creation
|
||||||
WebClient client1 = WebClient.create();
|
WebClient client1 = WebClient.builder().clientConnector(httpConnector()).build();
|
||||||
WebClient client2 = WebClient.create("http://localhost:" + port);
|
WebClient client2 = WebClient.builder().baseUrl("http://localhost:" + port)
|
||||||
|
.clientConnector(httpConnector()).build();
|
||||||
WebClient client3 = WebClient.builder()
|
WebClient client3 = WebClient.builder()
|
||||||
.baseUrl("http://localhost:" + port)
|
.baseUrl("http://localhost:" + port)
|
||||||
|
.clientConnector(httpConnector())
|
||||||
.defaultCookie("cookieKey", "cookieValue")
|
.defaultCookie("cookieKey", "cookieValue")
|
||||||
.defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
|
.defaultHeader(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON_VALUE)
|
||||||
.defaultUriVariables(Collections.singletonMap("url", "http://localhost:8080"))
|
.defaultUriVariables(Collections.singletonMap("url", "http://localhost:8080"))
|
||||||
|
@ -75,21 +80,30 @@ class WebClientIntegrationTest {
|
||||||
StepVerifier.create(retrieveResponse(client3))
|
StepVerifier.create(retrieveResponse(client3))
|
||||||
.expectNext("processed-bodyValue")
|
.expectNext("processed-bodyValue")
|
||||||
.verifyComplete();
|
.verifyComplete();
|
||||||
|
|
||||||
// assert response without specifying URI
|
// assert response without specifying URI
|
||||||
|
log.info("Obtaining error response using default client (without url) ....");
|
||||||
StepVerifier.create(retrieveResponse(client1))
|
StepVerifier.create(retrieveResponse(client1))
|
||||||
.expectErrorMatches(ex -> WebClientRequestException.class.isAssignableFrom(ex.getClass()) && ex.getMessage()
|
.expectErrorMatches(ex -> WebClientRequestException.class.isAssignableFrom(ex.getClass()) && ex.getMessage()
|
||||||
.contains("Connection refused"))
|
.contains("Connection refused"))
|
||||||
|
.log()
|
||||||
.verify();
|
.verify();
|
||||||
|
log.info("error response processed as expected");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void givenWebClientCreationWithoutUri_whenUsed_thenObtainExpectedResponse() {
|
void givenWebClientCreationWithoutUri_whenUsed_thenObtainExpectedResponse() {
|
||||||
WebClient client = WebClient.create();
|
log.info("Executing test for connection refused....");
|
||||||
|
WebClient client = WebClient.builder()
|
||||||
|
.clientConnector(httpConnector())
|
||||||
|
.build();
|
||||||
|
|
||||||
StepVerifier.create(retrieveResponse(client))
|
StepVerifier.create(retrieveResponse(client))
|
||||||
.expectErrorMatches(ex -> WebClientRequestException.class.isAssignableFrom(ex.getClass()) && ex.getMessage()
|
.expectErrorMatches(ex -> WebClientRequestException.class.isAssignableFrom(ex.getClass()) && ex.getMessage()
|
||||||
.contains("Connection refused"))
|
.contains("Connection refused"))
|
||||||
|
.log()
|
||||||
.verify();
|
.verify();
|
||||||
|
log.info("test completed....");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -137,16 +151,19 @@ class WebClientIntegrationTest {
|
||||||
@Test
|
@Test
|
||||||
void givenOverriddenUriSpecifications_whenUsed_thenObtainExpectedResponse() {
|
void givenOverriddenUriSpecifications_whenUsed_thenObtainExpectedResponse() {
|
||||||
RequestBodySpec bodySpecOverriddenBaseUri = createDefaultPostRequest().uri(URI.create("/resource"));
|
RequestBodySpec bodySpecOverriddenBaseUri = createDefaultPostRequest().uri(URI.create("/resource"));
|
||||||
|
|
||||||
StepVerifier.create(retrieveResponse(bodySpecOverriddenBaseUri))
|
StepVerifier.create(retrieveResponse(bodySpecOverriddenBaseUri))
|
||||||
.expectErrorMatches(ex -> WebClientRequestException.class.isAssignableFrom(ex.getClass()) && ex.getMessage()
|
.expectErrorMatches(ex -> WebClientRequestException.class.isAssignableFrom(ex.getClass()) && ex.getMessage()
|
||||||
.contains("Connection refused"))
|
.contains("Connection refused"))
|
||||||
.verify();
|
.verify();
|
||||||
|
|
||||||
RequestBodySpec bodySpecOverriddenBaseUri2 = WebClient.builder()
|
RequestBodySpec bodySpecOverriddenBaseUri2 = WebClient.builder()
|
||||||
|
.clientConnector(httpConnector())
|
||||||
.baseUrl("http://localhost:" + port)
|
.baseUrl("http://localhost:" + port)
|
||||||
.build()
|
.build()
|
||||||
.post()
|
.post()
|
||||||
.uri(URI.create("/resource"));
|
.uri(URI.create("/resource"));
|
||||||
|
|
||||||
StepVerifier.create(retrieveResponse(bodySpecOverriddenBaseUri2))
|
StepVerifier.create(retrieveResponse(bodySpecOverriddenBaseUri2))
|
||||||
.expectErrorMatches(ex -> WebClientRequestException.class.isAssignableFrom(ex.getClass()) && ex.getMessage()
|
.expectErrorMatches(ex -> WebClientRequestException.class.isAssignableFrom(ex.getClass()) && ex.getMessage()
|
||||||
.contains("Connection refused"))
|
.contains("Connection refused"))
|
||||||
|
@ -294,7 +311,17 @@ class WebClientIntegrationTest {
|
||||||
|
|
||||||
// helper methods to create default instances
|
// helper methods to create default instances
|
||||||
private WebClient createDefaultClient() {
|
private WebClient createDefaultClient() {
|
||||||
return WebClient.create("http://localhost:" + port);
|
return WebClient.builder()
|
||||||
|
.baseUrl("http://localhost:" + port)
|
||||||
|
.clientConnector(httpConnector())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static ReactorClientHttpConnector httpConnector() {
|
||||||
|
HttpClient httpClient = HttpClient
|
||||||
|
.create()
|
||||||
|
.wiretap(true);
|
||||||
|
return new ReactorClientHttpConnector(httpClient);
|
||||||
}
|
}
|
||||||
|
|
||||||
private RequestBodyUriSpec createDefaultPostRequest() {
|
private RequestBodyUriSpec createDefaultPostRequest() {
|
||||||
|
|
|
@ -9,6 +9,9 @@
|
||||||
name="com.baeldung.reactive.debugging.consumer.service.FooService">
|
name="com.baeldung.reactive.debugging.consumer.service.FooService">
|
||||||
<appender-ref ref="LISTAPPENDER" />
|
<appender-ref ref="LISTAPPENDER" />
|
||||||
</logger>
|
</logger>
|
||||||
|
|
||||||
|
<logger name="reactor.netty.http.client" level="DEBUG"/>
|
||||||
|
|
||||||
<root level="info">
|
<root level="info">
|
||||||
<appender-ref ref="CONSOLE" />
|
<appender-ref ref="CONSOLE" />
|
||||||
<appender-ref ref="LISTAPPENDER" />
|
<appender-ref ref="LISTAPPENDER" />
|
||||||
|
|
Loading…
Reference in New Issue