Skip to content

Commit b1d159b

Browse files
committed
Merge pull request #14975 from Christoph Dreis
* gh-14975: Use MeterRegistry.isClosed() for tests
2 parents 974f90c + 62ca9e4 commit b1d159b

10 files changed

+39
-230
lines changed

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

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -16,24 +16,18 @@
1616

1717
package org.springframework.boot.actuate.autoconfigure.metrics.export.atlas;
1818

19-
import java.util.Map;
20-
2119
import com.netflix.spectator.atlas.AtlasConfig;
2220
import io.micrometer.atlas.AtlasMeterRegistry;
2321
import io.micrometer.core.instrument.Clock;
2422
import org.junit.Test;
2523

2624
import org.springframework.boot.autoconfigure.AutoConfigurations;
27-
import org.springframework.boot.test.context.assertj.AssertableApplicationContext;
2825
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
2926
import org.springframework.context.annotation.Bean;
3027
import org.springframework.context.annotation.Configuration;
3128
import org.springframework.context.annotation.Import;
32-
import org.springframework.test.util.ReflectionTestUtils;
3329

3430
import static org.assertj.core.api.Assertions.assertThat;
35-
import static org.mockito.Mockito.spy;
36-
import static org.mockito.Mockito.verify;
3731

3832
/**
3933
* Tests for {@link AtlasMetricsExportAutoConfiguration}.
@@ -89,27 +83,14 @@ public void allowsCustomRegistryToBeUsed() {
8983
public void stopsMeterRegistryWhenContextIsClosed() {
9084
this.contextRunner.withUserConfiguration(BaseConfiguration.class)
9185
.run((context) -> {
92-
AtlasMeterRegistry registry = spyOnDisposableBean(
93-
AtlasMeterRegistry.class, context);
86+
AtlasMeterRegistry registry = context
87+
.getBean(AtlasMeterRegistry.class);
88+
assertThat(registry.isClosed()).isFalse();
9489
context.close();
95-
verify(registry).stop();
90+
assertThat(registry.isClosed()).isTrue();
9691
});
9792
}
9893

99-
@SuppressWarnings("unchecked")
100-
private <T> T spyOnDisposableBean(Class<T> type,
101-
AssertableApplicationContext context) {
102-
String[] names = context.getBeanNamesForType(type);
103-
assertThat(names).hasSize(1);
104-
String registryBeanName = names[0];
105-
Map<String, Object> disposableBeans = (Map<String, Object>) ReflectionTestUtils
106-
.getField(context.getAutowireCapableBeanFactory(), "disposableBeans");
107-
Object registryAdapter = disposableBeans.get(registryBeanName);
108-
T registry = (T) spy(ReflectionTestUtils.getField(registryAdapter, "bean"));
109-
ReflectionTestUtils.setField(registryAdapter, "bean", registry);
110-
return registry;
111-
}
112-
11394
@Configuration
11495
static class BaseConfiguration {
11596

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

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -16,24 +16,18 @@
1616

1717
package org.springframework.boot.actuate.autoconfigure.metrics.export.datadog;
1818

19-
import java.util.Map;
20-
2119
import io.micrometer.core.instrument.Clock;
2220
import io.micrometer.datadog.DatadogConfig;
2321
import io.micrometer.datadog.DatadogMeterRegistry;
2422
import org.junit.Test;
2523

2624
import org.springframework.boot.autoconfigure.AutoConfigurations;
27-
import org.springframework.boot.test.context.assertj.AssertableApplicationContext;
2825
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
2926
import org.springframework.context.annotation.Bean;
3027
import org.springframework.context.annotation.Configuration;
3128
import org.springframework.context.annotation.Import;
32-
import org.springframework.test.util.ReflectionTestUtils;
3329

3430
import static org.assertj.core.api.Assertions.assertThat;
35-
import static org.mockito.Mockito.spy;
36-
import static org.mockito.Mockito.verify;
3731

3832
/**
3933
* Tests for {@link DatadogMetricsExportAutoConfiguration}.
@@ -98,27 +92,14 @@ public void stopsMeterRegistryWhenContextIsClosed() {
9892
this.contextRunner.withUserConfiguration(BaseConfiguration.class)
9993
.withPropertyValues("management.metrics.export.datadog.api-key=abcde")
10094
.run((context) -> {
101-
DatadogMeterRegistry registry = spyOnDisposableBean(
102-
DatadogMeterRegistry.class, context);
95+
DatadogMeterRegistry registry = context
96+
.getBean(DatadogMeterRegistry.class);
97+
assertThat(registry.isClosed()).isFalse();
10398
context.close();
104-
verify(registry).stop();
99+
assertThat(registry.isClosed()).isTrue();
105100
});
106101
}
107102

108-
@SuppressWarnings("unchecked")
109-
private <T> T spyOnDisposableBean(Class<T> type,
110-
AssertableApplicationContext context) {
111-
String[] names = context.getBeanNamesForType(type);
112-
assertThat(names).hasSize(1);
113-
String registryBeanName = names[0];
114-
Map<String, Object> disposableBeans = (Map<String, Object>) ReflectionTestUtils
115-
.getField(context.getAutowireCapableBeanFactory(), "disposableBeans");
116-
Object registryAdapter = disposableBeans.get(registryBeanName);
117-
T registry = (T) spy(ReflectionTestUtils.getField(registryAdapter, "bean"));
118-
ReflectionTestUtils.setField(registryAdapter, "bean", registry);
119-
return registry;
120-
}
121-
122103
@Configuration
123104
static class BaseConfiguration {
124105

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

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -16,24 +16,18 @@
1616

1717
package org.springframework.boot.actuate.autoconfigure.metrics.export.ganglia;
1818

19-
import java.util.Map;
20-
2119
import io.micrometer.core.instrument.Clock;
2220
import io.micrometer.ganglia.GangliaConfig;
2321
import io.micrometer.ganglia.GangliaMeterRegistry;
2422
import org.junit.Test;
2523

2624
import org.springframework.boot.autoconfigure.AutoConfigurations;
27-
import org.springframework.boot.test.context.assertj.AssertableApplicationContext;
2825
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
2926
import org.springframework.context.annotation.Bean;
3027
import org.springframework.context.annotation.Configuration;
3128
import org.springframework.context.annotation.Import;
32-
import org.springframework.test.util.ReflectionTestUtils;
3329

3430
import static org.assertj.core.api.Assertions.assertThat;
35-
import static org.mockito.Mockito.spy;
36-
import static org.mockito.Mockito.verify;
3731

3832
/**
3933
* Tests for {@link GangliaMetricsExportAutoConfiguration}.
@@ -89,27 +83,14 @@ public void allowsCustomRegistryToBeUsed() {
8983
public void stopsMeterRegistryWhenContextIsClosed() {
9084
this.contextRunner.withUserConfiguration(BaseConfiguration.class)
9185
.run((context) -> {
92-
GangliaMeterRegistry registry = spyOnDisposableBean(
93-
GangliaMeterRegistry.class, context);
86+
GangliaMeterRegistry registry = context
87+
.getBean(GangliaMeterRegistry.class);
88+
assertThat(registry.isClosed()).isFalse();
9489
context.close();
95-
verify(registry).stop();
90+
assertThat(registry.isClosed()).isTrue();
9691
});
9792
}
9893

99-
@SuppressWarnings("unchecked")
100-
private <T> T spyOnDisposableBean(Class<T> type,
101-
AssertableApplicationContext context) {
102-
String[] names = context.getBeanNamesForType(type);
103-
assertThat(names).hasSize(1);
104-
String registryBeanName = names[0];
105-
Map<String, Object> disposableBeans = (Map<String, Object>) ReflectionTestUtils
106-
.getField(context.getAutowireCapableBeanFactory(), "disposableBeans");
107-
Object registryAdapter = disposableBeans.get(registryBeanName);
108-
T registry = (T) spy(ReflectionTestUtils.getField(registryAdapter, "bean"));
109-
ReflectionTestUtils.setField(registryAdapter, "bean", registry);
110-
return registry;
111-
}
112-
11394
@Configuration
11495
static class BaseConfiguration {
11596

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

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -16,25 +16,19 @@
1616

1717
package org.springframework.boot.actuate.autoconfigure.metrics.export.graphite;
1818

19-
import java.util.Map;
20-
2119
import io.micrometer.core.instrument.Clock;
2220
import io.micrometer.core.instrument.Tags;
2321
import io.micrometer.graphite.GraphiteConfig;
2422
import io.micrometer.graphite.GraphiteMeterRegistry;
2523
import org.junit.Test;
2624

2725
import org.springframework.boot.autoconfigure.AutoConfigurations;
28-
import org.springframework.boot.test.context.assertj.AssertableApplicationContext;
2926
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
3027
import org.springframework.context.annotation.Bean;
3128
import org.springframework.context.annotation.Configuration;
3229
import org.springframework.context.annotation.Import;
33-
import org.springframework.test.util.ReflectionTestUtils;
3430

3531
import static org.assertj.core.api.Assertions.assertThat;
36-
import static org.mockito.Mockito.spy;
37-
import static org.mockito.Mockito.verify;
3832

3933
/**
4034
* Tests for {@link GraphiteMetricsExportAutoConfiguration}.
@@ -106,27 +100,14 @@ public void allowsCustomRegistryToBeUsed() {
106100
public void stopsMeterRegistryWhenContextIsClosed() {
107101
this.contextRunner.withUserConfiguration(BaseConfiguration.class)
108102
.run((context) -> {
109-
GraphiteMeterRegistry registry = spyOnDisposableBean(
110-
GraphiteMeterRegistry.class, context);
103+
GraphiteMeterRegistry registry = context
104+
.getBean(GraphiteMeterRegistry.class);
105+
assertThat(registry.isClosed()).isFalse();
111106
context.close();
112-
verify(registry).stop();
107+
assertThat(registry.isClosed()).isTrue();
113108
});
114109
}
115110

116-
@SuppressWarnings("unchecked")
117-
private <T> T spyOnDisposableBean(Class<T> type,
118-
AssertableApplicationContext context) {
119-
String[] names = context.getBeanNamesForType(type);
120-
assertThat(names).hasSize(1);
121-
String registryBeanName = names[0];
122-
Map<String, Object> disposableBeans = (Map<String, Object>) ReflectionTestUtils
123-
.getField(context.getAutowireCapableBeanFactory(), "disposableBeans");
124-
Object registryAdapter = disposableBeans.get(registryBeanName);
125-
T registry = (T) spy(ReflectionTestUtils.getField(registryAdapter, "bean"));
126-
ReflectionTestUtils.setField(registryAdapter, "bean", registry);
127-
return registry;
128-
}
129-
130111
@Configuration
131112
static class BaseConfiguration {
132113

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

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -16,24 +16,18 @@
1616

1717
package org.springframework.boot.actuate.autoconfigure.metrics.export.influx;
1818

19-
import java.util.Map;
20-
2119
import io.micrometer.core.instrument.Clock;
2220
import io.micrometer.influx.InfluxConfig;
2321
import io.micrometer.influx.InfluxMeterRegistry;
2422
import org.junit.Test;
2523

2624
import org.springframework.boot.autoconfigure.AutoConfigurations;
27-
import org.springframework.boot.test.context.assertj.AssertableApplicationContext;
2825
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
2926
import org.springframework.context.annotation.Bean;
3027
import org.springframework.context.annotation.Configuration;
3128
import org.springframework.context.annotation.Import;
32-
import org.springframework.test.util.ReflectionTestUtils;
3329

3430
import static org.assertj.core.api.Assertions.assertThat;
35-
import static org.mockito.Mockito.spy;
36-
import static org.mockito.Mockito.verify;
3731

3832
/**
3933
* Tests for {@link InfluxMetricsExportAutoConfiguration}.
@@ -89,27 +83,14 @@ public void allowsCustomRegistryToBeUsed() {
8983
public void stopsMeterRegistryWhenContextIsClosed() {
9084
this.contextRunner.withUserConfiguration(BaseConfiguration.class)
9185
.run((context) -> {
92-
InfluxMeterRegistry registry = spyOnDisposableBean(
93-
InfluxMeterRegistry.class, context);
86+
InfluxMeterRegistry registry = context
87+
.getBean(InfluxMeterRegistry.class);
88+
assertThat(registry.isClosed()).isFalse();
9489
context.close();
95-
verify(registry).stop();
90+
assertThat(registry.isClosed()).isTrue();
9691
});
9792
}
9893

99-
@SuppressWarnings("unchecked")
100-
private <T> T spyOnDisposableBean(Class<T> type,
101-
AssertableApplicationContext context) {
102-
String[] names = context.getBeanNamesForType(type);
103-
assertThat(names).hasSize(1);
104-
String registryBeanName = names[0];
105-
Map<String, Object> disposableBeans = (Map<String, Object>) ReflectionTestUtils
106-
.getField(context.getAutowireCapableBeanFactory(), "disposableBeans");
107-
Object registryAdapter = disposableBeans.get(registryBeanName);
108-
T registry = (T) spy(ReflectionTestUtils.getField(registryAdapter, "bean"));
109-
ReflectionTestUtils.setField(registryAdapter, "bean", registry);
110-
return registry;
111-
}
112-
11394
@Configuration
11495
static class BaseConfiguration {
11596

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

Lines changed: 3 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -16,24 +16,18 @@
1616

1717
package org.springframework.boot.actuate.autoconfigure.metrics.export.jmx;
1818

19-
import java.util.Map;
20-
2119
import io.micrometer.core.instrument.Clock;
2220
import io.micrometer.jmx.JmxConfig;
2321
import io.micrometer.jmx.JmxMeterRegistry;
2422
import org.junit.Test;
2523

2624
import org.springframework.boot.autoconfigure.AutoConfigurations;
27-
import org.springframework.boot.test.context.assertj.AssertableApplicationContext;
2825
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
2926
import org.springframework.context.annotation.Bean;
3027
import org.springframework.context.annotation.Configuration;
3128
import org.springframework.context.annotation.Import;
32-
import org.springframework.test.util.ReflectionTestUtils;
3329

3430
import static org.assertj.core.api.Assertions.assertThat;
35-
import static org.mockito.Mockito.spy;
36-
import static org.mockito.Mockito.verify;
3731

3832
/**
3933
* Tests for {@link JmxMetricsExportAutoConfiguration}.
@@ -89,27 +83,13 @@ public void allowsCustomRegistryToBeUsed() {
8983
public void stopsMeterRegistryWhenContextIsClosed() {
9084
this.contextRunner.withUserConfiguration(BaseConfiguration.class)
9185
.run((context) -> {
92-
JmxMeterRegistry registry = spyOnDisposableBean(
93-
JmxMeterRegistry.class, context);
86+
JmxMeterRegistry registry = context.getBean(JmxMeterRegistry.class);
87+
assertThat(registry.isClosed()).isFalse();
9488
context.close();
95-
verify(registry).stop();
89+
assertThat(registry.isClosed()).isTrue();
9690
});
9791
}
9892

99-
@SuppressWarnings("unchecked")
100-
private <T> T spyOnDisposableBean(Class<T> type,
101-
AssertableApplicationContext context) {
102-
String[] names = context.getBeanNamesForType(type);
103-
assertThat(names).hasSize(1);
104-
String registryBeanName = names[0];
105-
Map<String, Object> disposableBeans = (Map<String, Object>) ReflectionTestUtils
106-
.getField(context.getAutowireCapableBeanFactory(), "disposableBeans");
107-
Object registryAdapter = disposableBeans.get(registryBeanName);
108-
T registry = (T) spy(ReflectionTestUtils.getField(registryAdapter, "bean"));
109-
ReflectionTestUtils.setField(registryAdapter, "bean", registry);
110-
return registry;
111-
}
112-
11393
@Configuration
11494
static class BaseConfiguration {
11595

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

Lines changed: 4 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -16,24 +16,18 @@
1616

1717
package org.springframework.boot.actuate.autoconfigure.metrics.export.newrelic;
1818

19-
import java.util.Map;
20-
2119
import io.micrometer.core.instrument.Clock;
2220
import io.micrometer.newrelic.NewRelicConfig;
2321
import io.micrometer.newrelic.NewRelicMeterRegistry;
2422
import org.junit.Test;
2523

2624
import org.springframework.boot.autoconfigure.AutoConfigurations;
27-
import org.springframework.boot.test.context.assertj.AssertableApplicationContext;
2825
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
2926
import org.springframework.context.annotation.Bean;
3027
import org.springframework.context.annotation.Configuration;
3128
import org.springframework.context.annotation.Import;
32-
import org.springframework.test.util.ReflectionTestUtils;
3329

3430
import static org.assertj.core.api.Assertions.assertThat;
35-
import static org.mockito.Mockito.spy;
36-
import static org.mockito.Mockito.verify;
3731

3832
/**
3933
*
@@ -111,27 +105,14 @@ public void stopsMeterRegistryWhenContextIsClosed() {
111105
.withPropertyValues("management.metrics.export.newrelic.api-key=abcde",
112106
"management.metrics.export.newrelic.account-id=abcde")
113107
.withUserConfiguration(BaseConfiguration.class).run((context) -> {
114-
NewRelicMeterRegistry registry = spyOnDisposableBean(
115-
NewRelicMeterRegistry.class, context);
108+
NewRelicMeterRegistry registry = context
109+
.getBean(NewRelicMeterRegistry.class);
110+
assertThat(registry.isClosed()).isFalse();
116111
context.close();
117-
verify(registry).stop();
112+
assertThat(registry.isClosed()).isTrue();
118113
});
119114
}
120115

121-
@SuppressWarnings("unchecked")
122-
private <T> T spyOnDisposableBean(Class<T> type,
123-
AssertableApplicationContext context) {
124-
String[] names = context.getBeanNamesForType(type);
125-
assertThat(names).hasSize(1);
126-
String registryBeanName = names[0];
127-
Map<String, Object> disposableBeans = (Map<String, Object>) ReflectionTestUtils
128-
.getField(context.getAutowireCapableBeanFactory(), "disposableBeans");
129-
Object registryAdapter = disposableBeans.get(registryBeanName);
130-
T registry = (T) spy(ReflectionTestUtils.getField(registryAdapter, "bean"));
131-
ReflectionTestUtils.setField(registryAdapter, "bean", registry);
132-
return registry;
133-
}
134-
135116
@Configuration
136117
static class BaseConfiguration {
137118

0 commit comments

Comments
 (0)