Merge branch '3.3.x'
This commit is contained in:
commit
09650c8df5
@ -23,6 +23,7 @@ import io.micrometer.tracing.BaggageManager;
|
|||||||
import io.micrometer.tracing.Span;
|
import io.micrometer.tracing.Span;
|
||||||
import io.micrometer.tracing.Tracer;
|
import io.micrometer.tracing.Tracer;
|
||||||
import io.opentelemetry.context.Context;
|
import io.opentelemetry.context.Context;
|
||||||
|
import org.assertj.core.api.ThrowingConsumer;
|
||||||
import org.junit.jupiter.api.AfterEach;
|
import org.junit.jupiter.api.AfterEach;
|
||||||
import org.junit.jupiter.api.BeforeEach;
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
import org.junit.jupiter.params.ParameterizedTest;
|
import org.junit.jupiter.params.ParameterizedTest;
|
||||||
@ -41,11 +42,13 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|||||||
* formats.
|
* formats.
|
||||||
*
|
*
|
||||||
* @author Marcin Grzejszczak
|
* @author Marcin Grzejszczak
|
||||||
|
* @author Moritz Halbritter
|
||||||
*/
|
*/
|
||||||
class BaggagePropagationIntegrationTests {
|
class BaggagePropagationIntegrationTests {
|
||||||
|
|
||||||
static final String COUNTRY_CODE = "country-code";
|
private static final String COUNTRY_CODE = "country-code";
|
||||||
static final String BUSINESS_PROCESS = "bp";
|
|
||||||
|
private static final String BUSINESS_PROCESS = "bp";
|
||||||
|
|
||||||
@BeforeEach
|
@BeforeEach
|
||||||
@AfterEach
|
@AfterEach
|
||||||
@ -61,7 +64,7 @@ class BaggagePropagationIntegrationTests {
|
|||||||
Span span = createSpan(tracer);
|
Span span = createSpan(tracer);
|
||||||
assertThatTracingContextIsInitialized(autoConfig);
|
assertThatTracingContextIsInitialized(autoConfig);
|
||||||
try (Tracer.SpanInScope scope = tracer.withSpan(span.start())) {
|
try (Tracer.SpanInScope scope = tracer.withSpan(span.start())) {
|
||||||
BaggageManager baggageManager = context.getBean(BaggageManager.class);
|
BaggageManager baggageManager = baggageManager(context);
|
||||||
try (BaggageInScope fo = baggageManager.createBaggageInScope(span.context(), COUNTRY_CODE, "FO");
|
try (BaggageInScope fo = baggageManager.createBaggageInScope(span.context(), COUNTRY_CODE, "FO");
|
||||||
BaggageInScope alm = baggageManager.createBaggageInScope(span.context(), BUSINESS_PROCESS,
|
BaggageInScope alm = baggageManager.createBaggageInScope(span.context(), BUSINESS_PROCESS,
|
||||||
"ALM")) {
|
"ALM")) {
|
||||||
@ -73,8 +76,7 @@ class BaggagePropagationIntegrationTests {
|
|||||||
finally {
|
finally {
|
||||||
span.end();
|
span.end();
|
||||||
}
|
}
|
||||||
|
assertThatMdcContainsUnsetTraceId(autoConfig);
|
||||||
assertThatMdcContainsUnsetTraceId();
|
|
||||||
assertThat(MDC.get(COUNTRY_CODE)).isNull();
|
assertThat(MDC.get(COUNTRY_CODE)).isNull();
|
||||||
assertThat(MDC.get(BUSINESS_PROCESS)).isNull();
|
assertThat(MDC.get(BUSINESS_PROCESS)).isNull();
|
||||||
});
|
});
|
||||||
@ -88,17 +90,14 @@ class BaggagePropagationIntegrationTests {
|
|||||||
Span span = createSpan(tracer);
|
Span span = createSpan(tracer);
|
||||||
assertThatTracingContextIsInitialized(autoConfig);
|
assertThatTracingContextIsInitialized(autoConfig);
|
||||||
try (Tracer.SpanInScope scope = tracer.withSpan(span.start())) {
|
try (Tracer.SpanInScope scope = tracer.withSpan(span.start())) {
|
||||||
try (BaggageInScope fo = context.getBean(BaggageManager.class)
|
try (BaggageInScope fo = baggageManager(context).createBaggageInScope(span.context(), COUNTRY_CODE,
|
||||||
.createBaggageInScope(span.context(), COUNTRY_CODE, "FO")) {
|
"FO")) {
|
||||||
|
|
||||||
assertThat(MDC.get("traceId")).isEqualTo(span.context().traceId());
|
assertThat(MDC.get("traceId")).isEqualTo(span.context().traceId());
|
||||||
assertThat(MDC.get(COUNTRY_CODE)).isEqualTo("FO");
|
assertThat(MDC.get(COUNTRY_CODE)).isEqualTo("FO");
|
||||||
|
|
||||||
try (Tracer.SpanInScope scope2 = tracer.withSpan(null)) {
|
try (Tracer.SpanInScope scope2 = tracer.withSpan(null)) {
|
||||||
assertThatMdcContainsUnsetTraceId();
|
assertThatMdcContainsUnsetTraceId(autoConfig);
|
||||||
assertThat(MDC.get(COUNTRY_CODE)).isNull();
|
assertThat(MDC.get(COUNTRY_CODE)).isNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
assertThat(MDC.get("traceId")).isEqualTo(span.context().traceId());
|
assertThat(MDC.get("traceId")).isEqualTo(span.context().traceId());
|
||||||
assertThat(MDC.get(COUNTRY_CODE)).isEqualTo("FO");
|
assertThat(MDC.get(COUNTRY_CODE)).isEqualTo("FO");
|
||||||
}
|
}
|
||||||
@ -106,7 +105,7 @@ class BaggagePropagationIntegrationTests {
|
|||||||
finally {
|
finally {
|
||||||
span.end();
|
span.end();
|
||||||
}
|
}
|
||||||
assertThatMdcContainsUnsetTraceId();
|
assertThatMdcContainsUnsetTraceId(autoConfig);
|
||||||
assertThat(MDC.get(COUNTRY_CODE)).isNull();
|
assertThat(MDC.get(COUNTRY_CODE)).isNull();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -119,22 +118,28 @@ class BaggagePropagationIntegrationTests {
|
|||||||
return context.getBean(Tracer.class);
|
return context.getBean(Tracer.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private BaggageManager baggageManager(ApplicationContext context) {
|
||||||
|
return context.getBean(BaggageManager.class);
|
||||||
|
}
|
||||||
|
|
||||||
private void assertThatTracingContextIsInitialized(AutoConfig autoConfig) {
|
private void assertThatTracingContextIsInitialized(AutoConfig autoConfig) {
|
||||||
if (autoConfig == AutoConfig.OTEL_B3) {
|
if (autoConfig.isOtel()) {
|
||||||
assertThat(Context.current()).isEqualTo(Context.root());
|
assertThat(Context.current()).isEqualTo(Context.root());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void assertThatMdcContainsUnsetTraceId() {
|
private void assertThatMdcContainsUnsetTraceId(AutoConfig autoConfig) {
|
||||||
assertThat(isInvalidBraveTraceId() || isInvalidOtelTraceId()).isTrue();
|
boolean eitherOtelOrBrave = autoConfig.isOtel() || autoConfig.isBrave();
|
||||||
}
|
assertThat(eitherOtelOrBrave).isTrue();
|
||||||
|
if (autoConfig.isOtel()) {
|
||||||
private boolean isInvalidBraveTraceId() {
|
ThrowingConsumer<String> isNull = (traceId) -> assertThat(traceId).isNull();
|
||||||
return MDC.get("traceId") == null;
|
ThrowingConsumer<String> isZero = (traceId) -> assertThat(traceId)
|
||||||
}
|
.isEqualTo("00000000000000000000000000000000");
|
||||||
|
assertThat(MDC.get("traceId")).satisfiesAnyOf(isNull, isZero);
|
||||||
private boolean isInvalidOtelTraceId() {
|
}
|
||||||
return MDC.get("traceId").equals("00000000000000000000000000000000");
|
if (autoConfig.isBrave()) {
|
||||||
|
assertThat(MDC.get("traceId")).isNull();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
enum AutoConfig implements Supplier<ApplicationContextRunner> {
|
enum AutoConfig implements Supplier<ApplicationContextRunner> {
|
||||||
@ -237,6 +242,14 @@ class BaggagePropagationIntegrationTests {
|
|||||||
.withPropertyValues("management.tracing.baggage.local-fields=country-code,bp",
|
.withPropertyValues("management.tracing.baggage.local-fields=country-code,bp",
|
||||||
"management.tracing.baggage.correlation.fields=country-code,bp");
|
"management.tracing.baggage.correlation.fields=country-code,bp");
|
||||||
}
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
boolean isOtel() {
|
||||||
|
return name().startsWith("OTEL_");
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean isBrave() {
|
||||||
|
return name().startsWith("BRAVE_");
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user