Skip to content

Commit 3a7406f

Browse files
committed
Merge branch '2.0.x' into 2.1.x
2 parents 84a064a + 0741c90 commit 3a7406f

File tree

22 files changed

+166
-109
lines changed

22 files changed

+166
-109
lines changed

spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/reactive/CloudFoundryReactiveHealthEndpointWebExtensionTests.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package org.springframework.boot.actuate.autoconfigure.cloudfoundry.reactive;
1818

19+
import java.time.Duration;
20+
1921
import org.junit.Test;
2022

2123
import org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration;
@@ -63,7 +65,8 @@ public void healthDetailsAlwaysPresent() {
6365
this.contextRunner.run((context) -> {
6466
CloudFoundryReactiveHealthEndpointWebExtension extension = context
6567
.getBean(CloudFoundryReactiveHealthEndpointWebExtension.class);
66-
assertThat(extension.health().block().getBody().getDetails()).isNotEmpty();
68+
assertThat(extension.health().block(Duration.ofSeconds(30)).getBody()
69+
.getDetails()).isNotEmpty();
6770
});
6871
}
6972

spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/reactive/ReactiveCloudFoundryActuatorAutoConfigurationTests.java

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package org.springframework.boot.actuate.autoconfigure.cloudfoundry.reactive;
1818

19+
import java.time.Duration;
1920
import java.util.Arrays;
2021
import java.util.Collection;
2122
import java.util.List;
@@ -198,16 +199,17 @@ public void cloudFoundryPathsIgnoredBySpringSecurity() {
198199
Boolean cfRequestMatches = filters.get(0)
199200
.matches(MockServerWebExchange.from(MockServerHttpRequest
200201
.get("/cloudfoundryapplication/my-path").build()))
201-
.block();
202+
.block(Duration.ofSeconds(30));
202203
Boolean otherRequestMatches = filters.get(0)
203204
.matches(MockServerWebExchange.from(MockServerHttpRequest
204205
.get("/some-other-path").build()))
205-
.block();
206+
.block(Duration.ofSeconds(30));
206207
assertThat(cfRequestMatches).isTrue();
207208
assertThat(otherRequestMatches).isFalse();
208-
otherRequestMatches = filters.get(1).matches(MockServerWebExchange
209-
.from(MockServerHttpRequest.get("/some-other-path").build()))
210-
.block();
209+
otherRequestMatches = filters.get(1)
210+
.matches(MockServerWebExchange.from(MockServerHttpRequest
211+
.get("/some-other-path").build()))
212+
.block(Duration.ofSeconds(30));
211213
assertThat(otherRequestMatches).isTrue();
212214
});
213215

@@ -312,7 +314,7 @@ public void skipSslValidation() {
312314
WebClient webClient = (WebClient) ReflectionTestUtils
313315
.getField(interceptorSecurityService, "webClient");
314316
webClient.get().uri("https://self-signed.badssl.com/").exchange()
315-
.block();
317+
.block(Duration.ofSeconds(30));
316318
});
317319
}
318320

@@ -334,9 +336,9 @@ public void sslValidationNotSkippedByDefault() {
334336
WebClient webClient = (WebClient) ReflectionTestUtils
335337
.getField(interceptorSecurityService, "webClient");
336338
assertThatExceptionOfType(RuntimeException.class)
337-
.isThrownBy(
338-
webClient.get().uri("https://self-signed.badssl.com/")
339-
.exchange()::block)
339+
.isThrownBy(() -> webClient.get()
340+
.uri("https://self-signed.badssl.com/").exchange()
341+
.block(Duration.ofSeconds(30)))
340342
.withCauseInstanceOf(SSLException.class);
341343
});
342344
}

spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/health/ReactiveHealthEndpointWebExtensionTests.java

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package org.springframework.boot.actuate.autoconfigure.health;
1818

1919
import java.security.Principal;
20+
import java.time.Duration;
2021

