Skip to content

Commit 0644a79

Browse files
committed
Repackage output capture and always use extension declaratively
Closes spring-projectsgh-17029
1 parent d11d5ce commit 0644a79

File tree

69 files changed

+584
-657
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

69 files changed

+584
-657
lines changed

spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/export/prometheus/PrometheusMetricsExportAutoConfigurationTests.java

+8-11
Original file line numberDiff line numberDiff line change
@@ -21,16 +21,16 @@
2121
import io.micrometer.prometheus.PrometheusMeterRegistry;
2222
import io.prometheus.client.CollectorRegistry;
2323
import org.junit.jupiter.api.Test;
24-
import org.junit.jupiter.api.extension.RegisterExtension;
24+
import org.junit.jupiter.api.extension.ExtendWith;
2525

2626
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration;
2727
import org.springframework.boot.actuate.metrics.export.prometheus.PrometheusPushGatewayManager;
2828
import org.springframework.boot.actuate.metrics.export.prometheus.PrometheusScrapeEndpoint;
2929
import org.springframework.boot.autoconfigure.AutoConfigurations;
3030
import org.springframework.boot.test.context.assertj.AssertableApplicationContext;
3131
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
32-
import org.springframework.boot.test.extension.CapturedOutput;
33-
import org.springframework.boot.test.extension.OutputExtension;
32+
import org.springframework.boot.test.system.CapturedOutput;
33+
import org.springframework.boot.test.system.OutputCaptureExtension;
3434
import org.springframework.context.annotation.Bean;
3535
import org.springframework.context.annotation.Configuration;
3636
import org.springframework.context.annotation.Import;
@@ -43,11 +43,9 @@
4343
*
4444
* @author Andy Wilkinson
4545
*/
46+
@ExtendWith(OutputCaptureExtension.class)
4647
public class PrometheusMetricsExportAutoConfigurationTests {
4748

48-
@RegisterExtension
49-
CapturedOutput output = OutputExtension.capture();
50-
5149
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
5250
.withConfiguration(AutoConfigurations
5351
.of(PrometheusMetricsExportAutoConfiguration.class));
@@ -152,31 +150,30 @@ public void allowsCustomScrapeEndpointToBeUsed() {
152150
}
153151

154152
@Test
155-
public void withPushGatewayEnabled() {
153+
public void withPushGatewayEnabled(CapturedOutput capturedOutput) {
156154
this.contextRunner
157155
.withConfiguration(
158156
AutoConfigurations.of(ManagementContextAutoConfiguration.class))
159157
.withPropertyValues(
160158
"management.metrics.export.prometheus.pushgateway.enabled=true")
161159
.withUserConfiguration(BaseConfiguration.class).run((context) -> {
162-
assertThat(this.output.toString())
160+
assertThat(capturedOutput)
163161
.doesNotContain("Invalid PushGateway base url");
164162
hasGatewayURL(context, "http://localhost:9091/metrics/job/");
165163
});
166164
}
167165

168166
@Test
169167
@Deprecated
170-
public void withCustomLegacyPushGatewayURL() {
168+
public void withCustomLegacyPushGatewayURL(CapturedOutput capturedOutput) {
171169
this.contextRunner
172170
.withConfiguration(
173171
AutoConfigurations.of(ManagementContextAutoConfiguration.class))
174172
.withPropertyValues(
175173
"management.metrics.export.prometheus.pushgateway.enabled=true",
176174
"management.metrics.export.prometheus.pushgateway.base-url=localhost:9090")
177175
.withUserConfiguration(BaseConfiguration.class).run((context) -> {
178-
assertThat(this.output.toString())
179-
.contains("Invalid PushGateway base url")
176+
assertThat(capturedOutput).contains("Invalid PushGateway base url")
180177
.contains("localhost:9090");
181178
hasGatewayURL(context, "http://localhost:9090/metrics/job/");
182179
});

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

+8-10
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
import io.micrometer.core.instrument.Timer;
2121
import io.micrometer.core.instrument.distribution.HistogramSnapshot;
2222
import org.junit.jupiter.api.Test;
23-
import org.junit.jupiter.api.extension.RegisterExtension;
23+
import org.junit.jupiter.api.extension.ExtendWith;
2424

2525
import org.springframework.boot.actuate.autoconfigure.metrics.test.MetricsRun;
2626
import org.springframework.boot.actuate.metrics.web.client.DefaultRestTemplateExchangeTagsProvider;
@@ -29,8 +29,8 @@
2929
import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration;
3030
import org.springframework.boot.test.context.assertj.AssertableApplicationContext;
3131
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
32-
import org.springframework.boot.test.extension.CapturedOutput;
33-
import org.springframework.boot.test.extension.OutputExtension;
32+
import org.springframework.boot.test.system.CapturedOutput;
33+
import org.springframework.boot.test.system.OutputCaptureExtension;
3434
import org.springframework.boot.web.client.RestTemplateBuilder;
3535
import org.springframework.http.HttpStatus;
3636
import org.springframework.test.web.client.MockRestServiceServer;
@@ -47,16 +47,14 @@
4747
* @author Jon Schneider
4848
* @author Raheela Aslam
4949
*/
50+
@ExtendWith(OutputCaptureExtension.class)
5051
public class RestTemplateMetricsConfigurationTests {
5152

5253
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
5354
.with(MetricsRun.simple())
5455
.withConfiguration(AutoConfigurations.of(RestTemplateAutoConfiguration.class,
5556
HttpClientMetricsAutoConfiguration.class));
5657

57-
@RegisterExtension
58-
CapturedOutput output = OutputExtension.capture();
59-
6058
@Test
6159
public void restTemplateCreatedWithBuilderIsInstrumented() {
6260
this.contextRunner.run((context) -> {
@@ -78,26 +76,26 @@ public void restTemplateCanBeCustomizedManually() {
7876
}
7977

8078
@Test
81-
public void afterMaxUrisReachedFurtherUrisAreDenied() {
79+
public void afterMaxUrisReachedFurtherUrisAreDenied(CapturedOutput capturedOutput) {
8280
this.contextRunner
8381
.withPropertyValues("management.metrics.web.client.max-uri-tags=2")
8482
.run((context) -> {
8583
MeterRegistry registry = getInitializedMeterRegistry(context);
8684
assertThat(registry.get("http.client.requests").meters()).hasSize(2);
87-
assertThat(this.output.toString()).contains(
85+
assertThat(capturedOutput).contains(
8886
"Reached the maximum number of URI tags for 'http.client.requests'.")
8987
.contains("Are you using 'uriVariables'?");
9088
});
9189
}
9290

9391
@Test
94-
public void shouldNotDenyNorLogIfMaxUrisIsNotReached() {
92+
public void shouldNotDenyNorLogIfMaxUrisIsNotReached(CapturedOutput capturedOutput) {
9593
this.contextRunner
9694
.withPropertyValues("management.metrics.web.client.max-uri-tags=5")
9795
.run((context) -> {
9896
MeterRegistry registry = getInitializedMeterRegistry(context);
9997
assertThat(registry.get("http.client.requests").meters()).hasSize(3);
100-
assertThat(this.output.toString()).doesNotContain(
98+
assertThat(capturedOutput).doesNotContain(
10199
"Reached the maximum number of URI tags for 'http.client.requests'.")
102100
.doesNotContain("Are you using 'uriVariables'?");
103101
});

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

+8-10
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
import io.micrometer.core.instrument.Timer;
2323
import io.micrometer.core.instrument.distribution.HistogramSnapshot;
2424
import org.junit.jupiter.api.Test;
25-
import org.junit.jupiter.api.extension.RegisterExtension;
25+
import org.junit.jupiter.api.extension.ExtendWith;
2626
import reactor.core.publisher.Mono;
2727

2828
import org.springframework.boot.actuate.autoconfigure.metrics.test.MetricsRun;
@@ -31,8 +31,8 @@
3131
import org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration;
3232
import org.springframework.boot.test.context.assertj.AssertableApplicationContext;
3333
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
34-
import org.springframework.boot.test.extension.CapturedOutput;
35-
import org.springframework.boot.test.extension.OutputExtension;
34+
import org.springframework.boot.test.system.CapturedOutput;
35+
import org.springframework.boot.test.system.OutputCaptureExtension;
3636
import org.springframework.context.annotation.Bean;
3737
import org.springframework.context.annotation.Configuration;
3838
import org.springframework.http.HttpStatus;
@@ -51,16 +51,14 @@
5151
* @author Brian Clozel
5252
* @author Stephane Nicoll
5353
*/
54+
@ExtendWith(OutputCaptureExtension.class)
5455
public class WebClientMetricsConfigurationTests {
5556

5657
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
5758
.with(MetricsRun.simple())
5859
.withConfiguration(AutoConfigurations.of(WebClientAutoConfiguration.class,
5960
HttpClientMetricsAutoConfiguration.class));
6061

61-
@RegisterExtension
62-
CapturedOutput output = OutputExtension.capture();
63-
6462
@Test
6563
public void webClientCreatedWithBuilderIsInstrumented() {
6664
this.contextRunner.run((context) -> {
@@ -79,26 +77,26 @@ public void shouldNotOverrideCustomTagsProvider() {
7977
}
8078

8179
@Test
82-
public void afterMaxUrisReachedFurtherUrisAreDenied() {
80+
public void afterMaxUrisReachedFurtherUrisAreDenied(CapturedOutput capturedOutput) {
8381
this.contextRunner
8482
.withPropertyValues("management.metrics.web.client.max-uri-tags=2")
8583
.run((context) -> {
8684
MeterRegistry registry = getInitializedMeterRegistry(context);
8785
assertThat(registry.get("http.client.requests").meters()).hasSize(2);
88-
assertThat(this.output.toString()).contains(
86+
assertThat(capturedOutput).contains(
8987
"Reached the maximum number of URI tags for 'http.client.requests'.")
9088
.contains("Are you using 'uriVariables'?");
9189
});
9290
}
9391

9492
@Test
95-
public void shouldNotDenyNorLogIfMaxUrisIsNotReached() {
93+
public void shouldNotDenyNorLogIfMaxUrisIsNotReached(CapturedOutput capturedOutput) {
9694
this.contextRunner
9795
.withPropertyValues("management.metrics.web.client.max-uri-tags=5")
9896
.run((context) -> {
9997
MeterRegistry registry = getInitializedMeterRegistry(context);
10098
assertThat(registry.get("http.client.requests").meters()).hasSize(3);
101-
assertThat(this.output.toString()).doesNotContain(
99+
assertThat(capturedOutput).doesNotContain(
102100
"Reached the maximum number of URI tags for 'http.client.requests'.")
103101
.doesNotContain("Are you using 'uriVariables'?");
104102
});

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

+8-10
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818

1919
import io.micrometer.core.instrument.MeterRegistry;
2020
import org.junit.jupiter.api.Test;
21-
import org.junit.jupiter.api.extension.RegisterExtension;
21+
import org.junit.jupiter.api.extension.ExtendWith;
2222

2323
import org.springframework.boot.actuate.autoconfigure.metrics.test.MetricsRun;
2424
import org.springframework.boot.actuate.autoconfigure.metrics.web.TestController;
@@ -29,8 +29,8 @@
2929
import org.springframework.boot.autoconfigure.web.reactive.WebFluxAutoConfiguration;
3030
import org.springframework.boot.test.context.assertj.AssertableReactiveWebApplicationContext;
3131
import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner;
32-
import org.springframework.boot.test.extension.CapturedOutput;
33-
import org.springframework.boot.test.extension.OutputExtension;
32+
import org.springframework.boot.test.system.CapturedOutput;
33+
import org.springframework.boot.test.system.OutputCaptureExtension;
3434
import org.springframework.context.annotation.Bean;
3535
import org.springframework.context.annotation.Configuration;
3636
import org.springframework.test.web.reactive.server.WebTestClient;
@@ -44,15 +44,13 @@
4444
* @author Brian Clozel
4545
* @author Dmytro Nosan
4646
*/
47+
@ExtendWith(OutputCaptureExtension.class)
4748
public class WebFluxMetricsAutoConfigurationTests {
4849

4950
private ReactiveWebApplicationContextRunner contextRunner = new ReactiveWebApplicationContextRunner()
5051
.with(MetricsRun.simple()).withConfiguration(
5152
AutoConfigurations.of(WebFluxMetricsAutoConfiguration.class));
5253

53-
@RegisterExtension
54-
CapturedOutput output = OutputExtension.capture();
55-
5654
@Test
5755
public void shouldProvideWebFluxMetricsBeans() {
5856
this.contextRunner.run((context) -> {
@@ -69,30 +67,30 @@ public void shouldNotOverrideCustomTagsProvider() {
6967
}
7068

7169
@Test
72-
public void afterMaxUrisReachedFurtherUrisAreDenied() {
70+
public void afterMaxUrisReachedFurtherUrisAreDenied(CapturedOutput capturedOutput) {
7371
this.contextRunner
7472
.withConfiguration(AutoConfigurations.of(WebFluxAutoConfiguration.class))
7573
.withUserConfiguration(TestController.class)
7674
.withPropertyValues("management.metrics.web.server.max-uri-tags=2")
7775
.run((context) -> {
7876
MeterRegistry registry = getInitializedMeterRegistry(context);
7977
assertThat(registry.get("http.server.requests").meters()).hasSize(2);
80-
assertThat(this.output.toString())
78+
assertThat(capturedOutput)
8179
.contains("Reached the maximum number of URI tags "
8280
+ "for 'http.server.requests'");
8381
});
8482
}
8583

8684
@Test
87-
public void shouldNotDenyNorLogIfMaxUrisIsNotReached() {
85+
public void shouldNotDenyNorLogIfMaxUrisIsNotReached(CapturedOutput capturedOutput) {
8886
this.contextRunner
8987
.withConfiguration(AutoConfigurations.of(WebFluxAutoConfiguration.class))
9088
.withUserConfiguration(TestController.class)
9189
.withPropertyValues("management.metrics.web.server.max-uri-tags=5")
9290
.run((context) -> {
9391
MeterRegistry registry = getInitializedMeterRegistry(context);
9492
assertThat(registry.get("http.server.requests").meters()).hasSize(3);
95-
assertThat(this.output.toString()).doesNotContain(
93+
assertThat(capturedOutput).doesNotContain(
9694
"Reached the maximum number of URI tags for 'http.server.requests'");
9795
});
9896
}

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

+8-10
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
import io.micrometer.core.instrument.Timer;
3030
import io.micrometer.core.instrument.distribution.HistogramSnapshot;
3131
import org.junit.jupiter.api.Test;
32-
import org.junit.jupiter.api.extension.RegisterExtension;
32+
import org.junit.jupiter.api.extension.ExtendWith;
3333

3434
import org.springframework.boot.actuate.autoconfigure.metrics.MetricsAutoConfiguration;
3535
import org.springframework.boot.actuate.autoconfigure.metrics.test.MetricsRun;
@@ -42,8 +42,8 @@
4242
import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration;
4343
import org.springframework.boot.test.context.assertj.AssertableWebApplicationContext;
4444
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
45-
import org.springframework.boot.test.extension.CapturedOutput;
46-
import org.springframework.boot.test.extension.OutputExtension;
45+
import org.springframework.boot.test.system.CapturedOutput;
46+
import org.springframework.boot.test.system.OutputCaptureExtension;
4747
import org.springframework.boot.web.servlet.FilterRegistrationBean;
4848
import org.springframework.context.annotation.Bean;
4949
import org.springframework.context.annotation.Configuration;
@@ -63,15 +63,13 @@
6363
* @author Dmytro Nosan
6464
* @author Tadaya Tsuyukubo
6565
*/
66+
@ExtendWith(OutputCaptureExtension.class)
6667
public class WebMvcMetricsAutoConfigurationTests {
6768

6869
private WebApplicationContextRunner contextRunner = new WebApplicationContextRunner()
6970
.with(MetricsRun.simple()).withConfiguration(
7071
AutoConfigurations.of(WebMvcMetricsAutoConfiguration.class));
7172

72-
@RegisterExtension
73-
CapturedOutput output = OutputExtension.capture();
74-
7573
@Test
7674
public void backsOffWhenMeterRegistryIsMissing() {
7775
new WebApplicationContextRunner()
@@ -112,30 +110,30 @@ public void filterRegistrationHasExpectedDispatcherTypesAndOrder() {
112110
}
113111

114112
@Test
115-
public void afterMaxUrisReachedFurtherUrisAreDenied() {
113+
public void afterMaxUrisReachedFurtherUrisAreDenied(CapturedOutput capturedOutput) {
116114
this.contextRunner.withUserConfiguration(TestController.class)
117115
.withConfiguration(AutoConfigurations.of(MetricsAutoConfiguration.class,
118116
WebMvcAutoConfiguration.class))
119117
.withPropertyValues("management.metrics.web.server.max-uri-tags=2")
120118
.run((context) -> {
121119
MeterRegistry registry = getInitializedMeterRegistry(context);
122120
assertThat(registry.get("http.server.requests").meters()).hasSize(2);
123-
assertThat(this.output.toString())
121+
assertThat(capturedOutput)
124122
.contains("Reached the maximum number of URI tags "
125123
+ "for 'http.server.requests'");
126124
});
127125
}
128126

129127
@Test
130-
public void shouldNotDenyNorLogIfMaxUrisIsNotReached() {
128+
public void shouldNotDenyNorLogIfMaxUrisIsNotReached(CapturedOutput capturedOutput) {
131129
this.contextRunner.withUserConfiguration(TestController.class)
132130
.withConfiguration(AutoConfigurations.of(MetricsAutoConfiguration.class,
133131
WebMvcAutoConfiguration.class))
134132
.withPropertyValues("management.metrics.web.server.max-uri-tags=5")
135133
.run((context) -> {
136134
MeterRegistry registry = getInitializedMeterRegistry(context);
137135
assertThat(registry.get("http.server.requests").meters()).hasSize(3);
138-
assertThat(this.output.toString())
136+
assertThat(capturedOutput)
139137
.doesNotContain("Reached the maximum number of URI tags "
140138
+ "for 'http.server.requests'");
141139
});

0 commit comments

Comments
 (0)