diff --git a/instrumentation/grpc-1.6/library/src/test/java/io/opentelemetry/instrumentation/grpc/v1_6/MetadataSetterTest.java b/instrumentation/grpc-1.6/library/src/test/java/io/opentelemetry/instrumentation/grpc/v1_6/MetadataSetterTest.java index a36105f58bbf..f138f4db0a4e 100644 --- a/instrumentation/grpc-1.6/library/src/test/java/io/opentelemetry/instrumentation/grpc/v1_6/MetadataSetterTest.java +++ b/instrumentation/grpc-1.6/library/src/test/java/io/opentelemetry/instrumentation/grpc/v1_6/MetadataSetterTest.java @@ -5,28 +5,63 @@ package io.opentelemetry.instrumentation.grpc.v1_6; -import static org.junit.Assert.assertTrue; +import static org.assertj.core.api.Assertions.assertThat; import io.grpc.Metadata; +import io.opentelemetry.api.trace.Span; +import io.opentelemetry.api.trace.SpanContext; +import io.opentelemetry.api.trace.SpanId; +import io.opentelemetry.api.trace.TraceFlags; +import io.opentelemetry.api.trace.TraceId; +import io.opentelemetry.api.trace.TraceState; +import io.opentelemetry.api.trace.propagation.W3CTraceContextPropagator; import io.opentelemetry.context.Context; -import io.opentelemetry.instrumentation.grpc.v1_6.propagator.GrpcPropagator; +import io.opentelemetry.context.propagation.TextMapGetter; +import io.opentelemetry.context.propagation.TextMapPropagator; +import javax.annotation.Nullable; import org.junit.jupiter.api.Test; class MetadataSetterTest { - @Test - void checkThatIterableSizeEqualsOne() { - GrpcPropagator testGrpcPropagator = new GrpcPropagator(); - Metadata metadata = new Metadata(); - testGrpcPropagator.inject(Context.current(), metadata, MetadataSetter.INSTANCE); - - int size = 0; - for (String s : - metadata.getAll(Metadata.Key.of(testGrpcPropagator.fields().get(0), Metadata.ASCII_STRING_MARSHALLER))) { - if (s != null) { - size++; - } - } - assertTrue(size == 1); + @Test + void overwriteTracingHeader() { + Metadata metadata = new Metadata(); + TextMapPropagator propagator = W3CTraceContextPropagator.getInstance(); + for (int i = 1; i <= 2; i++) { + Context context = + Context.root() + .with( + Span.wrap( + SpanContext.create( + TraceId.fromLongs(0, i), + SpanId.fromLong(i), + TraceFlags.getDefault(), + TraceState.getDefault()))); + propagator.inject(context, metadata, MetadataSetter.INSTANCE); } + + assertThat(metadata.getAll(Metadata.Key.of("traceparent", Metadata.ASCII_STRING_MARSHALLER))) + .hasSize(1); + + Context context = + propagator.extract( + Context.root(), + metadata, + new TextMapGetter() { + @Override + public Iterable keys(Metadata metadata) { + return metadata.keys(); + } + + @Nullable + @Override + public String get(@Nullable Metadata metadata, String key) { + return metadata.get(Metadata.Key.of(key, Metadata.ASCII_STRING_MARSHALLER)); + } + }); + + SpanContext spanContext = Span.fromContext(context).getSpanContext(); + assertThat(spanContext.getTraceId()).isEqualTo(TraceId.fromLongs(0, 2)); + assertThat(spanContext.getSpanId()).isEqualTo(SpanId.fromLong(2)); + } } diff --git a/instrumentation/grpc-1.6/library/src/test/java/io/opentelemetry/instrumentation/grpc/v1_6/propagator/GrpcPropagator.java b/instrumentation/grpc-1.6/library/src/test/java/io/opentelemetry/instrumentation/grpc/v1_6/propagator/GrpcPropagator.java deleted file mode 100644 index da6e2a2de0f1..000000000000 --- a/instrumentation/grpc-1.6/library/src/test/java/io/opentelemetry/instrumentation/grpc/v1_6/propagator/GrpcPropagator.java +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright The OpenTelemetry Authors - * SPDX-License-Identifier: Apache-2.0 - */ - -package io.opentelemetry.instrumentation.grpc.v1_6.propagator; - -import io.opentelemetry.context.Context; -import io.opentelemetry.context.propagation.TextMapGetter; -import io.opentelemetry.context.propagation.TextMapPropagator; -import io.opentelemetry.context.propagation.TextMapSetter; - -import java.util.Arrays; -import java.util.Collections; -import java.util.List; - -public class GrpcPropagator implements TextMapPropagator { - - static final String FIELD = "X-grpc-field"; - private static final String METADATA = "value"; - private static final List FIELDS = - Collections.unmodifiableList(Arrays.asList(FIELD)); - - @Override - public List fields() { - return FIELDS; - } - - @Override - public void inject(Context context, C carrier, TextMapSetter setter) { - for (int i = 0; i < 2; i++) { - setter.set(carrier, FIELD, METADATA); - } - } - - @Override - public Context extract(Context context, C carrier, TextMapGetter getter) { - return context; - } -}