pull/15692/head
Phillip Webb 6 years ago
parent 9c3e587917
commit 6a901199f5

@ -107,7 +107,7 @@ public class AtlasMetricsExportAutoConfigurationTests {
@Bean @Bean
public AtlasConfig customConfig() { public AtlasConfig customConfig() {
return (k) -> null; return (key) -> null;
} }
} }

@ -31,7 +31,7 @@ public class AtlasPropertiesTests {
@Test @Test
public void defaultValuesAreConsistent() { public void defaultValuesAreConsistent() {
AtlasProperties properties = new AtlasProperties(); AtlasProperties properties = new AtlasProperties();
AtlasConfig config = (k) -> null; AtlasConfig config = (key) -> null;
assertThat(properties.getStep()).isEqualTo(config.step()); assertThat(properties.getStep()).isEqualTo(config.step());
assertThat(properties.isEnabled()).isEqualTo(config.enabled()); assertThat(properties.isEnabled()).isEqualTo(config.enabled());
assertThat(properties.getConnectTimeout()).isEqualTo(config.connectTimeout()); assertThat(properties.getConnectTimeout()).isEqualTo(config.connectTimeout());

@ -116,8 +116,8 @@ public class DatadogMetricsExportAutoConfigurationTests {
@Bean @Bean
public DatadogConfig customConfig() { public DatadogConfig customConfig() {
return (k) -> { return (key) -> {
if ("datadog.apiKey".equals(k)) { if ("datadog.apiKey".equals(key)) {
return "12345"; return "12345";
} }
return null; return null;

@ -125,14 +125,14 @@ public class DynatraceMetricsExportAutoConfigurationTests {
@Bean @Bean
public DynatraceConfig customConfig() { public DynatraceConfig customConfig() {
return (k) -> { return (key) -> {
if ("dynatrace.uri".equals(k)) { if ("dynatrace.uri".equals(key)) {
return "https://dynatrace.example.com"; return "https://dynatrace.example.com";
} }
if ("dynatrace.apiToken".equals(k)) { if ("dynatrace.apiToken".equals(key)) {
return "abcde"; return "abcde";
} }
if ("dynatrace.deviceId".equals(k)) { if ("dynatrace.deviceId".equals(key)) {
return "test"; return "test";
} }
return null; return null;

@ -108,7 +108,7 @@ public class ElasticMetricsExportAutoConfigurationTests {
@Bean @Bean
public ElasticConfig customConfig() { public ElasticConfig customConfig() {
return (k) -> null; return (key) -> null;
} }
} }

@ -107,7 +107,7 @@ public class GangliaMetricsExportAutoConfigurationTests {
@Bean @Bean
public GangliaConfig customConfig() { public GangliaConfig customConfig() {
return (k) -> null; return (key) -> null;
} }
} }

@ -124,8 +124,8 @@ public class GraphiteMetricsExportAutoConfigurationTests {
@Bean @Bean
public GraphiteConfig customConfig() { public GraphiteConfig customConfig() {
return (k) -> { return (key) -> {
if ("Graphite.apiKey".equals(k)) { if ("Graphite.apiKey".equals(key)) {
return "12345"; return "12345";
} }
return null; return null;

@ -109,7 +109,7 @@ public class HumioMetricsExportAutoConfigurationTests {
@Bean @Bean
public HumioConfig customConfig() { public HumioConfig customConfig() {
return (k) -> null; return (key) -> null;
} }
} }

@ -107,7 +107,7 @@ public class InfluxMetricsExportAutoConfigurationTests {
@Bean @Bean
public InfluxConfig customConfig() { public InfluxConfig customConfig() {
return (k) -> null; return (key) -> null;
} }
} }

@ -129,11 +129,11 @@ public class NewRelicMetricsExportAutoConfigurationTests {
@Bean @Bean
public NewRelicConfig customConfig() { public NewRelicConfig customConfig() {
return (k) -> { return (key) -> {
if ("newrelic.accountId".equals(k)) { if ("newrelic.accountId".equals(key)) {
return "abcde"; return "abcde";
} }
if ("newrelic.apiKey".equals(k)) { if ("newrelic.apiKey".equals(key)) {
return "12345"; return "12345";
} }
return null; return null;

@ -157,7 +157,7 @@ public class PrometheusMetricsExportAutoConfigurationTests {
@Bean @Bean
public PrometheusConfig customConfig() { public PrometheusConfig customConfig() {
return (k) -> null; return (key) -> null;
} }
} }

@ -124,8 +124,8 @@ public class SignalFxMetricsExportAutoConfigurationTests {
@Bean @Bean
public SignalFxConfig customConfig() { public SignalFxConfig customConfig() {
return (k) -> { return (key) -> {
if ("signalfx.accessToken".equals(k)) { if ("signalfx.accessToken".equals(key)) {
return "abcde"; return "abcde";
} }
return null; return null;

@ -90,7 +90,7 @@ public class SimpleMetricsExportAutoConfigurationTests {
@Bean @Bean
public SimpleConfig customConfig() { public SimpleConfig customConfig() {
return (k) -> null; return (key) -> null;
} }
} }

@ -81,7 +81,6 @@ public class ElasticsearchRestHealthIndicator extends AbstractHealthIndicator {
else { else {
builder.up(); builder.up();
} }
builder.withDetails(response); builder.withDetails(response);
} }

@ -33,8 +33,8 @@ import org.springframework.boot.actuate.health.Status;
import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.entry; import static org.assertj.core.api.Assertions.entry;
import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.any;
import static org.mockito.BDDMockito.mock; import static org.mockito.BDDMockito.given;
import static org.mockito.BDDMockito.when; import static org.mockito.Mockito.mock;
/** /**
* Tests for {@link ElasticsearchRestHealthIndicator}. * Tests for {@link ElasticsearchRestHealthIndicator}.
@ -54,15 +54,12 @@ public class ElasticsearchRestHealthIndicatorTest {
BasicHttpEntity httpEntity = new BasicHttpEntity(); BasicHttpEntity httpEntity = new BasicHttpEntity();
httpEntity.setContent( httpEntity.setContent(
new ByteArrayInputStream(createJsonResult(200, "green").getBytes())); new ByteArrayInputStream(createJsonResult(200, "green").getBytes()));
Response response = mock(Response.class); Response response = mock(Response.class);
StatusLine statusLine = mock(StatusLine.class); StatusLine statusLine = mock(StatusLine.class);
given(statusLine.getStatusCode()).willReturn(200);
when(statusLine.getStatusCode()).thenReturn(200); given(response.getStatusLine()).willReturn(statusLine);
when(response.getStatusLine()).thenReturn(statusLine); given(response.getEntity()).willReturn(httpEntity);
when(response.getEntity()).thenReturn(httpEntity); given(this.restClient.performRequest(any(Request.class))).willReturn(response);
when(this.restClient.performRequest(any(Request.class))).thenReturn(response);
Health health = this.elasticsearchRestHealthIndicator.health(); Health health = this.elasticsearchRestHealthIndicator.health();
assertThat(health.getStatus()).isEqualTo(Status.UP); assertThat(health.getStatus()).isEqualTo(Status.UP);
assertHealthDetailsWithStatus(health.getDetails(), "green"); assertHealthDetailsWithStatus(health.getDetails(), "green");
@ -73,15 +70,12 @@ public class ElasticsearchRestHealthIndicatorTest {
BasicHttpEntity httpEntity = new BasicHttpEntity(); BasicHttpEntity httpEntity = new BasicHttpEntity();
httpEntity.setContent( httpEntity.setContent(
new ByteArrayInputStream(createJsonResult(200, "yellow").getBytes())); new ByteArrayInputStream(createJsonResult(200, "yellow").getBytes()));
Response response = mock(Response.class); Response response = mock(Response.class);
StatusLine statusLine = mock(StatusLine.class); StatusLine statusLine = mock(StatusLine.class);
given(statusLine.getStatusCode()).willReturn(200);
when(statusLine.getStatusCode()).thenReturn(200); given(response.getStatusLine()).willReturn(statusLine);
when(response.getStatusLine()).thenReturn(statusLine); given(response.getEntity()).willReturn(httpEntity);
when(response.getEntity()).thenReturn(httpEntity); given(this.restClient.performRequest(any(Request.class))).willReturn(response);
when(this.restClient.performRequest(any(Request.class))).thenReturn(response);
Health health = this.elasticsearchRestHealthIndicator.health(); Health health = this.elasticsearchRestHealthIndicator.health();
assertThat(health.getStatus()).isEqualTo(Status.UP); assertThat(health.getStatus()).isEqualTo(Status.UP);
assertHealthDetailsWithStatus(health.getDetails(), "yellow"); assertHealthDetailsWithStatus(health.getDetails(), "yellow");
@ -89,9 +83,8 @@ public class ElasticsearchRestHealthIndicatorTest {
@Test @Test
public void elasticsearchIsDown() throws IOException { public void elasticsearchIsDown() throws IOException {
when(this.restClient.performRequest(any(Request.class))) given(this.restClient.performRequest(any(Request.class)))
.thenThrow(new IOException("Couldn't connect")); .willThrow(new IOException("Couldn't connect"));
Health health = this.elasticsearchRestHealthIndicator.health(); Health health = this.elasticsearchRestHealthIndicator.health();
assertThat(health.getStatus()).isEqualTo(Status.DOWN); assertThat(health.getStatus()).isEqualTo(Status.DOWN);
assertThat(health.getDetails()) assertThat(health.getDetails())
@ -102,12 +95,10 @@ public class ElasticsearchRestHealthIndicatorTest {
public void elasticsearchIsDownByResponseCode() throws IOException { public void elasticsearchIsDownByResponseCode() throws IOException {
Response response = mock(Response.class); Response response = mock(Response.class);
StatusLine statusLine = mock(StatusLine.class); StatusLine statusLine = mock(StatusLine.class);
given(statusLine.getStatusCode()).willReturn(500);
when(statusLine.getStatusCode()).thenReturn(500); given(statusLine.getReasonPhrase()).willReturn("Internal server error");
when(statusLine.getReasonPhrase()).thenReturn("Internal server error"); given(response.getStatusLine()).willReturn(statusLine);
when(response.getStatusLine()).thenReturn(statusLine); given(this.restClient.performRequest(any(Request.class))).willReturn(response);
when(this.restClient.performRequest(any(Request.class))).thenReturn(response);
Health health = this.elasticsearchRestHealthIndicator.health(); Health health = this.elasticsearchRestHealthIndicator.health();
assertThat(health.getStatus()).isEqualTo(Status.DOWN); assertThat(health.getStatus()).isEqualTo(Status.DOWN);
assertThat(health.getDetails()).contains(entry("statusCode", 500), assertThat(health.getDetails()).contains(entry("statusCode", 500),
@ -119,15 +110,12 @@ public class ElasticsearchRestHealthIndicatorTest {
BasicHttpEntity httpEntity = new BasicHttpEntity(); BasicHttpEntity httpEntity = new BasicHttpEntity();
httpEntity.setContent( httpEntity.setContent(
new ByteArrayInputStream(createJsonResult(200, "red").getBytes())); new ByteArrayInputStream(createJsonResult(200, "red").getBytes()));
Response response = mock(Response.class); Response response = mock(Response.class);
StatusLine statusLine = mock(StatusLine.class); StatusLine statusLine = mock(StatusLine.class);
given(statusLine.getStatusCode()).willReturn(200);
when(statusLine.getStatusCode()).thenReturn(200); given(response.getStatusLine()).willReturn(statusLine);
when(response.getStatusLine()).thenReturn(statusLine); given(response.getEntity()).willReturn(httpEntity);
when(response.getEntity()).thenReturn(httpEntity); given(this.restClient.performRequest(any(Request.class))).willReturn(response);
when(this.restClient.performRequest(any(Request.class))).thenReturn(response);
Health health = this.elasticsearchRestHealthIndicator.health(); Health health = this.elasticsearchRestHealthIndicator.health();
assertThat(health.getStatus()).isEqualTo(Status.OUT_OF_SERVICE); assertThat(health.getStatus()).isEqualTo(Status.OUT_OF_SERVICE);
assertHealthDetailsWithStatus(health.getDetails(), "red"); assertHealthDetailsWithStatus(health.getDetails(), "red");
@ -148,9 +136,8 @@ public class ElasticsearchRestHealthIndicatorTest {
} }
private String createJsonResult(int responseCode, String status) { private String createJsonResult(int responseCode, String status) {
String json;
if (responseCode == 200) { if (responseCode == 200) {
json = String.format("{\"cluster_name\":\"elasticsearch\"," return String.format("{\"cluster_name\":\"elasticsearch\","
+ "\"status\":\"%s\",\"timed_out\":false,\"number_of_nodes\":1," + "\"status\":\"%s\",\"timed_out\":false,\"number_of_nodes\":1,"
+ "\"number_of_data_nodes\":1,\"active_primary_shards\":0," + "\"number_of_data_nodes\":1,\"active_primary_shards\":0,"
+ "\"active_shards\":0,\"relocating_shards\":0,\"initializing_shards\":0," + "\"active_shards\":0,\"relocating_shards\":0,\"initializing_shards\":0,"
@ -159,12 +146,8 @@ public class ElasticsearchRestHealthIndicatorTest {
+ "\"task_max_waiting_in_queue_millis\":0,\"active_shards_percent_as_number\":100.0}", + "\"task_max_waiting_in_queue_millis\":0,\"active_shards_percent_as_number\":100.0}",
status); status);
} }
else { return "{\n" + " \"error\": \"Server Error\",\n" + " \"status\": "
json = "{\n" + " \"error\": \"Server Error\",\n" + " \"status\": " + responseCode + "\n" + "}";
+ responseCode + "\n" + "}";
}
return json;
} }
} }

@ -66,9 +66,8 @@ public class NettyWebServerFactoryCustomizer
.to((maxHttpRequestHeaderSize) -> customizeMaxHttpHeaderSize(factory, .to((maxHttpRequestHeaderSize) -> customizeMaxHttpHeaderSize(factory,
maxHttpRequestHeaderSize)); maxHttpRequestHeaderSize));
propertyMapper.from(this.serverProperties::getConnectionTimeout).whenNonNull() propertyMapper.from(this.serverProperties::getConnectionTimeout).whenNonNull()
.asInt(Duration::toMillis) .asInt(Duration::toMillis).to((duration) -> factory
.to((duration) -> customizeConnectionTimeOut(factory, duration)); .addServerCustomizers(getConnectionTimeOutCustomizer(duration)));
} }
private boolean getOrDeduceUseForwardHeaders(ServerProperties serverProperties, private boolean getOrDeduceUseForwardHeaders(ServerProperties serverProperties,
@ -87,11 +86,9 @@ public class NettyWebServerFactoryCustomizer
.maxHeaderSize(maxHttpHeaderSize))); .maxHeaderSize(maxHttpHeaderSize)));
} }
private void customizeConnectionTimeOut(NettyReactiveWebServerFactory factory, private NettyServerCustomizer getConnectionTimeOutCustomizer(int duration) {
int duration) { return (httpServer) -> httpServer.tcpConfiguration((tcpServer) -> tcpServer
factory.addServerCustomizers((NettyServerCustomizer) (httpServer) -> httpServer .selectorOption(ChannelOption.CONNECT_TIMEOUT_MILLIS, duration));
.tcpConfiguration((tcpServer) -> tcpServer
.selectorOption(ChannelOption.CONNECT_TIMEOUT_MILLIS, duration)));
} }
} }

@ -70,9 +70,6 @@ public class ValidationBindHandler extends AbstractBindHandler {
public void onFinish(ConfigurationPropertyName name, Bindable<?> target, public void onFinish(ConfigurationPropertyName name, Bindable<?> target,
BindContext context, Object result) throws Exception { BindContext context, Object result) throws Exception {
validate(name, target, context, result); validate(name, target, context, result);
if (context.getDepth() == 0 && !this.exceptions.isEmpty()) {
throw this.exceptions.pop();
}
super.onFinish(name, target, context, result); super.onFinish(name, target, context, result);
} }
@ -81,9 +78,6 @@ public class ValidationBindHandler extends AbstractBindHandler {
BindContext context, Exception error) throws Exception { BindContext context, Exception error) throws Exception {
Object result = super.onFailure(name, target, context, error); Object result = super.onFailure(name, target, context, error);
validate(name, target, context, null); validate(name, target, context, null);
if (!this.exceptions.isEmpty()) {
throw this.exceptions.pop();
}
return result; return result;
} }
@ -91,7 +85,12 @@ public class ValidationBindHandler extends AbstractBindHandler {
BindContext context, Object result) { BindContext context, Object result) {
Object validationTarget = getValidationTarget(target, context, result); Object validationTarget = getValidationTarget(target, context, result);
Class<?> validationType = target.getBoxedType().resolve(); Class<?> validationType = target.getBoxedType().resolve();
validate(name, validationTarget, validationType); if (validationTarget != null) {
validateAndPush(name, validationTarget, validationType);
}
if (context.getDepth() == 0 && !this.exceptions.isEmpty()) {
throw this.exceptions.pop();
}
} }
private Object getValidationTarget(Bindable<?> target, BindContext context, private Object getValidationTarget(Bindable<?> target, BindContext context,
@ -105,14 +104,13 @@ public class ValidationBindHandler extends AbstractBindHandler {
return null; return null;
} }
private void validate(ConfigurationPropertyName name, Object target, Class<?> type) { private void validateAndPush(ConfigurationPropertyName name, Object target,
if (target != null) { Class<?> type) {
BindingResult errors = new BeanPropertyBindingResult(target, name.toString()); BindingResult errors = new BeanPropertyBindingResult(target, name.toString());
Arrays.stream(this.validators).filter((validator) -> validator.supports(type)) Arrays.stream(this.validators).filter((validator) -> validator.supports(type))
.forEach((validator) -> validator.validate(target, errors)); .forEach((validator) -> validator.validate(target, errors));
if (errors.hasErrors()) { if (errors.hasErrors()) {
this.exceptions.push(getBindValidationException(name, errors)); this.exceptions.push(getBindValidationException(name, errors));
}
} }
} }

@ -54,30 +54,37 @@ class CompressionConnectorCustomizer implements TomcatConnectorCustomizer {
} }
} }
private void customize(Http2Protocol upgradeProtocol) { private void customize(Http2Protocol protocol) {
Compression compression = this.compression; Compression compression = this.compression;
upgradeProtocol.setCompression("on"); protocol.setCompression("on");
upgradeProtocol protocol.setCompressionMinSize(getMinResponseSize(compression));
.setCompressionMinSize((int) compression.getMinResponseSize().toBytes()); protocol.setCompressibleMimeType(getMimeTypes(compression));
upgradeProtocol.setCompressibleMimeType(
StringUtils.arrayToCommaDelimitedString(compression.getMimeTypes()));
if (this.compression.getExcludedUserAgents() != null) { if (this.compression.getExcludedUserAgents() != null) {
upgradeProtocol protocol.setNoCompressionUserAgents(getExcludedUserAgents());
.setNoCompressionUserAgents(StringUtils.arrayToCommaDelimitedString(
this.compression.getExcludedUserAgents()));
} }
} }
private void customize(AbstractHttp11Protocol<?> protocol) { private void customize(AbstractHttp11Protocol<?> protocol) {
Compression compression = this.compression; Compression compression = this.compression;
protocol.setCompression("on"); protocol.setCompression("on");
protocol.setCompressionMinSize((int) compression.getMinResponseSize().toBytes()); protocol.setCompressionMinSize(getMinResponseSize(compression));
protocol.setCompressibleMimeType( protocol.setCompressibleMimeType(getMimeTypes(compression));
StringUtils.arrayToCommaDelimitedString(compression.getMimeTypes()));
if (this.compression.getExcludedUserAgents() != null) { if (this.compression.getExcludedUserAgents() != null) {
protocol.setNoCompressionUserAgents(StringUtils.arrayToCommaDelimitedString( protocol.setNoCompressionUserAgents(getExcludedUserAgents());
this.compression.getExcludedUserAgents()));
} }
} }
private int getMinResponseSize(Compression compression) {
return (int) compression.getMinResponseSize().toBytes();
}
private String getMimeTypes(Compression compression) {
return StringUtils.arrayToCommaDelimitedString(compression.getMimeTypes());
}
private String getExcludedUserAgents() {
return StringUtils
.arrayToCommaDelimitedString(this.compression.getExcludedUserAgents());
}
} }

@ -403,9 +403,9 @@ public class RestTemplateBuilderTests {
RestTemplateCustomizer customizer2 = mock(RestTemplateCustomizer.class); RestTemplateCustomizer customizer2 = mock(RestTemplateCustomizer.class);
RestTemplate template = this.builder.customizers(customizer1) RestTemplate template = this.builder.customizers(customizer1)
.additionalCustomizers(customizer2).build(); .additionalCustomizers(customizer2).build();
InOrder inOrder = inOrder(customizer1, customizer2); InOrder ordered = inOrder(customizer1, customizer2);
inOrder.verify(customizer1).customize(template); ordered.verify(customizer1).customize(template);
inOrder.verify(customizer2).customize(template); ordered.verify(customizer2).customize(template);
} }
@Test @Test

@ -306,12 +306,12 @@ public class JettyServletWebServerFactoryTests
contexts.iterator().next().addEventListener(new ServletContextListener() { contexts.iterator().next().addEventListener(new ServletContextListener() {
@Override @Override
public void contextInitialized(ServletContextEvent sce) { public void contextInitialized(ServletContextEvent event) {
throw new RuntimeException(); throw new RuntimeException();
} }
@Override @Override
public void contextDestroyed(ServletContextEvent sce) { public void contextDestroyed(ServletContextEvent event) {
} }
}); });

Loading…
Cancel
Save