JmxAutoConfigurationTests Class — spring-boot Architecture
Architecture documentation for the JmxAutoConfigurationTests class in JmxAutoConfigurationTests.java from the spring-boot codebase.
Entity Profile
Relationship Graph
Source Code
core/spring-boot-autoconfigure/src/test/java/org/springframework/boot/autoconfigure/jmx/JmxAutoConfigurationTests.java lines 45–147
class JmxAutoConfigurationTests {
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
.withConfiguration(AutoConfigurations.of(JmxAutoConfiguration.class));
@Test
void testDefaultMBeanExport() {
this.contextRunner.run((context) -> {
assertThat(context).doesNotHaveBean(MBeanExporter.class);
assertThat(context).doesNotHaveBean(ObjectNamingStrategy.class);
});
}
@Test
void testDisabledMBeanExport() {
this.contextRunner.withPropertyValues("spring.jmx.enabled=false").run((context) -> {
assertThat(context).doesNotHaveBean(MBeanExporter.class);
assertThat(context).doesNotHaveBean(ObjectNamingStrategy.class);
});
}
@Test
void testEnabledMBeanExport() {
this.contextRunner.withPropertyValues("spring.jmx.enabled=true").run((context) -> {
assertThat(context).hasSingleBean(MBeanExporter.class);
assertThat(context).hasSingleBean(ParentAwareNamingStrategy.class);
MBeanExporter exporter = context.getBean(MBeanExporter.class);
assertThat(exporter).hasFieldOrPropertyWithValue("ensureUniqueRuntimeObjectNames", false);
assertThat(exporter).hasFieldOrPropertyWithValue("registrationPolicy", RegistrationPolicy.FAIL_ON_EXISTING);
MetadataNamingStrategy naming = (MetadataNamingStrategy) ReflectionTestUtils.getField(exporter,
"namingStrategy");
assertThat(naming).hasFieldOrPropertyWithValue("ensureUniqueRuntimeObjectNames", false);
});
}
@Test
void testDefaultDomainConfiguredOnMBeanExport() {
this.contextRunner
.withPropertyValues("spring.jmx.enabled=true", "spring.jmx.default-domain=my-test-domain",
"spring.jmx.unique-names=true", "spring.jmx.registration-policy=IGNORE_EXISTING")
.run((context) -> {
assertThat(context).hasSingleBean(MBeanExporter.class);
MBeanExporter exporter = context.getBean(MBeanExporter.class);
assertThat(exporter).hasFieldOrPropertyWithValue("ensureUniqueRuntimeObjectNames", true);
assertThat(exporter).hasFieldOrPropertyWithValue("registrationPolicy",
RegistrationPolicy.IGNORE_EXISTING);
MetadataNamingStrategy naming = (MetadataNamingStrategy) ReflectionTestUtils.getField(exporter,
"namingStrategy");
assertThat(naming).hasFieldOrPropertyWithValue("defaultDomain", "my-test-domain");
assertThat(naming).hasFieldOrPropertyWithValue("ensureUniqueRuntimeObjectNames", true);
});
}
@Test
void testBasicParentContext() {
try (AnnotationConfigApplicationContext parent = new AnnotationConfigApplicationContext()) {
parent.register(JmxAutoConfiguration.class);
parent.refresh();
this.contextRunner.withParent(parent).run((context) -> assertThat(context.isRunning()));
}
}
@Test
void testParentContext() {
try (AnnotationConfigApplicationContext parent = new AnnotationConfigApplicationContext()) {
parent.register(JmxAutoConfiguration.class, TestConfiguration.class);
parent.refresh();
this.contextRunner.withParent(parent)
.withConfiguration(UserConfigurations.of(TestConfiguration.class))
.run((context) -> assertThat(context.isRunning()));
}
}
@Configuration(proxyBeanMethods = false)
static class TestConfiguration {
@Bean
Counter counter() {
return new Counter();
}
}
@ManagedResource
public static class Counter {
private int counter;
@ManagedAttribute
public int get() {
return this.counter;
}
@ManagedOperation
public void increment() {
this.counter++;
}
}
}
Domain
Source
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free