package com.github.kristofa.brave.grpc;
import com.github.kristofa.brave.SpanId;
import com.github.kristofa.brave.grpc.BraveGrpcClientInterceptor.GrpcClientRequestAdapter;
import io.grpc.Metadata;
import io.grpc.examples.helloworld.GreeterGrpc;
import org.junit.Test;
import static org.assertj.core.api.Assertions.assertThat;
/** Particularly, this demonstrates what metadata values look like for non-java developers. */
public class GrpcClientRequestAdapterTest {
Metadata metadata = new Metadata();
GrpcClientRequestAdapter adapter =
new GrpcClientRequestAdapter(GreeterGrpc.METHOD_SAY_HELLO, metadata);
@Test
public void nullSpanIdMeansUnsampled() throws Exception {
adapter.addSpanIdToRequest(null);
assertThat(metadata.keys())
.containsExactly("x-b3-sampled");
assertThat(metadata.get(BravePropagationKeys.Sampled))
.isEqualTo("0");
}
@Test
public void sampled_rootSpan() throws Exception {
adapter.addSpanIdToRequest(SpanId.builder().traceId(1234L).spanId(1234L).build());
assertThat(metadata.keys())
.containsExactlyInAnyOrder("x-b3-sampled", "x-b3-traceid", "x-b3-spanid");
assertThat(metadata.get(BravePropagationKeys.Sampled))
.isEqualTo("1");
assertThat(metadata.get(BravePropagationKeys.TraceId))
.isEqualTo("00000000000004d2");
assertThat(metadata.get(BravePropagationKeys.SpanId))
.isEqualTo("4d2");
}
@Test
public void sampled_childSpan() throws Exception {
adapter.addSpanIdToRequest(SpanId.builder().traceId(1234L).parentId(1234L).spanId(5678L).build());
assertThat(metadata.keys())
.containsExactlyInAnyOrder("x-b3-sampled", "x-b3-traceid", "x-b3-spanid", "x-b3-parentspanid");
assertThat(metadata.get(BravePropagationKeys.Sampled))
.isEqualTo("1");
assertThat(metadata.get(BravePropagationKeys.TraceId))
.isEqualTo("00000000000004d2");
assertThat(metadata.get(BravePropagationKeys.ParentSpanId))
.isEqualTo("4d2");
assertThat(metadata.get(BravePropagationKeys.SpanId))
.isEqualTo("162e");
}
@Test
public void traceId_when128bit() throws Exception {
adapter.addSpanIdToRequest(SpanId.builder().traceIdHigh(1L).traceId(2L).spanId(2L).build());
assertThat(metadata.keys())
.containsExactlyInAnyOrder("x-b3-sampled", "x-b3-traceid", "x-b3-spanid");
assertThat(metadata.get(BravePropagationKeys.Sampled))
.isEqualTo("1");
assertThat(metadata.get(BravePropagationKeys.TraceId))
.isEqualTo("00000000000000010000000000000002");
assertThat(metadata.get(BravePropagationKeys.SpanId))
.isEqualTo("2");
}
}