Skip to content

Commit e427d97

Browse files
author
Daniel Mikusa
committed
Ensure that http client is always configured
Previously, if no additional http configuration was set then the default http client configuration would not be applied either. This resulted in settings like the proxy settings and wire tap settings not being applied by default, which is the intention. Resolves #1143 Signed-off-by: Daniel Mikusa <[email protected]>
1 parent 00faecf commit e427d97

File tree

2 files changed

+41
-4
lines changed

2 files changed

+41
-4
lines changed

cloudfoundry-client-reactor/src/main/java/org/cloudfoundry/reactor/_DefaultConnectionContext.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@
3636
import reactor.netty.resources.ConnectionProvider;
3737
import reactor.netty.resources.LoopResources;
3838
import reactor.netty.tcp.SslProvider;
39-
import reactor.netty.tcp.SslProvider.DefaultConfigurationType;
4039

4140
import javax.annotation.PostConstruct;
4241
import javax.annotation.PreDestroy;
@@ -103,10 +102,10 @@ public Integer getConnectionPoolSize() {
103102
@Override
104103
@Value.Default
105104
public HttpClient getHttpClient() {
106-
HttpClient client = createHttpClient().compress(true)
107-
.secure(this::configureSsl);
105+
HttpClient client = configureHttpClient(createHttpClient().compress(true)
106+
.secure(this::configureSsl));
108107

109-
return getAdditionalHttpClientConfiguration().map(configuration -> configuration.apply(configureHttpClient(client)))
108+
return getAdditionalHttpClientConfiguration().map(configuration -> configuration.apply(client))
110109
.orElse(client);
111110
}
112111

cloudfoundry-client-reactor/src/test/java/org/cloudfoundry/reactor/DefaultConnectionContextTest.java

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,21 @@
1616

1717
package org.cloudfoundry.reactor;
1818

19+
import io.netty.handler.logging.ByteBufFormat;
20+
import io.netty.handler.logging.LogLevel;
1921
import org.junit.After;
2022
import org.junit.Test;
23+
import reactor.netty.http.client.HttpClient;
24+
import reactor.netty.transport.ProxyProvider;
2125
import reactor.test.StepVerifier;
2226

27+
import java.net.InetSocketAddress;
2328
import java.time.Duration;
29+
import java.util.Optional;
2430

2531
import static io.netty.handler.codec.http.HttpMethod.GET;
2632
import static io.netty.handler.codec.http.HttpResponseStatus.OK;
33+
import static org.assertj.core.api.Assertions.assertThat;
2734

2835
public final class DefaultConnectionContextTest extends AbstractRestTest {
2936

@@ -85,4 +92,35 @@ public void multipleInstances() {
8592
second.dispose();
8693
}
8794

95+
@Test
96+
public void configurationAlwaysApplied() {
97+
DefaultConnectionContext ctx = DefaultConnectionContext.builder()
98+
.apiHost("api.example.com")
99+
.keepAlive(true)
100+
.proxyConfiguration(
101+
ProxyConfiguration.builder()
102+
.host("proxy.example.com")
103+
.port(8080)
104+
.username("foo")
105+
.password("bar")
106+
.build())
107+
.skipSslValidation(true)
108+
.build();
109+
110+
assertThat(ctx.getConnectionPoolSize()).isEqualTo(24);
111+
assertThat(ctx.getApiHost()).isEqualTo("api.example.com");
112+
assertThat(ctx.getSkipSslValidation()).isEqualTo(Optional.of(true));
113+
114+
HttpClient client = ctx.getHttpClient();
115+
assertThat(client.configuration().isSecure()).isEqualTo(true);
116+
117+
InetSocketAddress addr = client.configuration().proxyProvider().getAddress().get();
118+
assertThat(addr.getHostName()).isEqualTo("proxy.example.com");
119+
assertThat(addr.getPort()).isEqualTo(8080);
120+
assertThat(client.configuration().proxyProvider().getType()).isEqualTo(ProxyProvider.Proxy.HTTP);
121+
122+
assertThat(client.configuration().loggingHandler().level()).isEqualTo(LogLevel.TRACE);
123+
assertThat(client.configuration().loggingHandler().byteBufFormat()).isEqualTo(ByteBufFormat.HEX_DUMP);
124+
}
125+
88126
}

0 commit comments

Comments
 (0)