Allow thread dump endpoint to call ThreadMXBean in a native image
Closes gh-31680
This commit is contained in:
@@ -17,12 +17,9 @@
|
||||
package org.springframework.boot.actuate.autoconfigure.management;
|
||||
|
||||
import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnAvailableEndpoint;
|
||||
import org.springframework.boot.actuate.autoconfigure.endpoint.expose.EndpointExposure;
|
||||
import org.springframework.boot.actuate.management.ThreadDumpEndpoint;
|
||||
import org.springframework.boot.actuate.management.ThreadDumpEndpointWebExtension;
|
||||
import org.springframework.boot.autoconfigure.AutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
|
||||
@@ -42,12 +39,4 @@ public class ThreadDumpEndpointAutoConfiguration {
|
||||
return new ThreadDumpEndpoint();
|
||||
}
|
||||
|
||||
@Bean
|
||||
@ConditionalOnMissingBean
|
||||
@ConditionalOnBean(ThreadDumpEndpoint.class)
|
||||
@ConditionalOnAvailableEndpoint(exposure = { EndpointExposure.WEB, EndpointExposure.CLOUD_FOUNDRY })
|
||||
public ThreadDumpEndpointWebExtension threadDumpWebExtension(ThreadDumpEndpoint threadDumpEndpoint) {
|
||||
return new ThreadDumpEndpointWebExtension(threadDumpEndpoint);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -19,7 +19,6 @@ package org.springframework.boot.actuate.autoconfigure.management;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import org.springframework.boot.actuate.management.ThreadDumpEndpoint;
|
||||
import org.springframework.boot.actuate.management.ThreadDumpEndpointWebExtension;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
||||
|
||||
@@ -38,27 +37,20 @@ class ThreadDumpEndpointAutoConfigurationTests {
|
||||
|
||||
@Test
|
||||
void runShouldHaveEndpointBean() {
|
||||
this.contextRunner.withPropertyValues("management.endpoints.web.exposure.include=threaddump").run((context) -> {
|
||||
assertThat(context).hasSingleBean(ThreadDumpEndpoint.class);
|
||||
assertThat(context).hasSingleBean(ThreadDumpEndpointWebExtension.class);
|
||||
});
|
||||
this.contextRunner.withPropertyValues("management.endpoints.web.exposure.include=threaddump")
|
||||
.run((context) -> assertThat(context).hasSingleBean(ThreadDumpEndpoint.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
void runWhenNotExposedShouldNotHaveEndpointBean() {
|
||||
this.contextRunner.run((context) -> {
|
||||
assertThat(context).doesNotHaveBean(ThreadDumpEndpoint.class);
|
||||
assertThat(context).doesNotHaveBean(ThreadDumpEndpointWebExtension.class);
|
||||
});
|
||||
this.contextRunner.run((context) -> assertThat(context).doesNotHaveBean(ThreadDumpEndpoint.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
void runWhenEnabledPropertyIsFalseShouldNotHaveEndpointBean() {
|
||||
this.contextRunner.withPropertyValues("management.endpoints.web.exposure.include=*")
|
||||
.withPropertyValues("management.endpoint.threaddump.enabled:false").run((context) -> {
|
||||
assertThat(context).doesNotHaveBean(ThreadDumpEndpoint.class);
|
||||
assertThat(context).doesNotHaveBean(ThreadDumpEndpointWebExtension.class);
|
||||
});
|
||||
.withPropertyValues("management.endpoint.threaddump.enabled:false")
|
||||
.run((context) -> assertThat(context).doesNotHaveBean(ThreadDumpEndpoint.class));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user