2122
import org.junit.Test;
2223
import reactor.core.publisher.Mono;
@@ -98,8 +99,8 @@ public void regularAndReactiveHealthIndicatorsMatch() {
9899
SecurityContext securityContext = mock(SecurityContext.class);
99100
given(securityContext.getPrincipal())
100101
.willReturn(mock(Principal.class));
101-
Health extensionHealth = extension.health(securityContext).block()
102-
.getBody();
102+
Health extensionHealth = extension.health(securityContext)
103+
.block(Duration.ofSeconds(30)).getBody();
103104
assertThat(endpointHealth.getDetails())
104105
.containsOnlyKeys("application", "first", "second");
105106
assertThat(extensionHealth.getDetails())
@@ -112,8 +113,8 @@ public void unauthenticatedUsersAreNotShownDetailsByDefault() {
112113
this.contextRunner.run((context) -> {
113114
ReactiveHealthEndpointWebExtension extension = context
114115
.getBean(ReactiveHealthEndpointWebExtension.class);
115-
assertThat(extension.health(mock(SecurityContext.class)).block().getBody()
116-
.getDetails()).isEmpty();
116+
assertThat(extension.health(mock(SecurityContext.class))
117+
.block(Duration.ofSeconds(30)).getBody().getDetails()).isEmpty();
117118
});
118119
}
119120

@@ -124,8 +125,8 @@ public void authenticatedUsersAreNotShownDetailsByDefault() {
124125
.getBean(ReactiveHealthEndpointWebExtension.class);
125126
SecurityContext securityContext = mock(SecurityContext.class);
126127
given(securityContext.getPrincipal()).willReturn(mock(Principal.class));
127-
assertThat(extension.health(securityContext).block().getBody().getDetails())
128-
.isEmpty();
128+
assertThat(extension.health(securityContext).block(Duration.ofSeconds(30))
129+
.getBody().getDetails()).isEmpty();
129130
});
130131
}
131132

@@ -140,8 +141,9 @@ public void authenticatedUsersWhenAuthorizedCanBeShownDetails() {
140141
SecurityContext securityContext = mock(SecurityContext.class);
141142
given(securityContext.getPrincipal())
142143
.willReturn(mock(Principal.class));
143-
assertThat(extension.health(securityContext).block().getBody()
144-
.getDetails()).isNotEmpty();
144+
assertThat(extension.health(securityContext)
145+
.block(Duration.ofSeconds(30)).getBody().getDetails())
146+
.isNotEmpty();
145147
});
146148
}
147149

@@ -152,8 +154,8 @@ public void unauthenticatedUsersCanBeShownDetails() {
152154
.run((context) -> {
153155
ReactiveHealthEndpointWebExtension extension = context
154156
.getBean(ReactiveHealthEndpointWebExtension.class);
155-
assertThat(extension.health(null).block().getBody().getDetails())
156-
.isNotEmpty();
157+
assertThat(extension.health(null).block(Duration.ofSeconds(30))
158+
.getBody().getDetails()).isNotEmpty();
157159
});
158160
}
159161

@@ -165,8 +167,9 @@ public void detailsCanBeHiddenFromAuthenticatedUsers() {
165167
ReactiveHealthEndpointWebExtension extension = context
166168
.getBean(ReactiveHealthEndpointWebExtension.class);
167169
SecurityContext securityContext = mock(SecurityContext.class);
168-
assertThat(extension.health(securityContext).block().getBody()
169-
.getDetails()).isEmpty();
170+
assertThat(extension.health(securityContext)
171+
.block(Duration.ofSeconds(30)).getBody().getDetails())
172+
.isEmpty();
170173
});
171174
}
172175

@@ -181,8 +184,9 @@ public void detailsCanBeHiddenFromUnauthorizedUsers() {
181184
given(securityContext.getPrincipal())
182185
.willReturn(mock(Principal.class));
183186
given(securityContext.isUserInRole("ACTUATOR")).willReturn(false);
184-
assertThat(extension.health(securityContext).block().getBody()
185-
.getDetails()).isEmpty();
187+
assertThat(extension.health(securityContext)
188+
.block(Duration.ofSeconds(30)).getBody().getDetails())
189+
.isEmpty();
186190
});
187191
}
188192

