Remove helper methods fromBytes from Trace/Span Id (#2727)
Signed-off-by: Bogdan Drutu <bogdandrutu@gmail.com>
This commit is contained in:
parent
d932baa919
commit
d6fea3a70a
|
|
@ -123,12 +123,6 @@ final class BigendianEncoding {
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void bytesToBase16(byte[] bytes, char[] dest) {
|
|
||||||
for (int i = 0; i < bytes.length; i++) {
|
|
||||||
byteToBase16(bytes[i], dest, i * 2);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Encodes the specified byte, and returns the encoded {@code String}.
|
* Encodes the specified byte, and returns the encoded {@code String}.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
|
|
@ -59,22 +59,6 @@ public final class SpanId {
|
||||||
&& BigendianEncoding.isValidBase16String(spanId);
|
&& BigendianEncoding.isValidBase16String(spanId);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the lowercase hex (base16) representation of the {@code SpanId} converted from the
|
|
||||||
* given bytes representation.
|
|
||||||
*
|
|
||||||
* @param spanIdBytes the bytes (8-byte array) representation of the {@code SpanId}.
|
|
||||||
* @return the lowercase hex (base16) representation of the {@code SpanId}.
|
|
||||||
* @throws NullPointerException if {@code spanIdBytes} is null.
|
|
||||||
* @throws IndexOutOfBoundsException if {@code spanIdBytes} too short.
|
|
||||||
*/
|
|
||||||
public static String fromBytes(byte[] spanIdBytes) {
|
|
||||||
Objects.requireNonNull(spanIdBytes, "spanIdBytes");
|
|
||||||
char[] result = getTemporaryBuffer();
|
|
||||||
BigendianEncoding.bytesToBase16(spanIdBytes, result);
|
|
||||||
return new String(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the bytes (8-byte array) representation of the {@code SpanId} converted from the given
|
* Returns the bytes (8-byte array) representation of the {@code SpanId} converted from the given
|
||||||
* lowercase hex (base16) representation.
|
* lowercase hex (base16) representation.
|
||||||
|
|
@ -98,9 +82,6 @@ public final class SpanId {
|
||||||
* rules applying to {@code SpanId}. Specifying 0 for the long value will effectively return
|
* rules applying to {@code SpanId}. Specifying 0 for the long value will effectively return
|
||||||
* {@link #getInvalid()}.
|
* {@link #getInvalid()}.
|
||||||
*
|
*
|
||||||
* <p>This is equivalent to calling {@link #fromBytes(byte[])} with the specified value stored as
|
|
||||||
* big-endian.
|
|
||||||
*
|
|
||||||
* @param id the higher part of the {@code TraceId}.
|
* @param id the higher part of the {@code TraceId}.
|
||||||
* @return the lowercase hex (base16) representation of the {@code SpanId}.
|
* @return the lowercase hex (base16) representation of the {@code SpanId}.
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -63,22 +63,6 @@ public final class TraceId {
|
||||||
&& BigendianEncoding.isValidBase16String(traceId);
|
&& BigendianEncoding.isValidBase16String(traceId);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the lowercase hex (base16) representation of the {@code TraceId} converted from the
|
|
||||||
* given bytes representation.
|
|
||||||
*
|
|
||||||
* @param traceIdBytes the bytes (16-byte array) representation of the {@code TraceId}.
|
|
||||||
* @return the lowercase hex (base16) representation of the {@code TraceId}.
|
|
||||||
* @throws NullPointerException if {@code traceIdBytes} is null.
|
|
||||||
* @throws IndexOutOfBoundsException if {@code traceIdBytes} too short.
|
|
||||||
*/
|
|
||||||
public static String fromBytes(byte[] traceIdBytes) {
|
|
||||||
Objects.requireNonNull(traceIdBytes, "traceIdBytes");
|
|
||||||
char[] result = getTemporaryBuffer();
|
|
||||||
BigendianEncoding.bytesToBase16(traceIdBytes, result);
|
|
||||||
return new String(result);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the bytes (16-byte array) representation of the {@code TraceId} converted from the
|
* Returns the bytes (16-byte array) representation of the {@code TraceId} converted from the
|
||||||
* given lowercase hex (base16) representation.
|
* given lowercase hex (base16) representation.
|
||||||
|
|
@ -102,9 +86,6 @@ public final class TraceId {
|
||||||
* rules applying to {@code TraceId}. Specifying 0 for both values will effectively return {@link
|
* rules applying to {@code TraceId}. Specifying 0 for both values will effectively return {@link
|
||||||
* #getInvalid()}.
|
* #getInvalid()}.
|
||||||
*
|
*
|
||||||
* <p>This is equivalent to calling {@link #fromBytes(byte[])} with the specified values stored as
|
|
||||||
* big-endian.
|
|
||||||
*
|
|
||||||
* @param traceIdLongHighPart the higher part of the long values representation of the {@code
|
* @param traceIdLongHighPart the higher part of the long values representation of the {@code
|
||||||
* TraceId}.
|
* TraceId}.
|
||||||
* @param traceIdLongLowPart the lower part of the long values representation of the {@code
|
* @param traceIdLongLowPart the lower part of the long values representation of the {@code
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,9 @@ import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
/** Unit tests for {@link SpanId}. */
|
/** Unit tests for {@link SpanId}. */
|
||||||
class SpanIdTest {
|
class SpanIdTest {
|
||||||
|
private static final String first = "0000000000000061";
|
||||||
private static final byte[] firstBytes = new byte[] {0, 0, 0, 0, 0, 0, 0, 'a'};
|
private static final byte[] firstBytes = new byte[] {0, 0, 0, 0, 0, 0, 0, 'a'};
|
||||||
|
private static final String second = "ff00000000000041";
|
||||||
private static final byte[] secondBytes = new byte[] {(byte) 0xFF, 0, 0, 0, 0, 0, 0, 'A'};
|
private static final byte[] secondBytes = new byte[] {(byte) 0xFF, 0, 0, 0, 0, 0, 0, 'A'};
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
@ -25,25 +27,18 @@ class SpanIdTest {
|
||||||
@Test
|
@Test
|
||||||
void isValid() {
|
void isValid() {
|
||||||
assertThat(SpanId.isValid(SpanId.getInvalid())).isFalse();
|
assertThat(SpanId.isValid(SpanId.getInvalid())).isFalse();
|
||||||
assertThat(SpanId.isValid(SpanId.fromBytes(firstBytes))).isTrue();
|
assertThat(SpanId.isValid(first)).isTrue();
|
||||||
assertThat(SpanId.isValid(SpanId.fromBytes(secondBytes))).isTrue();
|
assertThat(SpanId.isValid(second)).isTrue();
|
||||||
assertThat(SpanId.isValid("000000000000z000")).isFalse();
|
assertThat(SpanId.isValid("000000000000z000")).isFalse();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void fromLowerHex() {
|
void fromLowerHex() {
|
||||||
assertThat(SpanId.fromBytes(SpanId.asBytes("0000000000000000"))).isEqualTo(SpanId.getInvalid());
|
assertThat(SpanId.asBytes(SpanId.getInvalid())).isEqualTo(new byte[] {0, 0, 0, 0, 0, 0, 0, 0});
|
||||||
assertThat(SpanId.asBytes("0000000000000061")).isEqualTo(firstBytes);
|
assertThat(SpanId.asBytes("0000000000000061")).isEqualTo(firstBytes);
|
||||||
assertThat(SpanId.asBytes("ff00000000000041")).isEqualTo(secondBytes);
|
assertThat(SpanId.asBytes("ff00000000000041")).isEqualTo(secondBytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void toLowerHex() {
|
|
||||||
assertThat(SpanId.getInvalid()).isEqualTo("0000000000000000");
|
|
||||||
assertThat(SpanId.fromBytes(firstBytes)).isEqualTo("0000000000000061");
|
|
||||||
assertThat(SpanId.fromBytes(secondBytes)).isEqualTo("ff00000000000041");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void toFromLong() {
|
void toFromLong() {
|
||||||
Random random = new Random();
|
Random random = new Random();
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,6 @@ package io.opentelemetry.api.trace;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
import java.nio.ByteBuffer;
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
|
@ -17,11 +16,8 @@ class TraceIdTest {
|
||||||
new byte[] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'a'};
|
new byte[] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'a'};
|
||||||
private static final byte[] secondBytes =
|
private static final byte[] secondBytes =
|
||||||
new byte[] {(byte) 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'A'};
|
new byte[] {(byte) 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'A'};
|
||||||
private static final String first = TraceId.fromBytes(firstBytes);
|
private static final String first = "00000000000000000000000000000061";
|
||||||
|
private static final String second = "ff000000000000000000000000000041";
|
||||||
private static final String second =
|
|
||||||
TraceId.fromLongs(
|
|
||||||
ByteBuffer.wrap(secondBytes).getLong(), ByteBuffer.wrap(secondBytes, 8, 8).getLong());
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void invalid() {
|
void invalid() {
|
||||||
|
|
@ -44,53 +40,25 @@ class TraceIdTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testGetRandomTracePart() {
|
void testGetRandomTracePart() {
|
||||||
byte[] id = {
|
String traceId = "0102030405060708090a0b0c0d0e0f00";
|
||||||
0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0x0F, 0x00
|
|
||||||
};
|
|
||||||
String traceId = TraceId.fromBytes(id);
|
|
||||||
assertThat(TraceId.getTraceIdRandomPart(traceId)).isEqualTo(0x090A0B0C0D0E0F00L);
|
assertThat(TraceId.getTraceIdRandomPart(traceId)).isEqualTo(0x090A0B0C0D0E0F00L);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testGetRandomTracePart_NegativeLongRepresentation() {
|
void testGetRandomTracePart_NegativeLongRepresentation() {
|
||||||
byte[] id = {
|
String traceId = "ff01020304050600ff0a0b0c0d0e0f00";
|
||||||
(byte) 0xFF, // force a negative value
|
|
||||||
0x01,
|
|
||||||
0x02,
|
|
||||||
0x03,
|
|
||||||
0x04,
|
|
||||||
0x05,
|
|
||||||
0x06,
|
|
||||||
0x00,
|
|
||||||
(byte) 0xFF, // force a negative value
|
|
||||||
0x0A,
|
|
||||||
0x0B,
|
|
||||||
0x0C,
|
|
||||||
0x0D,
|
|
||||||
0x0E,
|
|
||||||
0x0F,
|
|
||||||
0x00
|
|
||||||
};
|
|
||||||
String traceId = TraceId.fromBytes(id);
|
|
||||||
assertThat(TraceId.highPartAsLong(traceId)).isEqualTo(0xFF01020304050600L);
|
assertThat(TraceId.highPartAsLong(traceId)).isEqualTo(0xFF01020304050600L);
|
||||||
assertThat(TraceId.lowPartAsLong(traceId)).isEqualTo(0xFF0A0B0C0D0E0F00L);
|
assertThat(TraceId.lowPartAsLong(traceId)).isEqualTo(0xFF0A0B0C0D0E0F00L);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void fromLowerHex() {
|
void asBytes() {
|
||||||
assertThat(TraceId.fromBytes(TraceId.asBytes("00000000000000000000000000000000")))
|
assertThat(TraceId.asBytes(TraceId.getInvalid()))
|
||||||
.isEqualTo(TraceId.getInvalid());
|
.isEqualTo(new byte[] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0});
|
||||||
assertThat(TraceId.asBytes("00000000000000000000000000000061")).isEqualTo(firstBytes);
|
assertThat(TraceId.asBytes("00000000000000000000000000000061")).isEqualTo(firstBytes);
|
||||||
assertThat(TraceId.asBytes("ff000000000000000000000000000041")).isEqualTo(secondBytes);
|
assertThat(TraceId.asBytes("ff000000000000000000000000000041")).isEqualTo(secondBytes);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
void toLowerHex() {
|
|
||||||
assertThat(TraceId.getInvalid()).isEqualTo("00000000000000000000000000000000");
|
|
||||||
assertThat(TraceId.fromBytes(firstBytes)).isEqualTo("00000000000000000000000000000061");
|
|
||||||
assertThat(TraceId.fromBytes(secondBytes)).isEqualTo("ff000000000000000000000000000041");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void toFromLongs() {
|
void toFromLongs() {
|
||||||
Random random = new Random();
|
Random random = new Random();
|
||||||
|
|
|
||||||
|
|
@ -15,14 +15,13 @@ import static io.opentelemetry.api.common.AttributeKey.stringArrayKey;
|
||||||
import static io.opentelemetry.api.common.AttributeKey.stringKey;
|
import static io.opentelemetry.api.common.AttributeKey.stringKey;
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
|
||||||
|
import com.google.common.io.BaseEncoding;
|
||||||
import com.google.protobuf.util.Durations;
|
import com.google.protobuf.util.Durations;
|
||||||
import com.google.protobuf.util.Timestamps;
|
import com.google.protobuf.util.Timestamps;
|
||||||
import io.opentelemetry.api.common.Attributes;
|
import io.opentelemetry.api.common.Attributes;
|
||||||
import io.opentelemetry.api.trace.SpanContext;
|
import io.opentelemetry.api.trace.SpanContext;
|
||||||
import io.opentelemetry.api.trace.SpanId;
|
|
||||||
import io.opentelemetry.api.trace.SpanKind;
|
import io.opentelemetry.api.trace.SpanKind;
|
||||||
import io.opentelemetry.api.trace.TraceFlags;
|
import io.opentelemetry.api.trace.TraceFlags;
|
||||||
import io.opentelemetry.api.trace.TraceId;
|
|
||||||
import io.opentelemetry.api.trace.TraceState;
|
import io.opentelemetry.api.trace.TraceState;
|
||||||
import io.opentelemetry.exporter.jaeger.proto.api_v2.Model;
|
import io.opentelemetry.exporter.jaeger.proto.api_v2.Model;
|
||||||
import io.opentelemetry.sdk.resources.Resource;
|
import io.opentelemetry.sdk.resources.Resource;
|
||||||
|
|
@ -42,6 +41,7 @@ import org.junit.jupiter.api.Test;
|
||||||
/** Unit tests for {@link Adapter}. */
|
/** Unit tests for {@link Adapter}. */
|
||||||
class AdapterTest {
|
class AdapterTest {
|
||||||
|
|
||||||
|
private static final BaseEncoding hex = BaseEncoding.base16().lowerCase();
|
||||||
private static final String LINK_TRACE_ID = "00000000000000000000000000cba123";
|
private static final String LINK_TRACE_ID = "00000000000000000000000000cba123";
|
||||||
private static final String LINK_SPAN_ID = "0000000000fed456";
|
private static final String LINK_SPAN_ID = "0000000000fed456";
|
||||||
private static final String TRACE_ID = "00000000000000000000000000abc123";
|
private static final String TRACE_ID = "00000000000000000000000000abc123";
|
||||||
|
|
@ -73,9 +73,8 @@ class AdapterTest {
|
||||||
|
|
||||||
// test
|
// test
|
||||||
Model.Span jaegerSpan = Adapter.toJaeger(span);
|
Model.Span jaegerSpan = Adapter.toJaeger(span);
|
||||||
assertThat(TraceId.fromBytes(jaegerSpan.getTraceId().toByteArray()))
|
assertThat(hex.encode(jaegerSpan.getTraceId().toByteArray())).isEqualTo(span.getTraceId());
|
||||||
.isEqualTo(span.getTraceId());
|
assertThat(hex.encode(jaegerSpan.getSpanId().toByteArray())).isEqualTo(span.getSpanId());
|
||||||
assertThat(SpanId.fromBytes(jaegerSpan.getSpanId().toByteArray())).isEqualTo(span.getSpanId());
|
|
||||||
assertThat(jaegerSpan.getOperationName()).isEqualTo("GET /api/endpoint");
|
assertThat(jaegerSpan.getOperationName()).isEqualTo("GET /api/endpoint");
|
||||||
assertThat(jaegerSpan.getStartTime()).isEqualTo(Timestamps.fromMillis(startMs));
|
assertThat(jaegerSpan.getStartTime()).isEqualTo(Timestamps.fromMillis(startMs));
|
||||||
assertThat(Durations.toMillis(jaegerSpan.getDuration())).isEqualTo(duration);
|
assertThat(Durations.toMillis(jaegerSpan.getDuration())).isEqualTo(duration);
|
||||||
|
|
@ -216,8 +215,8 @@ class AdapterTest {
|
||||||
Model.SpanRef spanRef = Adapter.toSpanRef(link);
|
Model.SpanRef spanRef = Adapter.toSpanRef(link);
|
||||||
|
|
||||||
// verify
|
// verify
|
||||||
assertThat(SpanId.fromBytes(spanRef.getSpanId().toByteArray())).isEqualTo(SPAN_ID);
|
assertThat(hex.encode(spanRef.getSpanId().toByteArray())).isEqualTo(SPAN_ID);
|
||||||
assertThat(TraceId.fromBytes(spanRef.getTraceId().toByteArray())).isEqualTo(TRACE_ID);
|
assertThat(hex.encode(spanRef.getTraceId().toByteArray())).isEqualTo(TRACE_ID);
|
||||||
assertThat(spanRef.getRefType()).isEqualTo(Model.SpanRefType.FOLLOWS_FROM);
|
assertThat(spanRef.getRefType()).isEqualTo(Model.SpanRefType.FOLLOWS_FROM);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -330,8 +329,8 @@ class AdapterTest {
|
||||||
boolean found = false;
|
boolean found = false;
|
||||||
for (Model.SpanRef spanRef : jaegerSpan.getReferencesList()) {
|
for (Model.SpanRef spanRef : jaegerSpan.getReferencesList()) {
|
||||||
if (Model.SpanRefType.FOLLOWS_FROM.equals(spanRef.getRefType())) {
|
if (Model.SpanRefType.FOLLOWS_FROM.equals(spanRef.getRefType())) {
|
||||||
assertThat(TraceId.fromBytes(spanRef.getTraceId().toByteArray())).isEqualTo(LINK_TRACE_ID);
|
assertThat(hex.encode(spanRef.getTraceId().toByteArray())).isEqualTo(LINK_TRACE_ID);
|
||||||
assertThat(SpanId.fromBytes(spanRef.getSpanId().toByteArray())).isEqualTo(LINK_SPAN_ID);
|
assertThat(hex.encode(spanRef.getSpanId().toByteArray())).isEqualTo(LINK_SPAN_ID);
|
||||||
found = true;
|
found = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -342,8 +341,8 @@ class AdapterTest {
|
||||||
boolean found = false;
|
boolean found = false;
|
||||||
for (Model.SpanRef spanRef : jaegerSpan.getReferencesList()) {
|
for (Model.SpanRef spanRef : jaegerSpan.getReferencesList()) {
|
||||||
if (Model.SpanRefType.CHILD_OF.equals(spanRef.getRefType())) {
|
if (Model.SpanRefType.CHILD_OF.equals(spanRef.getRefType())) {
|
||||||
assertThat(TraceId.fromBytes(spanRef.getTraceId().toByteArray())).isEqualTo(TRACE_ID);
|
assertThat(hex.encode(spanRef.getTraceId().toByteArray())).isEqualTo(TRACE_ID);
|
||||||
assertThat(SpanId.fromBytes(spanRef.getSpanId().toByteArray())).isEqualTo(PARENT_SPAN_ID);
|
assertThat(hex.encode(spanRef.getSpanId().toByteArray())).isEqualTo(PARENT_SPAN_ID);
|
||||||
found = true;
|
found = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,7 @@ import static org.mockito.Mockito.times;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
import com.google.common.collect.Lists;
|
import com.google.common.collect.Lists;
|
||||||
|
import com.google.common.io.BaseEncoding;
|
||||||
import com.google.common.io.Closer;
|
import com.google.common.io.Closer;
|
||||||
import io.grpc.ManagedChannel;
|
import io.grpc.ManagedChannel;
|
||||||
import io.grpc.Server;
|
import io.grpc.Server;
|
||||||
|
|
@ -23,10 +24,8 @@ import io.grpc.stub.StreamObserver;
|
||||||
import io.opentelemetry.api.common.AttributeKey;
|
import io.opentelemetry.api.common.AttributeKey;
|
||||||
import io.opentelemetry.api.common.Attributes;
|
import io.opentelemetry.api.common.Attributes;
|
||||||
import io.opentelemetry.api.trace.SpanContext;
|
import io.opentelemetry.api.trace.SpanContext;
|
||||||
import io.opentelemetry.api.trace.SpanId;
|
|
||||||
import io.opentelemetry.api.trace.SpanKind;
|
import io.opentelemetry.api.trace.SpanKind;
|
||||||
import io.opentelemetry.api.trace.TraceFlags;
|
import io.opentelemetry.api.trace.TraceFlags;
|
||||||
import io.opentelemetry.api.trace.TraceId;
|
|
||||||
import io.opentelemetry.api.trace.TraceState;
|
import io.opentelemetry.api.trace.TraceState;
|
||||||
import io.opentelemetry.exporter.jaeger.proto.api_v2.Collector;
|
import io.opentelemetry.exporter.jaeger.proto.api_v2.Collector;
|
||||||
import io.opentelemetry.exporter.jaeger.proto.api_v2.CollectorServiceGrpc;
|
import io.opentelemetry.exporter.jaeger.proto.api_v2.CollectorServiceGrpc;
|
||||||
|
|
@ -50,6 +49,7 @@ import org.mockito.ArgumentCaptor;
|
||||||
import org.mockito.ArgumentMatchers;
|
import org.mockito.ArgumentMatchers;
|
||||||
|
|
||||||
class JaegerGrpcSpanExporterTest {
|
class JaegerGrpcSpanExporterTest {
|
||||||
|
private static final BaseEncoding hex = BaseEncoding.base16().lowerCase();
|
||||||
private static final String TRACE_ID = "00000000000000000000000000abc123";
|
private static final String TRACE_ID = "00000000000000000000000000abc123";
|
||||||
private static final String SPAN_ID = "0000000000def456";
|
private static final String SPAN_ID = "0000000000def456";
|
||||||
private static final String SPAN_ID_2 = "0000000000aef789";
|
private static final String SPAN_ID_2 = "0000000000aef789";
|
||||||
|
|
@ -125,7 +125,7 @@ class JaegerGrpcSpanExporterTest {
|
||||||
|
|
||||||
Model.Batch batch = requestCaptor.getValue().getBatch();
|
Model.Batch batch = requestCaptor.getValue().getBatch();
|
||||||
assertThat(batch.getSpans(0).getOperationName()).isEqualTo("GET /api/endpoint");
|
assertThat(batch.getSpans(0).getOperationName()).isEqualTo("GET /api/endpoint");
|
||||||
assertThat(SpanId.fromBytes(batch.getSpans(0).getSpanId().toByteArray())).isEqualTo(SPAN_ID);
|
assertThat(hex.encode(batch.getSpans(0).getSpanId().toByteArray())).isEqualTo(SPAN_ID);
|
||||||
|
|
||||||
assertThat(
|
assertThat(
|
||||||
getTagValue(batch.getProcess().getTagsList(), "resource-attr-key")
|
getTagValue(batch.getProcess().getTagsList(), "resource-attr-key")
|
||||||
|
|
@ -214,14 +214,12 @@ class JaegerGrpcSpanExporterTest {
|
||||||
if (processTag.isPresent()) {
|
if (processTag.isPresent()) {
|
||||||
assertThat(processTag2.isPresent()).isFalse();
|
assertThat(processTag2.isPresent()).isFalse();
|
||||||
assertThat(batch.getSpans(0).getOperationName()).isEqualTo("GET /api/endpoint/1");
|
assertThat(batch.getSpans(0).getOperationName()).isEqualTo("GET /api/endpoint/1");
|
||||||
assertThat(SpanId.fromBytes(batch.getSpans(0).getSpanId().toByteArray()))
|
assertThat(hex.encode(batch.getSpans(0).getSpanId().toByteArray())).isEqualTo(SPAN_ID);
|
||||||
.isEqualTo(SPAN_ID);
|
|
||||||
assertThat(processTag.get().getVStr()).isEqualTo("resource-attr-value-1");
|
assertThat(processTag.get().getVStr()).isEqualTo("resource-attr-value-1");
|
||||||
assertThat(batch.getProcess().getServiceName()).isEqualTo("myServiceName1");
|
assertThat(batch.getProcess().getServiceName()).isEqualTo("myServiceName1");
|
||||||
} else if (processTag2.isPresent()) {
|
} else if (processTag2.isPresent()) {
|
||||||
assertThat(batch.getSpans(0).getOperationName()).isEqualTo("GET /api/endpoint/2");
|
assertThat(batch.getSpans(0).getOperationName()).isEqualTo("GET /api/endpoint/2");
|
||||||
assertThat(SpanId.fromBytes(batch.getSpans(0).getSpanId().toByteArray()))
|
assertThat(hex.encode(batch.getSpans(0).getSpanId().toByteArray())).isEqualTo(SPAN_ID_2);
|
||||||
.isEqualTo(SPAN_ID_2);
|
|
||||||
assertThat(processTag2.get().getVStr()).isEqualTo("resource-attr-value-2");
|
assertThat(processTag2.get().getVStr()).isEqualTo("resource-attr-value-2");
|
||||||
assertThat(batch.getProcess().getServiceName()).isEqualTo("myServiceName2");
|
assertThat(batch.getProcess().getServiceName()).isEqualTo("myServiceName2");
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -232,7 +230,7 @@ class JaegerGrpcSpanExporterTest {
|
||||||
|
|
||||||
private static void verifyBatch(Model.Batch batch) throws Exception {
|
private static void verifyBatch(Model.Batch batch) throws Exception {
|
||||||
assertThat(batch.getSpansCount()).isEqualTo(1);
|
assertThat(batch.getSpansCount()).isEqualTo(1);
|
||||||
assertThat(TraceId.fromBytes(batch.getSpans(0).getTraceId().toByteArray())).isEqualTo(TRACE_ID);
|
assertThat(hex.encode(batch.getSpans(0).getTraceId().toByteArray())).isEqualTo(TRACE_ID);
|
||||||
assertThat(batch.getProcess().getTagsCount()).isEqualTo(5);
|
assertThat(batch.getProcess().getTagsCount()).isEqualTo(5);
|
||||||
|
|
||||||
assertThat(
|
assertThat(
|
||||||
|
|
|
||||||
|
|
@ -8,10 +8,8 @@ package io.opentelemetry.exporter.otlp.trace;
|
||||||
import io.opentelemetry.api.common.AttributeKey;
|
import io.opentelemetry.api.common.AttributeKey;
|
||||||
import io.opentelemetry.api.common.Attributes;
|
import io.opentelemetry.api.common.Attributes;
|
||||||
import io.opentelemetry.api.trace.SpanContext;
|
import io.opentelemetry.api.trace.SpanContext;
|
||||||
import io.opentelemetry.api.trace.SpanId;
|
|
||||||
import io.opentelemetry.api.trace.SpanKind;
|
import io.opentelemetry.api.trace.SpanKind;
|
||||||
import io.opentelemetry.api.trace.TraceFlags;
|
import io.opentelemetry.api.trace.TraceFlags;
|
||||||
import io.opentelemetry.api.trace.TraceId;
|
|
||||||
import io.opentelemetry.api.trace.TraceState;
|
import io.opentelemetry.api.trace.TraceState;
|
||||||
import io.opentelemetry.sdk.common.InstrumentationLibraryInfo;
|
import io.opentelemetry.sdk.common.InstrumentationLibraryInfo;
|
||||||
import io.opentelemetry.sdk.resources.Resource;
|
import io.opentelemetry.sdk.resources.Resource;
|
||||||
|
|
@ -47,12 +45,8 @@ public class RequestMarshalState {
|
||||||
|
|
||||||
private static final InstrumentationLibraryInfo INSTRUMENTATION_LIBRARY_INFO =
|
private static final InstrumentationLibraryInfo INSTRUMENTATION_LIBRARY_INFO =
|
||||||
InstrumentationLibraryInfo.create("name", null);
|
InstrumentationLibraryInfo.create("name", null);
|
||||||
private static final byte[] TRACE_ID_BYTES =
|
private static final String TRACE_ID = "7b2e170db4df2d593ddb4ddf2ddf2d59";
|
||||||
new byte[] {123, 46, 23, 78, 12, 5, (byte) 180, (byte) 223, 45, 89, 71, 61, 62, 29, 34, 54};
|
private static final String SPAN_ID = "170d3ddb4d23e81f";
|
||||||
private static final String TRACE_ID = TraceId.fromBytes(TRACE_ID_BYTES);
|
|
||||||
private static final byte[] SPAN_ID_BYTES =
|
|
||||||
new byte[] {(byte) 198, (byte) 245, (byte) 213, (byte) 156, 46, 31, 29, 101};
|
|
||||||
private static final String SPAN_ID = SpanId.fromBytes(SPAN_ID_BYTES);
|
|
||||||
private static final SpanContext SPAN_CONTEXT =
|
private static final SpanContext SPAN_CONTEXT =
|
||||||
SpanContext.create(TRACE_ID, SPAN_ID, TraceFlags.getSampled(), TraceState.getDefault());
|
SpanContext.create(TRACE_ID, SPAN_ID, TraceFlags.getSampled(), TraceState.getDefault());
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,10 +11,8 @@ import com.google.protobuf.CodedOutputStream;
|
||||||
import io.opentelemetry.api.common.AttributeKey;
|
import io.opentelemetry.api.common.AttributeKey;
|
||||||
import io.opentelemetry.api.common.Attributes;
|
import io.opentelemetry.api.common.Attributes;
|
||||||
import io.opentelemetry.api.trace.SpanContext;
|
import io.opentelemetry.api.trace.SpanContext;
|
||||||
import io.opentelemetry.api.trace.SpanId;
|
|
||||||
import io.opentelemetry.api.trace.SpanKind;
|
import io.opentelemetry.api.trace.SpanKind;
|
||||||
import io.opentelemetry.api.trace.TraceFlags;
|
import io.opentelemetry.api.trace.TraceFlags;
|
||||||
import io.opentelemetry.api.trace.TraceId;
|
|
||||||
import io.opentelemetry.api.trace.TraceState;
|
import io.opentelemetry.api.trace.TraceState;
|
||||||
import io.opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest;
|
import io.opentelemetry.proto.collector.trace.v1.ExportTraceServiceRequest;
|
||||||
import io.opentelemetry.sdk.common.InstrumentationLibraryInfo;
|
import io.opentelemetry.sdk.common.InstrumentationLibraryInfo;
|
||||||
|
|
@ -52,11 +50,8 @@ class TraceMarshalerTest {
|
||||||
|
|
||||||
private static final InstrumentationLibraryInfo INSTRUMENTATION_LIBRARY_INFO =
|
private static final InstrumentationLibraryInfo INSTRUMENTATION_LIBRARY_INFO =
|
||||||
InstrumentationLibraryInfo.create("name", null);
|
InstrumentationLibraryInfo.create("name", null);
|
||||||
private static final byte[] TRACE_ID_BYTES =
|
private static final String TRACE_ID = "00000000000000000000000001020304";
|
||||||
new byte[] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4};
|
private static final String SPAN_ID = "0000000004030201";
|
||||||
private static final String TRACE_ID = TraceId.fromBytes(TRACE_ID_BYTES);
|
|
||||||
private static final byte[] SPAN_ID_BYTES = new byte[] {0, 0, 0, 0, 4, 3, 2, 1};
|
|
||||||
private static final String SPAN_ID = SpanId.fromBytes(SPAN_ID_BYTES);
|
|
||||||
|
|
||||||
private static final SpanContext SPAN_CONTEXT =
|
private static final SpanContext SPAN_CONTEXT =
|
||||||
SpanContext.create(
|
SpanContext.create(
|
||||||
|
|
|
||||||
|
|
@ -22,11 +22,9 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import com.google.protobuf.ByteString;
|
import com.google.protobuf.ByteString;
|
||||||
import io.opentelemetry.api.common.Attributes;
|
import io.opentelemetry.api.common.Attributes;
|
||||||
import io.opentelemetry.api.trace.SpanContext;
|
import io.opentelemetry.api.trace.SpanContext;
|
||||||
import io.opentelemetry.api.trace.SpanId;
|
|
||||||
import io.opentelemetry.api.trace.SpanKind;
|
import io.opentelemetry.api.trace.SpanKind;
|
||||||
import io.opentelemetry.api.trace.StatusCode;
|
import io.opentelemetry.api.trace.StatusCode;
|
||||||
import io.opentelemetry.api.trace.TraceFlags;
|
import io.opentelemetry.api.trace.TraceFlags;
|
||||||
import io.opentelemetry.api.trace.TraceId;
|
|
||||||
import io.opentelemetry.api.trace.TraceState;
|
import io.opentelemetry.api.trace.TraceState;
|
||||||
import io.opentelemetry.proto.common.v1.AnyValue;
|
import io.opentelemetry.proto.common.v1.AnyValue;
|
||||||
import io.opentelemetry.proto.common.v1.KeyValue;
|
import io.opentelemetry.proto.common.v1.KeyValue;
|
||||||
|
|
@ -42,9 +40,9 @@ import org.junit.jupiter.api.Test;
|
||||||
class SpanAdapterTest {
|
class SpanAdapterTest {
|
||||||
private static final byte[] TRACE_ID_BYTES =
|
private static final byte[] TRACE_ID_BYTES =
|
||||||
new byte[] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4};
|
new byte[] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4};
|
||||||
private static final String TRACE_ID = TraceId.fromBytes(TRACE_ID_BYTES);
|
private static final String TRACE_ID = "00000000000000000000000001020304";
|
||||||
private static final byte[] SPAN_ID_BYTES = new byte[] {0, 0, 0, 0, 4, 3, 2, 1};
|
private static final byte[] SPAN_ID_BYTES = new byte[] {0, 0, 0, 0, 4, 3, 2, 1};
|
||||||
private static final String SPAN_ID = SpanId.fromBytes(SPAN_ID_BYTES);
|
private static final String SPAN_ID = "0000000004030201";
|
||||||
private static final SpanContext SPAN_CONTEXT =
|
private static final SpanContext SPAN_CONTEXT =
|
||||||
SpanContext.create(TRACE_ID, SPAN_ID, TraceFlags.getSampled(), TraceState.getDefault());
|
SpanContext.create(TRACE_ID, SPAN_ID, TraceFlags.getSampled(), TraceState.getDefault());
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,6 @@ import io.opentelemetry.api.trace.Span;
|
||||||
import io.opentelemetry.api.trace.SpanContext;
|
import io.opentelemetry.api.trace.SpanContext;
|
||||||
import io.opentelemetry.api.trace.SpanKind;
|
import io.opentelemetry.api.trace.SpanKind;
|
||||||
import io.opentelemetry.api.trace.TraceFlags;
|
import io.opentelemetry.api.trace.TraceFlags;
|
||||||
import io.opentelemetry.api.trace.TraceId;
|
|
||||||
import io.opentelemetry.api.trace.TraceState;
|
import io.opentelemetry.api.trace.TraceState;
|
||||||
import io.opentelemetry.context.Context;
|
import io.opentelemetry.context.Context;
|
||||||
import io.opentelemetry.sdk.trace.IdGenerator;
|
import io.opentelemetry.sdk.trace.IdGenerator;
|
||||||
|
|
@ -148,26 +147,7 @@ class TraceIdRatioBasedSamplerTest {
|
||||||
final Sampler defaultProbability = Sampler.traceIdRatioBased(0.0001);
|
final Sampler defaultProbability = Sampler.traceIdRatioBased(0.0001);
|
||||||
// This traceId will not be sampled by the Probability Sampler because the last 8 bytes as long
|
// This traceId will not be sampled by the Probability Sampler because the last 8 bytes as long
|
||||||
// is not less than probability * Long.MAX_VALUE;
|
// is not less than probability * Long.MAX_VALUE;
|
||||||
String notSampledTraceId =
|
String notSampledTraceId = "00000000000000008fffffffffffffff";
|
||||||
TraceId.fromBytes(
|
|
||||||
new byte[] {
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
(byte) 0x8F,
|
|
||||||
(byte) 0xFF,
|
|
||||||
(byte) 0xFF,
|
|
||||||
(byte) 0xFF,
|
|
||||||
(byte) 0xFF,
|
|
||||||
(byte) 0xFF,
|
|
||||||
(byte) 0xFF,
|
|
||||||
(byte) 0xFF
|
|
||||||
});
|
|
||||||
SamplingResult samplingResult1 =
|
SamplingResult samplingResult1 =
|
||||||
defaultProbability.shouldSample(
|
defaultProbability.shouldSample(
|
||||||
invalidParentContext,
|
invalidParentContext,
|
||||||
|
|
@ -179,26 +159,7 @@ class TraceIdRatioBasedSamplerTest {
|
||||||
assertThat(samplingResult1.getDecision()).isEqualTo(SamplingDecision.DROP);
|
assertThat(samplingResult1.getDecision()).isEqualTo(SamplingDecision.DROP);
|
||||||
// This traceId will be sampled by the Probability Sampler because the last 8 bytes as long
|
// This traceId will be sampled by the Probability Sampler because the last 8 bytes as long
|
||||||
// is less than probability * Long.MAX_VALUE;
|
// is less than probability * Long.MAX_VALUE;
|
||||||
String sampledTraceId =
|
String sampledTraceId = "0000ffffffffffff0000000000000000";
|
||||||
TraceId.fromBytes(
|
|
||||||
new byte[] {
|
|
||||||
(byte) 0x00,
|
|
||||||
(byte) 0x00,
|
|
||||||
(byte) 0xFF,
|
|
||||||
(byte) 0xFF,
|
|
||||||
(byte) 0xFF,
|
|
||||||
(byte) 0xFF,
|
|
||||||
(byte) 0xFF,
|
|
||||||
(byte) 0xFF,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
0
|
|
||||||
});
|
|
||||||
SamplingResult samplingResult2 =
|
SamplingResult samplingResult2 =
|
||||||
defaultProbability.shouldSample(
|
defaultProbability.shouldSample(
|
||||||
invalidParentContext,
|
invalidParentContext,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue