Browse Source

Polish SpringApplicationAdminJmxAutoConfigurationTests

See gh-26416
pull/26446/head
nguyensach 5 years ago committed by Stephane Nicoll
parent
commit
b263f126fa
  1. 11
      spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/admin/SpringApplicationAdminJmxAutoConfiguration.java
  2. 34
      spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/admin/SpringApplicationAdminJmxAutoConfigurationTests.java

11
spring-boot-project/spring-boot-autoconfigure/src/main/java/org/springframework/boot/autoconfigure/admin/SpringApplicationAdminJmxAutoConfiguration.java

@ -36,13 +36,13 @@ import org.springframework.jmx.export.MBeanExporter; @@ -36,13 +36,13 @@ import org.springframework.jmx.export.MBeanExporter;
*
* @author Stephane Nicoll
* @author Andy Wilkinson
* @author Nguyen Bao Sach
* @since 1.3.0
* @see SpringApplicationAdminMXBean
*/
@Configuration(proxyBeanMethods = false)
@AutoConfigureAfter(JmxAutoConfiguration.class)
@ConditionalOnProperty(prefix = "spring.application.admin", value = "enabled", havingValue = "true",
matchIfMissing = false)
@ConditionalOnProperty(prefix = "spring.application.admin", value = "enabled", havingValue = "true")
public class SpringApplicationAdminJmxAutoConfiguration {
/**
@ -61,11 +61,8 @@ public class SpringApplicationAdminJmxAutoConfiguration { @@ -61,11 +61,8 @@ public class SpringApplicationAdminJmxAutoConfiguration {
public SpringApplicationAdminMXBeanRegistrar springApplicationAdminRegistrar(
ObjectProvider<MBeanExporter> mbeanExporters, Environment environment) throws MalformedObjectNameException {
String jmxName = environment.getProperty(JMX_NAME_PROPERTY, DEFAULT_JMX_NAME);
if (mbeanExporters != null) { // Make sure to not register that MBean twice
for (MBeanExporter mbeanExporter : mbeanExporters) {
mbeanExporter.addExcludedBean(jmxName);
}
}
// Make sure to not register that MBean twice
mbeanExporters.forEach((mbeanExporter) -> mbeanExporter.addExcludedBean(jmxName));
return new SpringApplicationAdminMXBeanRegistrar(jmxName);
}

34
spring-boot-project/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/admin/SpringApplicationAdminJmxAutoConfigurationTests.java

@ -50,6 +50,7 @@ import static org.junit.jupiter.api.Assertions.fail; @@ -50,6 +50,7 @@ import static org.junit.jupiter.api.Assertions.fail;
*
* @author Stephane Nicoll
* @author Andy Wilkinson
* @author Nguyen Bao Sach
*/
class SpringApplicationAdminJmxAutoConfigurationTests {
@ -60,17 +61,10 @@ class SpringApplicationAdminJmxAutoConfigurationTests { @@ -60,17 +61,10 @@ class SpringApplicationAdminJmxAutoConfigurationTests {
private final MBeanServer server = ManagementFactory.getPlatformMBeanServer();
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
.withConfiguration(AutoConfigurations.of(MultipleMBeanExportersConfiguration.class,
SpringApplicationAdminJmxAutoConfiguration.class));
.withConfiguration(AutoConfigurations.of(SpringApplicationAdminJmxAutoConfiguration.class));
@Test
void notRegisteredByDefault() {
this.contextRunner.run((context) -> assertThatExceptionOfType(InstanceNotFoundException.class)
.isThrownBy(() -> this.server.getObjectInstance(createDefaultObjectName())));
}
@Test
void registeredWithProperty() {
void WhenThereAreNotAnyMBeanExporters() {
this.contextRunner.withPropertyValues(ENABLE_ADMIN_PROP).run((context) -> {
ObjectName objectName = createDefaultObjectName();
ObjectInstance objectInstance = this.server.getObjectInstance(objectName);
@ -79,9 +73,27 @@ class SpringApplicationAdminJmxAutoConfigurationTests { @@ -79,9 +73,27 @@ class SpringApplicationAdminJmxAutoConfigurationTests {
}
@Test
void registerWithCustomJmxName() {
void notRegisteredByDefaultWhenThereAreMultipleMBeanExporters() {
this.contextRunner.withUserConfiguration(MultipleMBeanExportersConfiguration.class)
.run((context) -> assertThatExceptionOfType(InstanceNotFoundException.class)
.isThrownBy(() -> this.server.getObjectInstance(createDefaultObjectName())));
}
@Test
void registeredWithPropertyWhenThereAreMultipleMBeanExporters() {
this.contextRunner.withUserConfiguration(MultipleMBeanExportersConfiguration.class)
.withPropertyValues(ENABLE_ADMIN_PROP).run((context) -> {
ObjectName objectName = createDefaultObjectName();
ObjectInstance objectInstance = this.server.getObjectInstance(objectName);
assertThat(objectInstance).as("Lifecycle bean should have been registered").isNotNull();
});
}
@Test
void registerWithCustomJmxNameWhenThereAreMultipleMBeanExporters() {
String customJmxName = "org.acme:name=FooBar";
this.contextRunner.withSystemProperties("spring.application.admin.jmx-name=" + customJmxName)
this.contextRunner.withUserConfiguration(MultipleMBeanExportersConfiguration.class)
.withSystemProperties("spring.application.admin.jmx-name=" + customJmxName)
.withPropertyValues(ENABLE_ADMIN_PROP).run((context) -> {
try {
this.server.getObjectInstance(createObjectName(customJmxName));

Loading…
Cancel
Save