Skip to content

Commit 17c5166

Browse files
committed
update events
1 parent 81b30f3 commit 17c5166

File tree

2 files changed

+55
-41
lines changed

2 files changed

+55
-41
lines changed

processors/src/main/java/io/opentelemetry/contrib/eventbridge/EventToSpanEventBridge.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import io.opentelemetry.sdk.logs.LogRecordProcessor;
1818
import io.opentelemetry.sdk.logs.ReadWriteLogRecord;
1919
import io.opentelemetry.sdk.logs.data.LogRecordData;
20+
import io.opentelemetry.sdk.logs.data.internal.ExtendedLogRecordData;
2021
import java.io.ByteArrayOutputStream;
2122
import java.io.IOException;
2223
import java.nio.charset.StandardCharsets;
@@ -56,7 +57,6 @@ public final class EventToSpanEventBridge implements LogRecordProcessor {
5657

5758
private static final Logger logger = Logger.getLogger(EventToSpanEventBridge.class.getName());
5859

59-
private static final AttributeKey<String> EVENT_NAME = AttributeKey.stringKey("event.name");
6060
private static final AttributeKey<Long> LOG_RECORD_OBSERVED_TIME_UNIX_NANO =
6161
AttributeKey.longKey("log.record.observed_time_unix_nano");
6262
private static final AttributeKey<Long> LOG_RECORD_SEVERITY_NUMBER =
@@ -76,7 +76,10 @@ public static EventToSpanEventBridge create() {
7676
@Override
7777
public void onEmit(Context context, ReadWriteLogRecord logRecord) {
7878
LogRecordData logRecordData = logRecord.toLogRecordData();
79-
String eventName = logRecordData.getAttributes().get(EVENT_NAME);
79+
if (!(logRecordData instanceof ExtendedLogRecordData)) {
80+
return;
81+
}
82+
String eventName = ((ExtendedLogRecordData) logRecordData).getEventName();
8083
if (eventName == null) {
8184
return;
8285
}
@@ -99,8 +102,7 @@ public void onEmit(Context context, ReadWriteLogRecord logRecord) {
99102
}
100103

101104
private static Attributes toSpanEventAttributes(LogRecordData logRecord) {
102-
AttributesBuilder builder =
103-
logRecord.getAttributes().toBuilder().removeIf(key -> key.equals(EVENT_NAME));
105+
AttributesBuilder builder = logRecord.getAttributes().toBuilder();
104106

105107
builder.put(LOG_RECORD_OBSERVED_TIME_UNIX_NANO, logRecord.getObservedTimestampEpochNanos());
106108

processors/src/test/java/io/opentelemetry/contrib/eventbridge/EventToSpanEventBridgeTest.java

Lines changed: 49 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,11 @@
99
import static io.opentelemetry.api.common.AttributeKey.stringKey;
1010
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat;
1111

12+
import io.opentelemetry.api.common.AttributeKey;
1213
import io.opentelemetry.api.common.Attributes;
14+
import io.opentelemetry.api.common.KeyValue;
1315
import io.opentelemetry.api.common.Value;
14-
import io.opentelemetry.api.incubator.events.EventLogger;
16+
import io.opentelemetry.api.incubator.logs.ExtendedLogger;
1517
import io.opentelemetry.api.logs.Severity;
1618
import io.opentelemetry.api.trace.Span;
1719
import io.opentelemetry.api.trace.SpanContext;
@@ -22,7 +24,6 @@
2224
import io.opentelemetry.context.Context;
2325
import io.opentelemetry.context.Scope;
2426
import io.opentelemetry.sdk.logs.SdkLoggerProvider;
25-
import io.opentelemetry.sdk.logs.internal.SdkEventLoggerProvider;
2627
import io.opentelemetry.sdk.testing.exporter.InMemorySpanExporter;
2728
import io.opentelemetry.sdk.testing.time.TestClock;
2829
import io.opentelemetry.sdk.trace.IdGenerator;
@@ -46,14 +47,13 @@ class EventToSpanEventBridgeTest {
4647
.addSpanProcessor(SimpleSpanProcessor.create(spanExporter))
4748
.build();
4849
private final TestClock testClock = TestClock.create();
49-
private final SdkEventLoggerProvider eventLoggerProvider =
50-
SdkEventLoggerProvider.create(
51-
SdkLoggerProvider.builder()
52-
.setClock(testClock)
53-
.addLogRecordProcessor(EventToSpanEventBridge.create())
54-
.build());
50+
private final SdkLoggerProvider loggerProvider =
51+
SdkLoggerProvider.builder()
52+
.setClock(testClock)
53+
.addLogRecordProcessor(EventToSpanEventBridge.create())
54+
.build();
5555
private final Tracer tracer = tracerProvider.get("tracer");
56-
private final EventLogger eventLogger = eventLoggerProvider.get("event-logger");
56+
private final ExtendedLogger logger = (ExtendedLogger) loggerProvider.get("event-logger");
5757

5858
private static Sampler onlyServerSpans() {
5959
return new Sampler() {
@@ -85,15 +85,18 @@ void withRecordingSpan_BridgesEvent() {
8585
// others. We create a recording span by setting kind to SERVER.
8686
Span span = tracer.spanBuilder("span").setSpanKind(SpanKind.SERVER).startSpan();
8787
try (Scope unused = span.makeCurrent()) {
88-
eventLogger
89-
.builder("my.event-name")
88+
logger
89+
.logRecordBuilder()
90+
.setEventName("my.event-name")
9091
.setTimestamp(100, TimeUnit.NANOSECONDS)
9192
.setSeverity(Severity.DEBUG)
92-
.put("foo", "bar")
93-
.put("number", 1)
94-
.put("map", Value.of(Collections.singletonMap("key", Value.of("value"))))
95-
.setAttributes(Attributes.builder().put("color", "red").build())
96-
.setAttributes(Attributes.builder().put("shape", "square").build())
93+
.setBody(
94+
Value.of(
95+
KeyValue.of("number", Value.of(1)),
96+
KeyValue.of("foo", Value.of("bar")),
97+
KeyValue.of("map", Value.of(Collections.singletonMap("key", Value.of("value"))))))
98+
.setAttribute(AttributeKey.stringKey("color"), "red")
99+
.setAttribute(AttributeKey.stringKey("shape"), "square")
97100
.emit();
98101
} finally {
99102
span.end();
@@ -134,15 +137,18 @@ void nonRecordingSpan_doesNotBridgeEvent() {
134137
// others. We create a non-recording span by setting kind to INTERNAL.
135138
Span span = tracer.spanBuilder("span").setSpanKind(SpanKind.INTERNAL).startSpan();
136139
try (Scope unused = span.makeCurrent()) {
137-
eventLogger
138-
.builder("my.event-name")
140+
logger
141+
.logRecordBuilder()
142+
.setEventName("my.event-name")
139143
.setTimestamp(100, TimeUnit.NANOSECONDS)
140144
.setSeverity(Severity.DEBUG)
141-
.put("foo", "bar")
142-
.put("number", 1)
143-
.put("map", Value.of(Collections.singletonMap("key", Value.of("value"))))
144-
.setAttributes(Attributes.builder().put("color", "red").build())
145-
.setAttributes(Attributes.builder().put("shape", "square").build())
145+
.setBody(
146+
Value.of(
147+
KeyValue.of("number", Value.of(1)),
148+
KeyValue.of("foo", Value.of("bar")),
149+
KeyValue.of("map", Value.of(Collections.singletonMap("key", Value.of("value"))))))
150+
.setAttribute(AttributeKey.stringKey("color"), "red")
151+
.setAttribute(AttributeKey.stringKey("shape"), "square")
146152
.emit();
147153
} finally {
148154
span.end();
@@ -158,8 +164,9 @@ void differentSpanContext_doesNotBridgeEvent() {
158164
// others. We create a recording span by setting kind to SERVER.
159165
Span span = tracer.spanBuilder("span").setSpanKind(SpanKind.SERVER).startSpan();
160166
try (Scope unused = span.makeCurrent()) {
161-
eventLogger
162-
.builder("my.event-name")
167+
logger
168+
.logRecordBuilder()
169+
.setEventName("my.event-name")
163170
// Manually override the context
164171
.setContext(
165172
Span.wrap(
@@ -171,11 +178,13 @@ void differentSpanContext_doesNotBridgeEvent() {
171178
.storeInContext(Context.current()))
172179
.setTimestamp(100, TimeUnit.NANOSECONDS)
173180
.setSeverity(Severity.DEBUG)
174-
.put("foo", "bar")
175-
.put("number", 1)
176-
.put("map", Value.of(Collections.singletonMap("key", Value.of("value"))))
177-
.setAttributes(Attributes.builder().put("color", "red").build())
178-
.setAttributes(Attributes.builder().put("shape", "square").build())
181+
.setBody(
182+
Value.of(
183+
KeyValue.of("number", Value.of(1)),
184+
KeyValue.of("foo", Value.of("bar")),
185+
KeyValue.of("map", Value.of(Collections.singletonMap("key", Value.of("value"))))))
186+
.setAttribute(AttributeKey.stringKey("color"), "red")
187+
.setAttribute(AttributeKey.stringKey("shape"), "square")
179188
.emit();
180189
} finally {
181190
span.end();
@@ -187,15 +196,18 @@ void differentSpanContext_doesNotBridgeEvent() {
187196

188197
@Test
189198
void noSpan_doesNotBridgeEvent() {
190-
eventLogger
191-
.builder("my.event-name")
199+
logger
200+
.logRecordBuilder()
201+
.setEventName("my.event-name")
192202
.setTimestamp(100, TimeUnit.NANOSECONDS)
193203
.setSeverity(Severity.DEBUG)
194-
.put("foo", "bar")
195-
.put("number", 1)
196-
.put("map", Value.of(Collections.singletonMap("key", Value.of("value"))))
197-
.setAttributes(Attributes.builder().put("color", "red").build())
198-
.setAttributes(Attributes.builder().put("shape", "square").build())
204+
.setBody(
205+
Value.of(
206+
KeyValue.of("number", Value.of(1)),
207+
KeyValue.of("foo", Value.of("bar")),
208+
KeyValue.of("map", Value.of(Collections.singletonMap("key", Value.of("value"))))))
209+
.setAttribute(AttributeKey.stringKey("color"), "red")
210+
.setAttribute(AttributeKey.stringKey("shape"), "square")
199211
.emit();
200212

201213
assertThat(spanExporter.getFinishedSpanItems()).isEmpty();

0 commit comments

Comments
 (0)