Let LogDataBuilder take a SpanContext directly. (#3942)
* Let LogDataBuilder take a SpanContext directly. * rename to setContext() based on PR review, and simplify test code. * Update sdk/logs/src/main/java/io/opentelemetry/sdk/logs/data/LogDataBuilder.java Co-authored-by: Anuraag Agrawal <anuraaga@gmail.com>
This commit is contained in:
parent
74fb36b6cb
commit
04239495ac
|
|
@ -12,11 +12,9 @@ import static org.assertj.core.api.Assertions.assertThat;
|
|||
|
||||
import io.github.netmikey.logunit.api.LogCapturer;
|
||||
import io.opentelemetry.api.common.Attributes;
|
||||
import io.opentelemetry.api.trace.Span;
|
||||
import io.opentelemetry.api.trace.SpanContext;
|
||||
import io.opentelemetry.api.trace.TraceFlags;
|
||||
import io.opentelemetry.api.trace.TraceState;
|
||||
import io.opentelemetry.context.Context;
|
||||
import io.opentelemetry.sdk.common.InstrumentationLibraryInfo;
|
||||
import io.opentelemetry.sdk.logs.data.LogData;
|
||||
import io.opentelemetry.sdk.logs.data.LogDataBuilder;
|
||||
|
|
@ -44,15 +42,12 @@ class OtlpJsonLoggingLogExporterTest {
|
|||
.setSeverityText("INFO")
|
||||
.setEpoch(1631533710L, TimeUnit.MILLISECONDS)
|
||||
.setAttributes(Attributes.of(stringKey("animal"), "cat", longKey("lives"), 9L))
|
||||
.setContext(
|
||||
Context.root()
|
||||
.with(
|
||||
Span.wrap(
|
||||
SpanContext.create(
|
||||
"12345678876543211234567887654322",
|
||||
"8765432112345876",
|
||||
TraceFlags.getDefault(),
|
||||
TraceState.getDefault()))))
|
||||
.setSpanContext(
|
||||
SpanContext.create(
|
||||
"12345678876543211234567887654322",
|
||||
"8765432112345876",
|
||||
TraceFlags.getDefault(),
|
||||
TraceState.getDefault()))
|
||||
.build();
|
||||
|
||||
private static final LogData LOG2 =
|
||||
|
|
@ -63,15 +58,12 @@ class OtlpJsonLoggingLogExporterTest {
|
|||
.setSeverityText("INFO")
|
||||
.setEpoch(1631533710L, TimeUnit.MILLISECONDS)
|
||||
.setAttributes(Attributes.of(booleanKey("important"), true))
|
||||
.setContext(
|
||||
Context.root()
|
||||
.with(
|
||||
Span.wrap(
|
||||
SpanContext.create(
|
||||
"12345678876543211234567887654322",
|
||||
"8765432112345875",
|
||||
TraceFlags.getDefault(),
|
||||
TraceState.getDefault()))))
|
||||
.setSpanContext(
|
||||
SpanContext.create(
|
||||
"12345678876543211234567887654322",
|
||||
"8765432112345875",
|
||||
TraceFlags.getDefault(),
|
||||
TraceState.getDefault()))
|
||||
.build();
|
||||
|
||||
@RegisterExtension
|
||||
|
|
|
|||
|
|
@ -11,11 +11,9 @@ import static java.util.Collections.singletonList;
|
|||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
import io.opentelemetry.api.common.Attributes;
|
||||
import io.opentelemetry.api.trace.Span;
|
||||
import io.opentelemetry.api.trace.SpanContext;
|
||||
import io.opentelemetry.api.trace.TraceFlags;
|
||||
import io.opentelemetry.api.trace.TraceState;
|
||||
import io.opentelemetry.context.Context;
|
||||
import io.opentelemetry.sdk.common.CompletableResultCode;
|
||||
import io.opentelemetry.sdk.common.InstrumentationLibraryInfo;
|
||||
import io.opentelemetry.sdk.logs.data.LogData;
|
||||
|
|
@ -59,15 +57,12 @@ class SystemOutLogExporterTest {
|
|||
.setBody("message")
|
||||
.setSeverity(Severity.ERROR3)
|
||||
.setEpoch(timestamp, TimeUnit.MILLISECONDS)
|
||||
.setContext(
|
||||
Context.root()
|
||||
.with(
|
||||
Span.wrap(
|
||||
SpanContext.create(
|
||||
"00000000000000010000000000000002",
|
||||
"0000000000000003",
|
||||
TraceFlags.getDefault(),
|
||||
TraceState.getDefault()))))
|
||||
.setSpanContext(
|
||||
SpanContext.create(
|
||||
"00000000000000010000000000000002",
|
||||
"0000000000000003",
|
||||
TraceFlags.getDefault(),
|
||||
TraceState.getDefault()))
|
||||
.build();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,13 +14,11 @@ import com.google.protobuf.util.JsonFormat;
|
|||
import io.opentelemetry.api.common.AttributeKey;
|
||||
import io.opentelemetry.api.common.Attributes;
|
||||
import io.opentelemetry.api.internal.OtelEncodingUtils;
|
||||
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.context.Context;
|
||||
import io.opentelemetry.exporter.otlp.internal.Marshaler;
|
||||
import io.opentelemetry.proto.common.v1.AnyValue;
|
||||
import io.opentelemetry.proto.common.v1.InstrumentationLibrary;
|
||||
|
|
@ -63,15 +61,9 @@ class LogsRequestMarshalerTest {
|
|||
.setBody(BODY)
|
||||
.setSeverity(Severity.INFO)
|
||||
.setSeverityText("INFO")
|
||||
.setContext(
|
||||
Context.root()
|
||||
.with(
|
||||
Span.wrap(
|
||||
SpanContext.create(
|
||||
TRACE_ID,
|
||||
SPAN_ID,
|
||||
TraceFlags.getDefault(),
|
||||
TraceState.getDefault()))))
|
||||
.setSpanContext(
|
||||
SpanContext.create(
|
||||
TRACE_ID, SPAN_ID, TraceFlags.getDefault(), TraceState.getDefault()))
|
||||
.setAttributes(Attributes.of(AttributeKey.booleanKey("key"), true))
|
||||
.setEpoch(12345, TimeUnit.NANOSECONDS)
|
||||
.build()));
|
||||
|
|
@ -103,15 +95,9 @@ class LogsRequestMarshalerTest {
|
|||
.setBody(BODY)
|
||||
.setSeverity(Severity.INFO)
|
||||
.setSeverityText("INFO")
|
||||
.setContext(
|
||||
Context.root()
|
||||
.with(
|
||||
Span.wrap(
|
||||
SpanContext.create(
|
||||
TRACE_ID,
|
||||
SPAN_ID,
|
||||
TraceFlags.getDefault(),
|
||||
TraceState.getDefault()))))
|
||||
.setSpanContext(
|
||||
SpanContext.create(
|
||||
TRACE_ID, SPAN_ID, TraceFlags.getDefault(), TraceState.getDefault()))
|
||||
.setAttributes(Attributes.of(AttributeKey.booleanKey("key"), true))
|
||||
.setEpoch(12345, TimeUnit.NANOSECONDS)
|
||||
.build()));
|
||||
|
|
|
|||
|
|
@ -25,7 +25,6 @@ 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.context.Context;
|
||||
import io.opentelemetry.exporter.otlp.http.logs.OtlpHttpLogExporter;
|
||||
import io.opentelemetry.exporter.otlp.http.metrics.OtlpHttpMetricExporter;
|
||||
import io.opentelemetry.exporter.otlp.http.trace.OtlpHttpSpanExporter;
|
||||
|
|
@ -386,15 +385,12 @@ abstract class OtlpExporterIntegrationTest {
|
|||
.setSeverity(Severity.DEBUG)
|
||||
.setSeverityText("DEBUG")
|
||||
.setEpoch(Instant.now())
|
||||
.setContext(
|
||||
Context.root()
|
||||
.with(
|
||||
Span.wrap(
|
||||
SpanContext.create(
|
||||
IdGenerator.random().generateTraceId(),
|
||||
IdGenerator.random().generateSpanId(),
|
||||
TraceFlags.getDefault(),
|
||||
TraceState.getDefault()))))
|
||||
.setSpanContext(
|
||||
SpanContext.create(
|
||||
IdGenerator.random().generateTraceId(),
|
||||
IdGenerator.random().generateSpanId(),
|
||||
TraceFlags.getDefault(),
|
||||
TraceState.getDefault()))
|
||||
.build();
|
||||
|
||||
logExporter.export(Collections.singletonList(logData));
|
||||
|
|
|
|||
|
|
@ -62,9 +62,14 @@ public final class LogDataBuilder {
|
|||
return this;
|
||||
}
|
||||
|
||||
/** Set the context. */
|
||||
/** Sets the context. */
|
||||
public LogDataBuilder setContext(Context context) {
|
||||
this.spanContext = Span.fromContext(context).getSpanContext();
|
||||
return setSpanContext(Span.fromContext(context).getSpanContext());
|
||||
}
|
||||
|
||||
/** Sets the span context. */
|
||||
public LogDataBuilder setSpanContext(SpanContext spanContext) {
|
||||
this.spanContext = spanContext == null ? SpanContext.getInvalid() : spanContext;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -6,9 +6,16 @@
|
|||
package io.opentelemetry.sdk.logs.data;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertSame;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
import io.opentelemetry.api.trace.Span;
|
||||
import io.opentelemetry.api.trace.SpanContext;
|
||||
import io.opentelemetry.api.trace.TraceFlags;
|
||||
import io.opentelemetry.api.trace.TraceState;
|
||||
import io.opentelemetry.context.Context;
|
||||
import io.opentelemetry.sdk.common.Clock;
|
||||
import io.opentelemetry.sdk.common.InstrumentationLibraryInfo;
|
||||
import io.opentelemetry.sdk.resources.Resource;
|
||||
|
|
@ -16,10 +23,11 @@ import org.junit.jupiter.api.Test;
|
|||
|
||||
class LogDataBuilderTest {
|
||||
|
||||
private final Resource resource = Resource.getDefault();
|
||||
private final InstrumentationLibraryInfo libraryInfo = InstrumentationLibraryInfo.empty();
|
||||
|
||||
@Test
|
||||
void canSetClock() {
|
||||
Resource resource = Resource.getDefault();
|
||||
InstrumentationLibraryInfo libraryInfo = InstrumentationLibraryInfo.empty();
|
||||
Clock clock = mock(Clock.class);
|
||||
when(clock.now()).thenReturn(12L);
|
||||
LogDataBuilder builder = LogDataBuilder.create(resource, libraryInfo, clock);
|
||||
|
|
@ -27,4 +35,36 @@ class LogDataBuilderTest {
|
|||
LogData result = builder.build();
|
||||
assertEquals(12L, result.getEpochNanos());
|
||||
}
|
||||
|
||||
@Test
|
||||
void canSetSpanContext() {
|
||||
LogDataBuilder builder = LogDataBuilder.create(resource, libraryInfo);
|
||||
SpanContext spanContext = mock(SpanContext.class);
|
||||
LogData result = builder.setSpanContext(spanContext).build();
|
||||
assertSame(spanContext, result.getSpanContext());
|
||||
}
|
||||
|
||||
@Test
|
||||
void setSpanContext_nullSafe() {
|
||||
LogDataBuilder builder = LogDataBuilder.create(resource, libraryInfo);
|
||||
LogData result = builder.setSpanContext(null).build();
|
||||
assertSame(SpanContext.getInvalid(), result.getSpanContext());
|
||||
}
|
||||
|
||||
@Test
|
||||
void canSetSpanContextFromContext() {
|
||||
String traceId = "33333333333333333333333333333333";
|
||||
String spanId = "7777777777777777";
|
||||
SpanContext spanContext =
|
||||
SpanContext.create(traceId, spanId, TraceFlags.getSampled(), TraceState.getDefault());
|
||||
Span span = Span.wrap(spanContext);
|
||||
|
||||
Context context = mock(Context.class);
|
||||
when(context.get(any())).thenReturn(span);
|
||||
|
||||
LogDataBuilder builder = LogDataBuilder.create(resource, libraryInfo);
|
||||
|
||||
LogData result = builder.setContext(context).build();
|
||||
assertSame(spanContext, result.getSpanContext());
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue