|
|
|
|
@ -83,7 +83,6 @@ import org.springframework.web.reactive.function.client.WebClient.ResponseSpec;
@@ -83,7 +83,6 @@ import org.springframework.web.reactive.function.client.WebClient.ResponseSpec;
|
|
|
|
|
import org.springframework.web.testfixture.xml.Pojo; |
|
|
|
|
|
|
|
|
|
import static org.assertj.core.api.Assertions.assertThat; |
|
|
|
|
import static org.junit.jupiter.api.Assumptions.assumeFalse; |
|
|
|
|
import static org.junit.jupiter.params.provider.Arguments.argumentSet; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
@ -108,6 +107,7 @@ class WebClientIntegrationTests {
@@ -108,6 +107,7 @@ class WebClientIntegrationTests {
|
|
|
|
|
static Stream<Arguments> arguments() { |
|
|
|
|
return Stream.of( |
|
|
|
|
argumentSet("Reactor Netty", new ReactorClientHttpConnector()), |
|
|
|
|
argumentSet("Reactor Netty 2", new ReactorNetty2ClientHttpConnector()), |
|
|
|
|
argumentSet("JDK", new JdkClientHttpConnector()), |
|
|
|
|
argumentSet("Jetty", new JettyClientHttpConnector()), |
|
|
|
|
argumentSet("HttpComponents", new HttpComponentsClientHttpConnector()) |
|
|
|
|
@ -193,8 +193,6 @@ class WebClientIntegrationTests {
@@ -193,8 +193,6 @@ class WebClientIntegrationTests {
|
|
|
|
|
|
|
|
|
|
@ParameterizedWebClientTest |
|
|
|
|
void applyAttributesToNativeRequest(ClientHttpConnector connector) { |
|
|
|
|
assumeFalse(connector instanceof ReactorClientHttpConnector, |
|
|
|
|
"Temporarily disabling flaky test for Reactor Netty"); |
|
|
|
|
startServer(connector); |
|
|
|
|
prepareResponse(response -> {}); |
|
|
|
|
|
|
|
|
|
@ -202,20 +200,32 @@ class WebClientIntegrationTests {
@@ -202,20 +200,32 @@ class WebClientIntegrationTests {
|
|
|
|
|
Mono<Void> result = this.webClient.get() |
|
|
|
|
.uri("/pojo") |
|
|
|
|
.attribute("foo","bar") |
|
|
|
|
.httpRequest(clientHttpRequest -> nativeRequest.set(clientHttpRequest.getNativeRequest())) |
|
|
|
|
.httpRequest(clientHttpRequest -> { |
|
|
|
|
if (clientHttpRequest instanceof ChannelOperations<?,?> nettyReq) { |
|
|
|
|
nativeRequest.set(nettyReq.channel().attr(ReactorClientHttpConnector.ATTRIBUTES_KEY)); |
|
|
|
|
} |
|
|
|
|
else if (clientHttpRequest instanceof reactor.netty5.channel.ChannelOperations<?,?> nettyReq) { |
|
|
|
|
nativeRequest.set(nettyReq.channel().attr(ReactorNetty2ClientHttpConnector.ATTRIBUTES_KEY)); |
|
|
|
|
} |
|
|
|
|
else { |
|
|
|
|
nativeRequest.set(clientHttpRequest.getNativeRequest()); |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
.retrieve() |
|
|
|
|
.bodyToMono(Void.class); |
|
|
|
|
|
|
|
|
|
StepVerifier.create(result).expectComplete().verify(); |
|
|
|
|
|
|
|
|
|
if (nativeRequest.get() instanceof ChannelOperations<?,?> nativeReq) { |
|
|
|
|
Attribute<Map<String, Object>> attributes = nativeReq.channel().attr(ReactorClientHttpConnector.ATTRIBUTES_KEY); |
|
|
|
|
if (nativeRequest.get() instanceof Attribute<?>) { |
|
|
|
|
@SuppressWarnings("unchecked") |
|
|
|
|
Attribute<Map<String, Object>> attributes = (Attribute<Map<String, Object>>) nativeRequest.get(); |
|
|
|
|
assertThat(attributes.get()).isNotNull(); |
|
|
|
|
assertThat(attributes.get()).containsEntry("foo", "bar"); |
|
|
|
|
} |
|
|
|
|
else if (nativeRequest.get() instanceof reactor.netty5.channel.ChannelOperations<?,?> nativeReq) { |
|
|
|
|
else if (nativeRequest.get() instanceof io.netty5.util.Attribute<?>) { |
|
|
|
|
@SuppressWarnings("unchecked") |
|
|
|
|
io.netty5.util.Attribute<Map<String, Object>> attributes = |
|
|
|
|
nativeReq.channel().attr(ReactorNetty2ClientHttpConnector.ATTRIBUTES_KEY); |
|
|
|
|
(io.netty5.util.Attribute<Map<String, Object>>) nativeRequest.get(); |
|
|
|
|
assertThat(attributes.get()).isNotNull(); |
|
|
|
|
assertThat(attributes.get()).containsEntry("foo", "bar"); |
|
|
|
|
} |
|
|
|
|
|