@@ -197,8 +201,9 @@ public void detailsCanBeShownToAuthorizedUsers() {
197201
given(securityContext.getPrincipal())
198202
.willReturn(mock(Principal.class));
199203
given(securityContext.isUserInRole("ACTUATOR")).willReturn(true);
200-
assertThat(extension.health(securityContext).block().getBody()
201-
.getDetails()).isNotEmpty();
204+
assertThat(extension.health(securityContext)
205+
.block(Duration.ofSeconds(30)).getBody().getDetails())
206+
.isNotEmpty();
202207
});
203208
}
204209

@@ -213,8 +218,9 @@ public void roleCanBeCustomized() {
213218
given(securityContext.getPrincipal())
214219
.willReturn(mock(Principal.class));
215220
given(securityContext.isUserInRole("ADMIN")).willReturn(true);
216-
assertThat(extension.health(securityContext).block().getBody()
217-
.getDetails()).isNotEmpty();
221+
assertThat(extension.health(securityContext)
222+
.block(Duration.ofSeconds(30)).getBody().getDetails())
223+
.isNotEmpty();
218224
});
219225
}
220226

@@ -227,11 +233,12 @@ public void registryCanBeAltered() {
227233
.getBean(ReactiveHealthIndicatorRegistry.class);
228234
ReactiveHealthEndpointWebExtension extension = context
229235
.getBean(ReactiveHealthEndpointWebExtension.class);
230-
assertThat(extension.health(null).block().getBody().getDetails())
231-
.containsOnlyKeys("application", "first", "second");
236+
assertThat(extension.health(null).block(Duration.ofSeconds(30))
237+
.getBody().getDetails()).containsOnlyKeys("application",
238+
"first", "second");
232239
assertThat(registry.unregister("second")).isNotNull();
233-
assertThat(extension.health(null).block().getBody().getDetails())
234-
.containsKeys("application", "first");
240+
assertThat(extension.health(null).block(Duration.ofSeconds(30))
241+
.getBody().getDetails()).containsKeys("application", "first");
235242
});
236243
}
237244

spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/web/client/WebClientMetricsConfigurationTests.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@
1616

1717
package org.springframework.boot.actuate.autoconfigure.metrics.web.client;
1818

19+
import java.time.Duration;
20+
1921
import io.micrometer.core.instrument.MeterRegistry;
2022
import org.junit.Rule;
2123
import org.junit.Test;
@@ -106,7 +108,8 @@ private MeterRegistry getInitializedMeterRegistry(
106108
WebClient webClient = mockWebClient(context.getBean(WebClient.Builder.class));
107109
MeterRegistry registry = context.getBean(MeterRegistry.class);
108110
for (int i = 0; i < 3; i++) {
109-
webClient.get().uri("http://example.org/projects/" + i).exchange().block();
111+
webClient.get().uri("http://example.org/projects/" + i).exchange()
112+
.block(Duration.ofSeconds(30));
110113
}
111114
return registry;
112115
}
@@ -115,7 +118,7 @@ private void validateWebClient(WebClient.Builder builder, MeterRegistry registry
115118
WebClient webClient = mockWebClient(builder);
116119
assertThat(registry.find("http.client.requests").meter()).isNull();
117120
webClient.get().uri("http://example.org/projects/{project}", "spring-boot")
118-
.exchange().block();
121+
.exchange().block(Duration.ofSeconds(30));
119122
assertThat(registry.find("http.client.requests")
120123
.tags("uri", "/projects/{project}").meter()).isNotNull();
121124
}

spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/security/reactive/EndpointRequestTests.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package org.springframework.boot.actuate.autoconfigure.security.reactive;
1818

19+
import java.time.Duration;
1920
import java.util.ArrayList;
2021
import java.util.List;
2122

