Add Java InfoContributor

See gh-28136
This commit is contained in:
Jonatan Ivanov
2021-09-24 15:33:14 -07:00
committed by Stephane Nicoll
parent 0b58d4858d
commit fc87da7ef3
8 changed files with 311 additions and 1 deletions

View File

@@ -20,6 +20,7 @@ import org.springframework.boot.actuate.info.BuildInfoContributor;
import org.springframework.boot.actuate.info.EnvironmentInfoContributor;
import org.springframework.boot.actuate.info.GitInfoContributor;
import org.springframework.boot.actuate.info.InfoContributor;
import org.springframework.boot.actuate.info.java.JavaInfoContributor;
import org.springframework.boot.autoconfigure.AutoConfigureAfter;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
@@ -40,6 +41,7 @@ import org.springframework.core.env.ConfigurableEnvironment;
*
* @author Meang Akira Tanaka
* @author Stephane Nicoll
* @author Jonatan Ivanov
* @since 2.0.0
*/
@Configuration(proxyBeanMethods = false)
@@ -77,4 +79,11 @@ public class InfoContributorAutoConfiguration {
return new BuildInfoContributor(buildProperties);
}
@Bean
@ConditionalOnEnabledInfoContributor("java")
@Order(DEFAULT_ORDER)
public InfoContributor javaInfoContributor() {
return new JavaInfoContributor();
}
}

View File

@@ -23,9 +23,12 @@ import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.Test;
import org.springframework.boot.actuate.info.BuildInfoContributor;
import org.springframework.boot.actuate.info.EnvironmentInfoContributor;
import org.springframework.boot.actuate.info.GitInfoContributor;
import org.springframework.boot.actuate.info.Info;
import org.springframework.boot.actuate.info.InfoContributor;
import org.springframework.boot.actuate.info.java.JavaInfo;
import org.springframework.boot.actuate.info.java.JavaInfoContributor;
import org.springframework.boot.info.BuildProperties;
import org.springframework.boot.info.GitProperties;
import org.springframework.boot.test.util.TestPropertyValues;
@@ -39,6 +42,7 @@ import static org.assertj.core.api.Assertions.assertThat;
* Tests for {@link InfoContributorAutoConfiguration}.
*
* @author Stephane Nicoll
* @author Jonatan Ivanov
*/
class InfoContributorAutoConfigurationTests {
@@ -55,7 +59,26 @@ class InfoContributorAutoConfigurationTests {
void disableEnvContributor() {
load("management.info.env.enabled:false");
Map<String, InfoContributor> beans = this.context.getBeansOfType(InfoContributor.class);
assertThat(beans).hasSize(0);
assertThat(beans).extractingFromEntries(Map.Entry::getValue).allSatisfy(
(infoContributor) -> assertThat(infoContributor).isNotInstanceOf(EnvironmentInfoContributor.class));
}
@Test
void disableJavaContributor() {
load("management.info.java.enabled:false");
Map<String, InfoContributor> beans = this.context.getBeansOfType(InfoContributor.class);
assertThat(beans).extractingFromEntries(Map.Entry::getValue).allSatisfy(
(infoContributor) -> assertThat(infoContributor).isNotInstanceOf(JavaInfoContributor.class));
}
@Test
void defaultInfoContributorsEnabled() {
load();
Map<String, InfoContributor> beans = this.context.getBeansOfType(InfoContributor.class);
assertThat(beans).hasSize(2).extractingFromEntries(Map.Entry::getValue)
.anySatisfy(
(infoContributor) -> assertThat(infoContributor).isInstanceOf(EnvironmentInfoContributor.class))
.anySatisfy((infoContributor) -> assertThat(infoContributor).isInstanceOf(JavaInfoContributor.class));
}
@Test
@@ -129,6 +152,17 @@ class InfoContributorAutoConfigurationTests {
.isSameAs(this.context.getBean("customBuildInfoContributor"));
}
@Test
void javaInfoContributor() {
load();
Map<String, InfoContributor> beans = this.context.getBeansOfType(InfoContributor.class);
assertThat(beans).containsKeys("javaInfoContributor");
Map<String, Object> content = invokeContributor(
this.context.getBean("javaInfoContributor", InfoContributor.class));
Object javaInfo = content.get("java");
assertThat(javaInfo).isInstanceOf(JavaInfo.class);
}
private Map<String, Object> invokeContributor(InfoContributor contributor) {
Info.Builder builder = new Info.Builder();
contributor.contribute(builder);