Skip to content

Commit

Permalink
fix(RegistrationClient): set timeouts properly (#2616)
Browse files Browse the repository at this point in the history
* fix(RegistrationClient): set timeouts properly

* java format

* java format
  • Loading branch information
SteKoe committed Jul 14, 2023
1 parent f1f6ac6 commit 0ec7d60
Show file tree
Hide file tree
Showing 4 changed files with 45 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -139,11 +139,13 @@ public static class BlockingRegistrationClientConfig {
@Bean
@ConditionalOnMissingBean
public RegistrationClient registrationClient(ClientProperties client) {
RestTemplateBuilder builder = new RestTemplateBuilder().setConnectTimeout(client.getConnectTimeout());
builder.setReadTimeout(client.getReadTimeout());
RestTemplateBuilder builder = new RestTemplateBuilder().setConnectTimeout(client.getConnectTimeout())
.setReadTimeout(client.getReadTimeout());

if (client.getUsername() != null && client.getPassword() != null) {
builder = builder.basicAuthentication(client.getUsername(), client.getPassword());
}

RestTemplate build = builder.build();
return new BlockingRegistrationClient(build);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.test.util.ReflectionTestUtils;
import org.springframework.web.client.RestTemplate;

import de.codecentric.boot.admin.client.registration.ApplicationRegistrator;
Expand All @@ -42,8 +44,8 @@ public class SpringBootAdminClientAutoConfigurationTest {

private final WebApplicationContextRunner contextRunner = new WebApplicationContextRunner()
.withConfiguration(AutoConfigurations.of(EndpointAutoConfiguration.class, WebEndpointAutoConfiguration.class,
DispatcherServletAutoConfiguration.class, RestTemplateAutoConfiguration.class,
SpringBootAdminClientAutoConfiguration.class));
DispatcherServletAutoConfiguration.class, RestTemplateAutoConfiguration.class,
SpringBootAdminClientAutoConfiguration.class));

@Test
public void not_active() {
Expand All @@ -60,7 +62,7 @@ public void active() {
public void disabled() {
this.contextRunner
.withPropertyValues("spring.boot.admin.client.url:http://localhost:8081",
"spring.boot.admin.client.enabled:false")
"spring.boot.admin.client.enabled:false")
.run((context) -> assertThat(context).doesNotHaveBean(ApplicationRegistrator.class));
}

Expand All @@ -77,20 +79,45 @@ public void nonWebEnvironment() {
public void reactiveEnvironment() {
ReactiveWebApplicationContextRunner reactiveContextRunner = new ReactiveWebApplicationContextRunner()
.withConfiguration(
AutoConfigurations.of(EndpointAutoConfiguration.class, WebEndpointAutoConfiguration.class,
WebClientAutoConfiguration.class, SpringBootAdminClientAutoConfiguration.class))
AutoConfigurations.of(EndpointAutoConfiguration.class, WebEndpointAutoConfiguration.class,
WebClientAutoConfiguration.class, SpringBootAdminClientAutoConfiguration.class))
.withBean(WebFluxProperties.class);
reactiveContextRunner.withPropertyValues("spring.boot.admin.client.url:http://localhost:8081")
.run((context) -> assertThat(context).hasSingleBean(ApplicationRegistrator.class));
}

@Test
public void blockingClientInBlockingEnvironment() {
WebApplicationContextRunner webApplicationContextRunner = new WebApplicationContextRunner()
.withConfiguration(AutoConfigurations.of(EndpointAutoConfiguration.class,
WebEndpointAutoConfiguration.class, DispatcherServletAutoConfiguration.class,
RestTemplateAutoConfiguration.class, SpringBootAdminClientAutoConfiguration.class));

webApplicationContextRunner
.withPropertyValues("spring.boot.admin.client.url:http://localhost:8081",
"spring.boot.admin.client.connectTimeout=1337", "spring.boot.admin.client.readTimeout=42")
.run((context) -> {
RegistrationClient registrationClient = context.getBean(RegistrationClient.class);
RestTemplate restTemplate = (RestTemplate) ReflectionTestUtils.getField(registrationClient,
"restTemplate");
assertThat(restTemplate).isNotNull();

ClientHttpRequestFactory requestFactory = restTemplate.getRequestFactory();

Integer connectTimeout = (Integer) ReflectionTestUtils.getField(requestFactory, "connectTimeout");
assertThat(connectTimeout).isEqualTo(1337);
Integer readTimeout = (Integer) ReflectionTestUtils.getField(requestFactory, "readTimeout");
assertThat(readTimeout).isEqualTo(42);
});
}

@Test
public void customBlockingClientInReactiveEnvironment() {
ReactiveWebApplicationContextRunner reactiveContextRunner = new ReactiveWebApplicationContextRunner()
.withConfiguration(UserConfigurations.of(CustomBlockingConfiguration.class))
.withConfiguration(
AutoConfigurations.of(EndpointAutoConfiguration.class, WebEndpointAutoConfiguration.class,
WebClientAutoConfiguration.class, SpringBootAdminClientAutoConfiguration.class))
AutoConfigurations.of(EndpointAutoConfiguration.class, WebEndpointAutoConfiguration.class,
WebClientAutoConfiguration.class, SpringBootAdminClientAutoConfiguration.class))
.withBean(WebFluxProperties.class);

reactiveContextRunner.withPropertyValues("spring.boot.admin.client.url:http://localhost:8081")
Expand All @@ -106,8 +133,8 @@ public void customBlockingClientInBlockingEnvironment() {
WebApplicationContextRunner webApplicationContextRunner = new WebApplicationContextRunner()
.withConfiguration(UserConfigurations.of(CustomBlockingConfiguration.class))
.withConfiguration(AutoConfigurations.of(EndpointAutoConfiguration.class,
WebEndpointAutoConfiguration.class, DispatcherServletAutoConfiguration.class,
RestTemplateAutoConfiguration.class, SpringBootAdminClientAutoConfiguration.class));
WebEndpointAutoConfiguration.class, DispatcherServletAutoConfiguration.class,
RestTemplateAutoConfiguration.class, SpringBootAdminClientAutoConfiguration.class));

webApplicationContextRunner.withPropertyValues("spring.boot.admin.client.url:http://localhost:8081")
.run((context) -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,9 @@ public class SpringBootAdminClientCloudFoundryAutoConfigurationTest {

private final WebApplicationContextRunner contextRunner = new WebApplicationContextRunner()
.withConfiguration(AutoConfigurations.of(EndpointAutoConfiguration.class, WebEndpointAutoConfiguration.class,
WebMvcAutoConfiguration.class, DispatcherServletAutoConfiguration.class,
RestTemplateAutoConfiguration.class, SpringBootAdminClientAutoConfiguration.class,
SpringBootAdminClientCloudFoundryAutoConfiguration.class));
WebMvcAutoConfiguration.class, DispatcherServletAutoConfiguration.class,
RestTemplateAutoConfiguration.class, SpringBootAdminClientAutoConfiguration.class,
SpringBootAdminClientCloudFoundryAutoConfiguration.class));

@Test
public void non_cloud_platform() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,8 @@ class MailNotifierIntegrationTest implements WithAssertions {
void fileProtocolIsNotAllowed() {
assertThatThrownBy(() -> {
URL resource = getClass().getClassLoader().getResource(".");
mailNotifier.setTemplate("file://" + resource.getFile()
+ "de/codecentric/boot/admin/server/notify/vulnerable-file.html");
mailNotifier.setTemplate(
"file://" + resource.getFile() + "de/codecentric/boot/admin/server/notify/vulnerable-file.html");
mailNotifier.getBody(new Context());
}).hasCauseInstanceOf(FileNotFoundException.class);
}
Expand Down

0 comments on commit 0ec7d60

Please sign in to comment.