34
34
import io .micrometer .observation .ObservationHandler .FirstMatchingCompositeObservationHandler ;
35
35
import io .micrometer .observation .ObservationPredicate ;
36
36
import io .micrometer .observation .ObservationRegistry ;
37
+ import io .micrometer .observation .aop .ObservedAspect ;
37
38
import io .micrometer .tracing .Tracer ;
38
39
import io .micrometer .tracing .handler .TracingAwareMeterObservationHandler ;
39
40
import io .micrometer .tracing .handler .TracingObservationHandler ;
41
+ import org .aspectj .weaver .Advice ;
40
42
import org .junit .jupiter .api .Test ;
41
43
import org .mockito .Answers ;
42
44
58
60
*
59
61
* @author Moritz Halbritter
60
62
* @author Jonatan Ivanov
63
+ * @author Vedran Pavic
61
64
*/
62
65
class ObservationAutoConfigurationTests {
63
66
@@ -77,6 +80,7 @@ void beansShouldNotBeSuppliedWhenMicrometerObservationIsNotOnClassPath() {
77
80
assertThat (context ).hasSingleBean (MeterRegistry .class );
78
81
assertThat (context ).doesNotHaveBean (ObservationRegistry .class );
79
82
assertThat (context ).doesNotHaveBean (ObservationHandler .class );
83
+ assertThat (context ).doesNotHaveBean (ObservedAspect .class );
80
84
assertThat (context ).doesNotHaveBean (ObservationHandlerGrouping .class );
81
85
});
82
86
}
@@ -88,6 +92,7 @@ void supplyObservationRegistryWhenMicrometerCoreAndTracingAreNotOnClassPath() {
88
92
ObservationRegistry observationRegistry = context .getBean (ObservationRegistry .class );
89
93
Observation .start ("test-observation" , observationRegistry ).stop ();
90
94
assertThat (context ).doesNotHaveBean (ObservationHandler .class );
95
+ assertThat (context ).hasSingleBean (ObservedAspect .class );
91
96
assertThat (context ).doesNotHaveBean (ObservationHandlerGrouping .class );
92
97
});
93
98
}
@@ -99,6 +104,7 @@ void supplyMeterHandlerAndGroupingWhenMicrometerCoreIsOnClassPathButTracingIsNot
99
104
Observation .start ("test-observation" , observationRegistry ).stop ();
100
105
assertThat (context ).hasSingleBean (ObservationHandler .class );
101
106
assertThat (context ).hasSingleBean (DefaultMeterObservationHandler .class );
107
+ assertThat (context ).hasSingleBean (ObservedAspect .class );
102
108
assertThat (context ).hasSingleBean (ObservationHandlerGrouping .class );
103
109
assertThat (context ).hasBean ("metricsObservationHandlerGrouping" );
104
110
});
@@ -110,6 +116,7 @@ void supplyOnlyTracingObservationHandlerGroupingWhenMicrometerCoreIsNotOnClassPa
110
116
ObservationRegistry observationRegistry = context .getBean (ObservationRegistry .class );
111
117
Observation .start ("test-observation" , observationRegistry ).stop ();
112
118
assertThat (context ).doesNotHaveBean (ObservationHandler .class );
119
+ assertThat (context ).hasSingleBean (ObservedAspect .class );
113
120
assertThat (context ).hasSingleBean (ObservationHandlerGrouping .class );
114
121
assertThat (context ).hasBean ("tracingObservationHandlerGrouping" );
115
122
});
@@ -123,6 +130,7 @@ void supplyMeterHandlerAndGroupingWhenMicrometerCoreAndTracingAreOnClassPath() {
123
130
// TracingAwareMeterObservationHandler that we don't test here
124
131
Observation .start ("test-observation" , observationRegistry );
125
132
assertThat (context ).hasSingleBean (ObservationHandler .class );
133
+ assertThat (context ).hasSingleBean (ObservedAspect .class );
126
134
assertThat (context ).hasSingleBean (TracingAwareMeterObservationHandler .class );
127
135
assertThat (context ).hasSingleBean (ObservationHandlerGrouping .class );
128
136
assertThat (context ).hasBean ("metricsAndTracingObservationHandlerGrouping" );
@@ -138,6 +146,7 @@ void supplyMeterHandlerAndGroupingWhenMicrometerCoreAndTracingAreOnClassPathButT
138
146
Observation .start ("test-observation" , observationRegistry ).stop ();
139
147
assertThat (context ).hasSingleBean (ObservationHandler .class );
140
148
assertThat (context ).hasSingleBean (DefaultMeterObservationHandler .class );
149
+ assertThat (context ).hasSingleBean (ObservedAspect .class );
141
150
assertThat (context ).hasSingleBean (ObservationHandlerGrouping .class );
142
151
assertThat (context ).hasBean ("metricsAndTracingObservationHandlerGrouping" );
143
152
});
@@ -155,6 +164,7 @@ void autoConfiguresDefaultMeterObservationHandler() {
155
164
assertThat (meterRegistry .get ("test-observation" ).timer ().count ()).isOne ();
156
165
assertThat (context ).hasSingleBean (DefaultMeterObservationHandler .class );
157
166
assertThat (context ).hasSingleBean (ObservationHandler .class );
167
+ assertThat (context ).hasSingleBean (ObservedAspect .class );
158
168
});
159
169
}
160
170
@@ -164,6 +174,12 @@ void allowsDefaultMeterObservationHandlerToBeDisabled() {
164
174
.run ((context ) -> assertThat (context ).doesNotHaveBean (ObservationHandler .class ));
165
175
}
166
176
177
+ @ Test
178
+ void allowsObservedAspectToBeDisabled () {
179
+ this .contextRunner .withClassLoader (new FilteredClassLoader (Advice .class ))
180
+ .run ((context ) -> assertThat (context ).doesNotHaveBean (ObservedAspect .class ));
181
+ }
182
+
167
183
@ Test
168
184
void autoConfiguresObservationPredicates () {
169
185
this .contextRunner .withUserConfiguration (ObservationPredicates .class ).run ((context ) -> {
0 commit comments