Skip to content

Commit 09141c6

Browse files
authored
Add code attributes to vaadin instrumentation (#14882)
1 parent c29fd07 commit 09141c6

File tree

3 files changed

+29
-1
lines changed

3 files changed

+29
-1
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/*
2+
* Copyright The OpenTelemetry Authors
3+
* SPDX-License-Identifier: Apache-2.0
4+
*/
5+
6+
package io.opentelemetry.javaagent.instrumentation.vaadin;
7+
8+
import io.opentelemetry.instrumentation.api.incubator.semconv.code.CodeAttributesGetter;
9+
10+
public class RpcCodeAttributesGetter implements CodeAttributesGetter<VaadinRpcRequest> {
11+
12+
@Override
13+
public Class<?> getCodeClass(VaadinRpcRequest request) {
14+
return request.getRpcInvocationHandler().getClass();
15+
}
16+
17+
@Override
18+
public String getMethodName(VaadinRpcRequest request) {
19+
return request.getMethodName();
20+
}
21+
}

instrumentation/vaadin-14.2/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/vaadin/VaadinSingletons.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,12 @@ public class VaadinSingletons {
5050
context.with(REQUEST_HANDLER_CONTEXT_KEY, true))
5151
.buildInstrumenter();
5252

53+
RpcCodeAttributesGetter rpcCodeAttributesGetter = new RpcCodeAttributesGetter();
5354
RPC_INSTRUMENTER =
5455
Instrumenter.<VaadinRpcRequest, Void>builder(
5556
GlobalOpenTelemetry.get(), INSTRUMENTATION_NAME, VaadinSingletons::rpcSpanName)
5657
.setEnabled(ExperimentalConfig.get().controllerTelemetryEnabled())
58+
.addAttributesExtractor(CodeAttributesExtractor.create(rpcCodeAttributesGetter))
5759
.buildInstrumenter();
5860

5961
SERVICE_INSTRUMENTER =

instrumentation/vaadin-14.2/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/vaadin/AbstractVaadinTest.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55

66
package io.opentelemetry.javaagent.instrumentation.vaadin;
77

8+
import static io.opentelemetry.instrumentation.testing.junit.code.SemconvCodeStabilityUtil.codeFunctionAssertions;
89
import static io.opentelemetry.sdk.testing.assertj.OpenTelemetryAssertions.assertThat;
910
import static org.awaitility.Awaitility.await;
1011

@@ -170,7 +171,11 @@ private void assertButtonClick() {
170171
assertThat(spans.get(spans.size() - 1))
171172
.hasName("EventRpcHandler.handle/click")
172173
.hasParent(spans.get(spans.size() - 2))
173-
.hasKind(SpanKind.INTERNAL);
174+
.hasKind(SpanKind.INTERNAL)
175+
.hasAttributesSatisfyingExactly(
176+
codeFunctionAssertions(
177+
"com.vaadin.flow.server.communication.rpc.EventRpcHandler",
178+
"handle"));
174179
});
175180
});
176181
}

0 commit comments

Comments
 (0)