|
28 | 28 | import io.micrometer.observation.ObservationHandler.FirstMatchingCompositeObservationHandler; |
29 | 29 | import io.micrometer.observation.ObservationPredicate; |
30 | 30 | import io.micrometer.observation.ObservationRegistry; |
| 31 | +import io.micrometer.observation.aop.ObservationKeyValueAnnotationHandler; |
31 | 32 | import io.micrometer.observation.aop.ObservedAspect; |
32 | 33 | import org.aspectj.weaver.Advice; |
33 | 34 | import org.junit.jupiter.api.Test; |
34 | 35 |
|
| 36 | +import org.springframework.beans.factory.BeanFactory; |
35 | 37 | import org.springframework.boot.autoconfigure.AutoConfigurations; |
36 | 38 | import org.springframework.boot.test.context.FilteredClassLoader; |
37 | 39 | import org.springframework.boot.test.context.runner.ApplicationContextRunner; |
@@ -61,36 +63,48 @@ void beansShouldNotBeSuppliedWhenMicrometerObservationIsNotOnClassPath() { |
61 | 63 | this.contextRunner.withClassLoader(new FilteredClassLoader("io.micrometer.observation")).run((context) -> { |
62 | 64 | assertThat(context).doesNotHaveBean(ObservationRegistry.class); |
63 | 65 | assertThat(context).doesNotHaveBean(ObservedAspect.class); |
| 66 | + assertThat(context).doesNotHaveBean(ObservationKeyValueAnnotationHandler.class); |
64 | 67 | }); |
65 | 68 | } |
66 | 69 |
|
67 | 70 | @Test |
68 | | - void supplyObservationRegistry() { |
| 71 | + void supplyObservationRegistryAndAspect() { |
69 | 72 | this.contextRunner.run((context) -> { |
70 | 73 | ObservationRegistry observationRegistry = context.getBean(ObservationRegistry.class); |
71 | 74 | Observation.start("test-observation", observationRegistry).stop(); |
72 | 75 | assertThat(context).hasSingleBean(ObservedAspect.class); |
| 76 | + assertThat(context).hasSingleBean(ObservationKeyValueAnnotationHandler.class); |
| 77 | + assertThat(context.getBean(ObservedAspect.class)).extracting("observationKeyValueAnnotationHandler") |
| 78 | + .isSameAs(context.getBean(ObservationKeyValueAnnotationHandler.class)); |
73 | 79 | }); |
74 | 80 | } |
75 | 81 |
|
76 | 82 | @Test |
77 | 83 | void allowsObservedAspectToBeDisabled() { |
78 | | - this.contextRunner.withClassLoader(new FilteredClassLoader(Advice.class)) |
79 | | - .run((context) -> assertThat(context).doesNotHaveBean(ObservedAspect.class)); |
| 84 | + this.contextRunner.withClassLoader(new FilteredClassLoader(Advice.class)).run((context) -> { |
| 85 | + assertThat(context).doesNotHaveBean(ObservedAspect.class); |
| 86 | + assertThat(context).doesNotHaveBean(ObservationKeyValueAnnotationHandler.class); |
| 87 | + }); |
80 | 88 | } |
81 | 89 |
|
82 | 90 | @Test |
83 | 91 | void allowsObservedAspectToBeDisabledWithProperty() { |
84 | | - this.contextRunner.withPropertyValues("management.observations.annotations.enabled=false") |
85 | | - .run((context) -> assertThat(context).doesNotHaveBean(ObservedAspect.class)); |
| 92 | + this.contextRunner.withPropertyValues("management.observations.annotations.enabled=false").run((context) -> { |
| 93 | + assertThat(context).doesNotHaveBean(ObservedAspect.class); |
| 94 | + assertThat(context).doesNotHaveBean(ObservationKeyValueAnnotationHandler.class); |
| 95 | + }); |
86 | 96 | } |
87 | 97 |
|
88 | 98 | @Test |
89 | 99 | void allowsObservedAspectToBeCustomized() { |
90 | | - this.contextRunner.withUserConfiguration(CustomObservedAspectConfiguration.class) |
91 | | - .run((context) -> assertThat(context).hasSingleBean(ObservedAspect.class) |
| 100 | + this.contextRunner.withUserConfiguration(CustomObservedAspectConfiguration.class).run((context) -> { |
| 101 | + assertThat(context).hasSingleBean(ObservedAspect.class) |
92 | 102 | .getBean(ObservedAspect.class) |
93 | | - .isSameAs(context.getBean("customObservedAspect"))); |
| 103 | + .isSameAs(context.getBean("customObservedAspect")); |
| 104 | + assertThat(context).hasSingleBean(ObservationKeyValueAnnotationHandler.class) |
| 105 | + .getBean(ObservationKeyValueAnnotationHandler.class) |
| 106 | + .isSameAs(context.getBean("customObservationKeyValueAnnotationHandler")); |
| 107 | + }); |
94 | 108 | } |
95 | 109 |
|
96 | 110 | @Test |
@@ -216,6 +230,12 @@ ObservedAspect customObservedAspect(ObservationRegistry observationRegistry) { |
216 | 230 | return new ObservedAspect(observationRegistry); |
217 | 231 | } |
218 | 232 |
|
| 233 | + @Bean |
| 234 | + ObservationKeyValueAnnotationHandler customObservationKeyValueAnnotationHandler(BeanFactory beanFactory, |
| 235 | + ValueExpressionResolver valueExpressionResolver) { |
| 236 | + return new ObservationKeyValueAnnotationHandler(beanFactory::getBean, (ignored) -> valueExpressionResolver); |
| 237 | + } |
| 238 | + |
219 | 239 | } |
220 | 240 |
|
221 | 241 | @Configuration(proxyBeanMethods = false) |
|
0 commit comments