3131import org .slf4j .MDC ;
3232
3333import org .springframework .boot .actuate .autoconfigure .opentelemetry .OpenTelemetryAutoConfiguration ;
34+ import org .springframework .boot .actuate .autoconfigure .tracing .OpenTelemetryEventPublisherApplicationListener .EventPublisherBeansContextWrapper ;
3435import org .springframework .boot .autoconfigure .AutoConfigurations ;
3536import org .springframework .boot .test .context .runner .ApplicationContextRunner ;
3637import org .springframework .boot .testsupport .classpath .ForkedClassPath ;
3738import org .springframework .context .ApplicationContext ;
39+ import org .springframework .context .ApplicationContextInitializer ;
40+ import org .springframework .context .ConfigurableApplicationContext ;
3841
3942import static org .assertj .core .api .Assertions .assertThat ;
4043
@@ -55,6 +58,7 @@ class BaggagePropagationIntegrationTests {
5558 @ BeforeEach
5659 @ AfterEach
5760 void setup () {
61+ EventPublisherBeansContextWrapper .addWrapperIfNecessary ();
5862 MDC .clear ();
5963 }
6064
@@ -155,27 +159,32 @@ private void assertMdcValue(String key, String expected) {
155159 enum AutoConfig implements Supplier <ApplicationContextRunner > {
156160
157161 BRAVE_DEFAULT {
162+
158163 @ Override
159164 public ApplicationContextRunner get () {
160165 return new ApplicationContextRunner ()
161166 .withConfiguration (AutoConfigurations .of (BraveAutoConfiguration .class ))
162167 .withPropertyValues ("management.tracing.baggage.remote-fields=x-vcap-request-id,country-code,bp" ,
163168 "management.tracing.baggage.correlation.fields=country-code,bp" );
164169 }
170+
165171 },
166172
167173 OTEL_DEFAULT {
174+
168175 @ Override
169176 public ApplicationContextRunner get () {
170- return new ApplicationContextRunner ().withConfiguration ( AutoConfigurations . of (
171- OpenTelemetryAutoConfiguration .class ,
172- org .springframework .boot .actuate .autoconfigure .tracing .OpenTelemetryAutoConfiguration .class ))
177+ return new ApplicationContextRunner ().withInitializer ( new OtelApplicationContextInitializer ())
178+ . withConfiguration ( AutoConfigurations . of ( OpenTelemetryAutoConfiguration .class ,
179+ org .springframework .boot .actuate .autoconfigure .tracing .OpenTelemetryAutoConfiguration .class ))
173180 .withPropertyValues ("management.tracing.baggage.remote-fields=x-vcap-request-id,country-code,bp" ,
174181 "management.tracing.baggage.correlation.fields=country-code,bp" );
175182 }
183+
176184 },
177185
178186 BRAVE_W3C {
187+
179188 @ Override
180189 public ApplicationContextRunner get () {
181190 return new ApplicationContextRunner ()
@@ -184,21 +193,25 @@ public ApplicationContextRunner get() {
184193 "management.tracing.baggage.remote-fields=x-vcap-request-id,country-code,bp" ,
185194 "management.tracing.baggage.correlation.fields=country-code,bp" );
186195 }
196+
187197 },
188198
189199 OTEL_W3C {
200+
190201 @ Override
191202 public ApplicationContextRunner get () {
192- return new ApplicationContextRunner ().withConfiguration ( AutoConfigurations . of (
193- OpenTelemetryAutoConfiguration .class ,
194- org .springframework .boot .actuate .autoconfigure .tracing .OpenTelemetryAutoConfiguration .class ))
203+ return new ApplicationContextRunner ().withInitializer ( new OtelApplicationContextInitializer ())
204+ . withConfiguration ( AutoConfigurations . of ( OpenTelemetryAutoConfiguration .class ,
205+ org .springframework .boot .actuate .autoconfigure .tracing .OpenTelemetryAutoConfiguration .class ))
195206 .withPropertyValues ("management.tracing.propagation.type=W3C" ,
196207 "management.tracing.baggage.remote-fields=x-vcap-request-id,country-code,bp" ,
197208 "management.tracing.baggage.correlation.fields=country-code,bp" );
198209 }
210+
199211 },
200212
201213 BRAVE_B3 {
214+
202215 @ Override
203216 public ApplicationContextRunner get () {
204217 return new ApplicationContextRunner ()
@@ -207,9 +220,11 @@ public ApplicationContextRunner get() {
207220 "management.tracing.baggage.remote-fields=x-vcap-request-id,country-code,bp" ,
208221 "management.tracing.baggage.correlation.fields=country-code,bp" );
209222 }
223+
210224 },
211225
212226 BRAVE_B3_MULTI {
227+
213228 @ Override
214229 public ApplicationContextRunner get () {
215230 return new ApplicationContextRunner ()
@@ -218,40 +233,47 @@ public ApplicationContextRunner get() {
218233 "management.tracing.baggage.remote-fields=x-vcap-request-id,country-code,bp" ,
219234 "management.tracing.baggage.correlation.fields=country-code,bp" );
220235 }
236+
221237 },
222238
223239 OTEL_B3 {
240+
224241 @ Override
225242 public ApplicationContextRunner get () {
226- return new ApplicationContextRunner ().withConfiguration ( AutoConfigurations . of (
227- OpenTelemetryAutoConfiguration .class ,
228- org .springframework .boot .actuate .autoconfigure .tracing .OpenTelemetryAutoConfiguration .class ))
243+ return new ApplicationContextRunner ().withInitializer ( new OtelApplicationContextInitializer ())
244+ . withConfiguration ( AutoConfigurations . of ( OpenTelemetryAutoConfiguration .class ,
245+ org .springframework .boot .actuate .autoconfigure .tracing .OpenTelemetryAutoConfiguration .class ))
229246 .withPropertyValues ("management.tracing.propagation.type=B3" ,
230247 "management.tracing.baggage.remote-fields=x-vcap-request-id,country-code,bp" ,
231248 "management.tracing.baggage.correlation.fields=country-code,bp" );
232249 }
250+
233251 },
234252
235253 OTEL_B3_MULTI {
254+
236255 @ Override
237256 public ApplicationContextRunner get () {
238- return new ApplicationContextRunner ().withConfiguration ( AutoConfigurations . of (
239- OpenTelemetryAutoConfiguration .class ,
240- org .springframework .boot .actuate .autoconfigure .tracing .OpenTelemetryAutoConfiguration .class ))
257+ return new ApplicationContextRunner ().withInitializer ( new OtelApplicationContextInitializer ())
258+ . withConfiguration ( AutoConfigurations . of ( OpenTelemetryAutoConfiguration .class ,
259+ org .springframework .boot .actuate .autoconfigure .tracing .OpenTelemetryAutoConfiguration .class ))
241260 .withPropertyValues ("management.tracing.propagation.type=B3_MULTI" ,
242261 "management.tracing.baggage.remote-fields=x-vcap-request-id,country-code,bp" ,
243262 "management.tracing.baggage.correlation.fields=country-code,bp" );
244263 }
264+
245265 },
246266
247267 BRAVE_LOCAL_FIELDS {
268+
248269 @ Override
249270 public ApplicationContextRunner get () {
250271 return new ApplicationContextRunner ()
251272 .withConfiguration (AutoConfigurations .of (BraveAutoConfiguration .class ))
252273 .withPropertyValues ("management.tracing.baggage.local-fields=country-code,bp" ,
253274 "management.tracing.baggage.correlation.fields=country-code,bp" );
254275 }
276+
255277 };
256278
257279 boolean isOtel () {
@@ -264,4 +286,14 @@ boolean isBrave() {
264286
265287 }
266288
289+ static class OtelApplicationContextInitializer
290+ implements ApplicationContextInitializer <ConfigurableApplicationContext > {
291+
292+ @ Override
293+ public void initialize (ConfigurableApplicationContext applicationContext ) {
294+ applicationContext .addApplicationListener (new OpenTelemetryEventPublisherApplicationListener ());
295+ }
296+
297+ }
298+
267299}
0 commit comments