@@ -250,8 +251,8 @@ void matches(String path) {
250251
}
251252

252253
private void matches(ServerWebExchange exchange) {
253-
assertThat(this.matcher.matches(exchange).block().isMatch())
254-
.as("Matches " + getRequestPath(exchange)).isTrue();
254+
assertThat(this.matcher.matches(exchange).block(Duration.ofSeconds(30))
255+
.isMatch()).as("Matches " + getRequestPath(exchange)).isTrue();
255256
}
256257

257258
void doesNotMatch(String path) {
@@ -262,8 +263,9 @@ void doesNotMatch(String path) {
262263
}
263264

264265
private void doesNotMatch(ServerWebExchange exchange) {
265-
assertThat(this.matcher.matches(exchange).block().isMatch())
266-
.as("Does not match " + getRequestPath(exchange)).isFalse();
266+
assertThat(this.matcher.matches(exchange).block(Duration.ofSeconds(30))
267+
.isMatch()).as("Does not match " + getRequestPath(exchange))
268+
.isFalse();
267269
}
268270

269271
private TestHttpWebHandlerAdapter webHandler() {

spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/security/reactive/ReactiveManagementWebSecurityAutoConfigurationTests.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package org.springframework.boot.actuate.autoconfigure.security.reactive;
1818

1919
import java.net.URI;
20+
import java.time.Duration;
2021
import java.util.Collections;
2122
import java.util.List;
2223

@@ -139,7 +140,8 @@ private ServerWebExchange performFilter(
139140
ServerWebExchange exchange = webHandler(context).createExchange(
140141
MockServerHttpRequest.get(path).build(), new MockServerHttpResponse());
141142
WebFilterChainProxy proxy = context.getBean(WebFilterChainProxy.class);
142-
proxy.filter(exchange, (serverWebExchange) -> Mono.empty()).block();
143+
proxy.filter(exchange, (serverWebExchange) -> Mono.empty())
144+
.block(Duration.ofSeconds(30));
143145
return exchange;
144146
}
145147

spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/couchbase/CouchbaseReactiveHealthIndicatorTests.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
package org.springframework.boot.actuate.couchbase;
1717

1818
import java.net.InetSocketAddress;
19+
import java.time.Duration;
1920
import java.util.Arrays;
2021
import java.util.List;
2122
import java.util.Map;
@@ -52,7 +53,7 @@ ServiceType.BINARY, LifecycleState.CONNECTED, new InetSocketAddress(0),
5253
DiagnosticsReport diagnostics = new DiagnosticsReport(endpoints, "test-sdk",
5354
"test-id", null);
5455
given(cluster.diagnostics()).willReturn(diagnostics);
55-
Health health = healthIndicator.health().block();
56+
Health health = healthIndicator.health().block(Duration.ofSeconds(30));
5657
assertThat(health.getStatus()).isEqualTo(Status.UP);
5758
assertThat(health.getDetails()).containsEntry("sdk", "test-sdk");
5859
assertThat(health.getDetails()).containsKey("endpoints");
@@ -77,7 +78,7 @@ public void couchbaseClusterIsDown() {
7778
DiagnosticsReport diagnostics = new DiagnosticsReport(endpoints, "test-sdk",
7879
"test-id", null);
7980
given(cluster.diagnostics()).willReturn(diagnostics);
80-
Health health = healthIndicator.health().block();
81+
Health health = healthIndicator.health().block(Duration.ofSeconds(30));
8182
assertThat(health.getStatus()).isEqualTo(Status.DOWN);
8283
assertThat(health.getDetails()).containsEntry("sdk", "test-sdk");
8384
assertThat(health.getDetails()).containsKey("endpoints");

spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/endpoint/web/reactive/ControllerEndpointHandlerMappingTests.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package org.springframework.boot.actuate.endpoint.web.reactive;
1818

19+
import java.time.Duration;
1920
import java.util.Arrays;
2021

2122
import org.junit.Test;
@@ -95,7 +96,8 @@ public void mappingNarrowedToMethod() throws Exception {
9596

9697
private Object getHandler(ControllerEndpointHandlerMapping mapping, HttpMethod method,
9798
String requestURI) {
98-
return mapping.getHandler(exchange(method, requestURI)).block();
99+
return mapping.getHandler(exchange(method, requestURI))
100+
.block(Duration.ofSeconds(30));
99101
}
100102

101103
private ControllerEndpointHandlerMapping createMapping(String prefix,

spring-boot-project/spring-boot-actuator/src/test/java/org/springframework/boot/actuate/metrics/web/reactive/client/MetricsWebClientFilterFunctionTests.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public void filterShouldRecordTimer() {
7373
ClientRequest request = ClientRequest.create(HttpMethod.GET,
7474
URI.create("http://example.com/projects/spring-boot")).build();
7575
given(this.response.statusCode()).willReturn(HttpStatus.OK);
76-
this.filterFunction.filter(request, this.exchange).block();
76+
this.filterFunction.filter(request, this.exchange).block(Duration.ofSeconds(30));
7777
assertThat(this.registry.get("http.client.requests")
7878
.tags("method", "GET", "uri", "/projects/spring-boot", "status", "200")
7979
.timer().count()).isEqualTo(1);
@@ -86,7 +86,7 @@ public void filterWhenUriTemplatePresentShouldRecordTimer() {
8686
URI.create("http://example.com/projects/spring-boot"))
8787
.attribute(URI_TEMPLATE_ATTRIBUTE, "/projects/{project}").build();
8888
given(this.response.statusCode()).willReturn(HttpStatus.OK);
89-
this.filterFunction.filter(request, this.exchange).block();
89+
this.filterFunction.filter(request, this.exchange).block(Duration.ofSeconds(30));
9090
assertThat(this.registry.get("http.client.requests")
9191
.tags("method", "GET", "uri", "/projects/{project}", "status", "200")
9292
.timer().count()).isEqualTo(1);
@@ -98,7 +98,8 @@ public void filterWhenIoExceptionThrownShouldRecordTimer() {
9898
URI.create("http://example.com/projects/spring-boot")).build();
9999
ExchangeFunction errorExchange = (r) -> Mono.error(new IOException());
100100
this.filterFunction.filter(request, errorExchange)
101-
.onErrorResume(IOException.class, (t) -> Mono.empty()).block();
101+
.onErrorResume(IOException.class, (t) -> Mono.empty())
102+
.block(Duration.ofSeconds(30));
102103
assertThat(
103104
this.registry
104105
.get("http.client.requests").tags("method", "GET", "uri",
@@ -113,7 +114,7 @@ public void filterWhenExceptionThrownShouldRecordTimer() {
113114
ExchangeFunction exchange = (r) -> Mono.error(new IllegalArgumentException());
114115
this.filterFunction.filter(request, exchange)
115116
.onErrorResume(IllegalArgumentException.class, (t) -> Mono.empty())
116-
.block();
117+
.block(Duration.ofSeconds(30));
117118
assertThat(this.registry
118119
.get("http.client.requests").tags("method", "GET", "uri",
119120
"/projects/spring-boot", "status", "CLIENT_ERROR")
@@ -128,7 +129,7 @@ public void filterWhenExceptionAndRetryShouldNotCumulateRecordTime() {
128129
.delaySubscription(Duration.ofMillis(300)).cast(ClientResponse.class);
129130
this.filterFunction.filter(request, exchange).retry(1)
130131
.onErrorResume(IllegalArgumentException.class, (t) -> Mono.empty())
131-
.block();
132+
.block(Duration.ofSeconds(30));
132133
Timer timer = this.registry.get("http.client.requests").tags("method", "GET",
133134
"uri", "/projects/spring-boot", "status", "CLIENT_ERROR").timer();
134135
assertThat(timer.count()).isEqualTo(2);

0 commit comments

Comments
 (0)