From cb13e5f49d289a017c99ed55ecf925fd299aa060 Mon Sep 17 00:00:00 2001 From: Matus Petrulak Date: Fri, 12 Jun 2026 22:12:30 +0200 Subject: [PATCH 1/2] fixup! [gRPC] Remove rpc.service and update rpc.method --- .../Implementation/HttpInListener.cs | 5 ++--- .../GrpcTests.cs | 10 +++++----- .../GrpcTests.server.cs | 16 ++++++++++------ ...ry.Instrumentation.GrpcNetClient.Tests.csproj | 2 +- 4 files changed, 18 insertions(+), 15 deletions(-) diff --git a/src/OpenTelemetry.Instrumentation.AspNetCore/Implementation/HttpInListener.cs b/src/OpenTelemetry.Instrumentation.AspNetCore/Implementation/HttpInListener.cs index 69a17fbd3d..63833f9a43 100644 --- a/src/OpenTelemetry.Instrumentation.AspNetCore/Implementation/HttpInListener.cs +++ b/src/OpenTelemetry.Instrumentation.AspNetCore/Implementation/HttpInListener.cs @@ -391,7 +391,7 @@ private static void AddGrpcAttributes(Activity activity, string grpcMethod, Http // https://github.com/open-telemetry/semantic-conventions/blob/main/docs/rpc/rpc-spans.md#span-name activity.DisplayName = details.DisplayName; - activity.SetTag(SemanticConventions.AttributeRpcSystem, GrpcTagHelper.RpcSystemGrpc); + activity.SetTag(SemanticConventions.AttributeRpcSystemName, GrpcTagHelper.RpcSystemGrpc); // see the spec https://github.com/open-telemetry/semantic-conventions/blob/v1.23.0/docs/rpc/rpc-spans.md @@ -409,8 +409,7 @@ private static void AddGrpcAttributes(Activity activity, string grpcMethod, Http if (details.IsParsed) { - activity.SetTag(SemanticConventions.AttributeRpcService, details.RpcService); - activity.SetTag(SemanticConventions.AttributeRpcMethod, details.RpcMethod); + activity.SetTag(SemanticConventions.AttributeRpcMethod, details.DisplayName); // Remove the grpc.method tag added by the gRPC .NET library activity.SetTag(GrpcTagHelper.GrpcMethodTagName, null); diff --git a/test/OpenTelemetry.Instrumentation.AspNetCore.Tests/GrpcTests.cs b/test/OpenTelemetry.Instrumentation.AspNetCore.Tests/GrpcTests.cs index 0c2179ae2b..994d6b86b2 100644 --- a/test/OpenTelemetry.Instrumentation.AspNetCore.Tests/GrpcTests.cs +++ b/test/OpenTelemetry.Instrumentation.AspNetCore.Tests/GrpcTests.cs @@ -32,9 +32,9 @@ public void OnStopActivityAddsGrpcAttributesForParsedMethodAndValidStatusCode() AssertTag(activity, SemanticConventions.AttributeClientPort, 4317); AssertTag(activity, SemanticConventions.AttributeHttpResponseStatusCode, 200); AssertTag(activity, SemanticConventions.AttributeRpcGrpcStatusCode, 13); - AssertTag(activity, SemanticConventions.AttributeRpcMethod, "Method"); - AssertTag(activity, SemanticConventions.AttributeRpcService, "package.Service"); - AssertTag(activity, SemanticConventions.AttributeRpcSystem, "grpc"); + AssertTag(activity, SemanticConventions.AttributeRpcMethod, "package.Service/Method"); + AssertTag(activity, SemanticConventions.AttributeRpcService, null); + AssertTag(activity, SemanticConventions.AttributeRpcSystemName, "grpc"); } [Fact] @@ -59,7 +59,7 @@ public void OnStopActivityPreservesGrpcTagsWhenMethodCannotBeParsedAndStatusIsIn AssertTag(activity, SemanticConventions.AttributeRpcGrpcStatusCode, null); AssertTag(activity, SemanticConventions.AttributeRpcMethod, null); AssertTag(activity, SemanticConventions.AttributeRpcService, null); - AssertTag(activity, SemanticConventions.AttributeRpcSystem, "grpc"); + AssertTag(activity, SemanticConventions.AttributeRpcSystemName, "grpc"); } [Fact] @@ -80,7 +80,7 @@ public void OnStopActivityIgnoresEmptyGrpcMethodTag() AssertTag(activity, GrpcTagHelper.GrpcMethodTagName, string.Empty); AssertTag(activity, GrpcTagHelper.GrpcStatusCodeTagName, "13"); AssertTag(activity, SemanticConventions.AttributeRpcGrpcStatusCode, null); - AssertTag(activity, SemanticConventions.AttributeRpcSystem, null); + AssertTag(activity, SemanticConventions.AttributeRpcSystemName, null); } private static void AssertTag(Activity activity, string name, object? expected) => diff --git a/test/OpenTelemetry.Instrumentation.GrpcNetClient.Tests/GrpcTests.server.cs b/test/OpenTelemetry.Instrumentation.GrpcNetClient.Tests/GrpcTests.server.cs index 7c3985f51b..9df76090a7 100644 --- a/test/OpenTelemetry.Instrumentation.GrpcNetClient.Tests/GrpcTests.server.cs +++ b/test/OpenTelemetry.Instrumentation.GrpcNetClient.Tests/GrpcTests.server.cs @@ -76,9 +76,10 @@ public void GrpcAspNetCoreInstrumentationAddsCorrectAttributes(string? enableGrp if (enableGrpcAspNetCoreSupport != null && enableGrpcAspNetCoreSupport.Equals("true", StringComparison.OrdinalIgnoreCase)) { - Assert.Equal("grpc", activity.GetTagValue(SemanticConventions.AttributeRpcSystem)); - Assert.Equal("greet.Greeter", activity.GetTagValue(SemanticConventions.AttributeRpcService)); - Assert.Equal("SayHello", activity.GetTagValue(SemanticConventions.AttributeRpcMethod)); + Assert.Equal("greet.Greeter/SayHello", activity.DisplayName); + Assert.Equal("grpc", activity.GetTagValue(SemanticConventions.AttributeRpcSystemName)); + Assert.Null(activity.GetTagValue(SemanticConventions.AttributeRpcService)); + Assert.Equal("greet.Greeter/SayHello", activity.GetTagValue(SemanticConventions.AttributeRpcMethod)); Assert.Contains(activity.GetTagValue(SemanticConventions.AttributeClientAddress), clientLoopbackAddresses); Assert.NotEqual(0, activity.GetTagValue(SemanticConventions.AttributeClientPort)); Assert.Null(activity.GetTagValue(GrpcTagHelper.GrpcMethodTagName)); @@ -87,6 +88,7 @@ public void GrpcAspNetCoreInstrumentationAddsCorrectAttributes(string? enableGrp } else { + Assert.Equal("POST /greet.Greeter/SayHello", activity.DisplayName); Assert.NotNull(activity.GetTagValue(GrpcTagHelper.GrpcMethodTagName)); Assert.NotNull(activity.GetTagValue(GrpcTagHelper.GrpcStatusCodeTagName)); } @@ -154,9 +156,10 @@ public void GrpcAspNetCoreInstrumentationAddsCorrectAttributesWhenItCreatesNewAc if (enableGrpcAspNetCoreSupport != null && enableGrpcAspNetCoreSupport.Equals("true", StringComparison.OrdinalIgnoreCase)) { + Assert.Equal("greet.Greeter/SayHello", activity.DisplayName); Assert.Equal("grpc", activity.GetTagValue(SemanticConventions.AttributeRpcSystemName)); - Assert.Equal("greet.Greeter", activity.GetTagValue(SemanticConventions.AttributeRpcService)); - Assert.Equal("SayHello", activity.GetTagValue(SemanticConventions.AttributeRpcMethod)); + Assert.Null(activity.GetTagValue(SemanticConventions.AttributeRpcService)); + Assert.Equal("greet.Greeter/SayHello", activity.GetTagValue(SemanticConventions.AttributeRpcMethod)); Assert.Contains(activity.GetTagValue(SemanticConventions.AttributeNetPeerIp), clientLoopbackAddresses); Assert.NotEqual(0, activity.GetTagValue(SemanticConventions.AttributeNetPeerPort)); Assert.Null(activity.GetTagValue(GrpcTagHelper.GrpcMethodTagName)); @@ -164,7 +167,8 @@ public void GrpcAspNetCoreInstrumentationAddsCorrectAttributesWhenItCreatesNewAc Assert.Equal(0, activity.GetTagValue(SemanticConventions.AttributeRpcResponseStatusCode)); } else - { + { + Assert.Equal("POST /greet.Greeter/SayHello", activity.DisplayName); Assert.NotNull(activity.GetTagValue(GrpcTagHelper.GrpcMethodTagName)); Assert.NotNull(activity.GetTagValue(GrpcTagHelper.GrpcStatusCodeTagName)); } diff --git a/test/OpenTelemetry.Instrumentation.GrpcNetClient.Tests/OpenTelemetry.Instrumentation.GrpcNetClient.Tests.csproj b/test/OpenTelemetry.Instrumentation.GrpcNetClient.Tests/OpenTelemetry.Instrumentation.GrpcNetClient.Tests.csproj index 15738810a4..4168984cce 100644 --- a/test/OpenTelemetry.Instrumentation.GrpcNetClient.Tests/OpenTelemetry.Instrumentation.GrpcNetClient.Tests.csproj +++ b/test/OpenTelemetry.Instrumentation.GrpcNetClient.Tests/OpenTelemetry.Instrumentation.GrpcNetClient.Tests.csproj @@ -18,7 +18,6 @@ - @@ -28,6 +27,7 @@ + From 43c8f2040e607147335b0723d0fd791836fa6e66 Mon Sep 17 00:00:00 2001 From: Matus Petrulak Date: Sat, 13 Jun 2026 00:19:52 +0200 Subject: [PATCH 2/2] [gRPC] Use string representation of status code in rpc.response.status_code to adhere to 1.41 Semantic Conventions for gRPC --- .../Implementation/HttpInListener.cs | 4 +-- ...nTelemetry.Instrumentation.GrpcCore.csproj | 3 ++ .../RpcScope.cs | 2 +- .../GrpcClientDiagnosticListener.cs | 2 +- src/Shared/GrpcTagHelper.cs | 25 +++++++++++++++ .../GrpcTagHelperTests.cs | 32 +++++++++++++++++-- .../GrpcTests.cs | 6 ++-- .../GrpcCoreClientInterceptorTests.cs | 3 +- .../GrpcTests.client.cs | 14 ++++---- .../GrpcTests.server.cs | 4 +-- 10 files changed, 75 insertions(+), 20 deletions(-) diff --git a/src/OpenTelemetry.Instrumentation.AspNetCore/Implementation/HttpInListener.cs b/src/OpenTelemetry.Instrumentation.AspNetCore/Implementation/HttpInListener.cs index 63833f9a43..63225238ec 100644 --- a/src/OpenTelemetry.Instrumentation.AspNetCore/Implementation/HttpInListener.cs +++ b/src/OpenTelemetry.Instrumentation.AspNetCore/Implementation/HttpInListener.cs @@ -419,8 +419,8 @@ private static void AddGrpcAttributes(Activity activity, string grpcMethod, Http if (validStatusCode) { - // setting rpc.grpc.status_code - activity.SetTag(SemanticConventions.AttributeRpcGrpcStatusCode, grpcStatusCode); + // setting rpc.response.status_code + activity.SetTag(SemanticConventions.AttributeRpcResponseStatusCode, GrpcTagHelper.ConvertStatusCodeToString(grpcStatusCode)); } } } diff --git a/src/OpenTelemetry.Instrumentation.GrpcCore/OpenTelemetry.Instrumentation.GrpcCore.csproj b/src/OpenTelemetry.Instrumentation.GrpcCore/OpenTelemetry.Instrumentation.GrpcCore.csproj index 41ce979cfb..add1369d60 100644 --- a/src/OpenTelemetry.Instrumentation.GrpcCore/OpenTelemetry.Instrumentation.GrpcCore.csproj +++ b/src/OpenTelemetry.Instrumentation.GrpcCore/OpenTelemetry.Instrumentation.GrpcCore.csproj @@ -24,9 +24,12 @@ + + + diff --git a/src/OpenTelemetry.Instrumentation.GrpcCore/RpcScope.cs b/src/OpenTelemetry.Instrumentation.GrpcCore/RpcScope.cs index d23714a41d..c7eacbee68 100644 --- a/src/OpenTelemetry.Instrumentation.GrpcCore/RpcScope.cs +++ b/src/OpenTelemetry.Instrumentation.GrpcCore/RpcScope.cs @@ -216,7 +216,7 @@ private void StopActivity(int statusCode, bool markAsCompleted = true) return; } - this.activity.SetTag(SemanticConventions.AttributeRpcResponseStatusCode, statusCode); + this.activity.SetTag(SemanticConventions.AttributeRpcResponseStatusCode, GrpcTagHelper.ConvertStatusCodeToString(statusCode)); this.activity.Stop(); } diff --git a/src/OpenTelemetry.Instrumentation.GrpcNetClient/Implementation/GrpcClientDiagnosticListener.cs b/src/OpenTelemetry.Instrumentation.GrpcNetClient/Implementation/GrpcClientDiagnosticListener.cs index 719aa2d183..df848561b5 100644 --- a/src/OpenTelemetry.Instrumentation.GrpcNetClient/Implementation/GrpcClientDiagnosticListener.cs +++ b/src/OpenTelemetry.Instrumentation.GrpcNetClient/Implementation/GrpcClientDiagnosticListener.cs @@ -176,7 +176,7 @@ public void OnStopActivity(Activity activity, object? payload) activity.SetStatus(GrpcTagHelper.ResolveSpanStatusForGrpcStatusCodeOnClient(status)); } - activity.SetTag(SemanticConventions.AttributeRpcResponseStatusCode, status); + activity.SetTag(SemanticConventions.AttributeRpcResponseStatusCode, GrpcTagHelper.ConvertStatusCodeToString(status)); } // Remove the grpc.status_code tag added by the gRPC .NET library diff --git a/src/Shared/GrpcTagHelper.cs b/src/Shared/GrpcTagHelper.cs index e10d6430d5..4ac5643d94 100644 --- a/src/Shared/GrpcTagHelper.cs +++ b/src/Shared/GrpcTagHelper.cs @@ -27,6 +27,31 @@ public static bool TryGetGrpcStatusCodeFromActivity(Activity activity, out int s int.TryParse(grpcStatusCodeTag as string, NumberStyles.None, CultureInfo.InvariantCulture, out statusCode); } + public static string ConvertStatusCodeToString(int statusCode) + { + return (GrpcStatusCanonicalCode)statusCode switch + { + GrpcStatusCanonicalCode.Ok => "OK", + GrpcStatusCanonicalCode.Cancelled => "CANCELLED", + GrpcStatusCanonicalCode.Unknown => "UNKNOWN", + GrpcStatusCanonicalCode.InvalidArgument => "INVALID_ARGUMENT", + GrpcStatusCanonicalCode.DeadlineExceeded => "DEADLINE_EXCEEDED", + GrpcStatusCanonicalCode.NotFound => "NOT_FOUND", + GrpcStatusCanonicalCode.AlreadyExists => "ALREADY_EXISTS", + GrpcStatusCanonicalCode.PermissionDenied => "PERMISSION_DENIED", + GrpcStatusCanonicalCode.ResourceExhausted => "RESOURCE_EXHAUSTED", + GrpcStatusCanonicalCode.FailedPrecondition => "FAILED_PRECONDITION", + GrpcStatusCanonicalCode.Aborted => "ABORTED", + GrpcStatusCanonicalCode.OutOfRange => "OUT_OF_RANGE", + GrpcStatusCanonicalCode.Unimplemented => "UNIMPLEMENTED", + GrpcStatusCanonicalCode.Internal => "INTERNAL", + GrpcStatusCanonicalCode.Unavailable => "UNAVAILABLE", + GrpcStatusCanonicalCode.DataLoss => "DATA_LOSS", + GrpcStatusCanonicalCode.Unauthenticated => "UNAUTHENTICATED", + _ => "UNKNOWN", + }; + } + public static bool TryParseRpcServiceAndRpcMethod(string grpcMethod, out string rpcService, out string rpcMethod) { var span = grpcMethod.AsSpan(); diff --git a/test/OpenTelemetry.Contrib.Shared.Tests/GrpcTagHelperTests.cs b/test/OpenTelemetry.Contrib.Shared.Tests/GrpcTagHelperTests.cs index d262f11415..029b8cb334 100644 --- a/test/OpenTelemetry.Contrib.Shared.Tests/GrpcTagHelperTests.cs +++ b/test/OpenTelemetry.Contrib.Shared.Tests/GrpcTagHelperTests.cs @@ -45,10 +45,10 @@ public void GrpcTagHelper_GetGrpcStatusCodeFromActivity() Assert.True(validConversion); var statusCode = GrpcTagHelper.ResolveSpanStatusForGrpcStatusCodeOnClient(status); - activity.SetTag(SemanticConventions.AttributeRpcGrpcStatusCode, status); + activity.SetTag(SemanticConventions.AttributeRpcResponseStatusCode, GrpcTagHelper.ConvertStatusCodeToString(status)); Assert.Equal(ActivityStatusCode.Unset, statusCode); - Assert.Equal(status, activity.GetTagValue(SemanticConventions.AttributeRpcGrpcStatusCode)); + Assert.Equal(GrpcTagHelper.ConvertStatusCodeToString(status), activity.GetTagValue(SemanticConventions.AttributeRpcResponseStatusCode)); } [Theory] @@ -103,6 +103,32 @@ public void GrpcTagHelper_ResolveSpanStatusForGrpcStatusCodeOnServer(int grpcSta Assert.Equal(expectedActivityStatusCode, result); } + [Theory] + [InlineData(0, "OK")] // Ok + [InlineData(-1, "UNKNOWN")] // Invalid negative status code + [InlineData(1, "CANCELLED")] // Cancelled + [InlineData(2, "UNKNOWN")] // Unknown + [InlineData(3, "INVALID_ARGUMENT")] // InvalidArgument + [InlineData(4, "DEADLINE_EXCEEDED")] // DeadlineExceeded + [InlineData(5, "NOT_FOUND")] // NotFound + [InlineData(6, "ALREADY_EXISTS")] // AlreadyExists + [InlineData(7, "PERMISSION_DENIED")] // PermissionDenied + [InlineData(8, "RESOURCE_EXHAUSTED")] // ResourceExhausted + [InlineData(9, "FAILED_PRECONDITION")] // FailedPrecondition + [InlineData(10, "ABORTED")] // Aborted + [InlineData(11, "OUT_OF_RANGE")] // OutOfRange + [InlineData(12, "UNIMPLEMENTED")] // Unimplemented + [InlineData(13, "INTERNAL")] // Internal + [InlineData(14, "UNAVAILABLE")] // Unavailable + [InlineData(15, "DATA_LOSS")] // DataLoss + [InlineData(16, "UNAUTHENTICATED")] // Unauthenticated + [InlineData(99, "UNKNOWN")] // Unknown status code + public void GrpcTagHelper_ConvertStatusCodeToString(int grpcStatusCode, string expectedStatusCode) + { + var result = GrpcTagHelper.ConvertStatusCodeToString(grpcStatusCode); + Assert.Equal(expectedStatusCode, result); + } + [Fact] public void GrpcTagHelper_GetGrpcStatusCodeFromEmptyActivity() { @@ -111,6 +137,6 @@ public void GrpcTagHelper_GetGrpcStatusCodeFromEmptyActivity() var validConversion = GrpcTagHelper.TryGetGrpcStatusCodeFromActivity(activity, out var status); Assert.False(validConversion); Assert.Equal(-1, status); - Assert.Null(activity.GetTagValue(SemanticConventions.AttributeRpcGrpcStatusCode)); + Assert.Null(activity.GetTagValue(SemanticConventions.AttributeRpcResponseStatusCode)); } } diff --git a/test/OpenTelemetry.Instrumentation.AspNetCore.Tests/GrpcTests.cs b/test/OpenTelemetry.Instrumentation.AspNetCore.Tests/GrpcTests.cs index 994d6b86b2..14cd7a7b6a 100644 --- a/test/OpenTelemetry.Instrumentation.AspNetCore.Tests/GrpcTests.cs +++ b/test/OpenTelemetry.Instrumentation.AspNetCore.Tests/GrpcTests.cs @@ -31,7 +31,7 @@ public void OnStopActivityAddsGrpcAttributesForParsedMethodAndValidStatusCode() AssertTag(activity, SemanticConventions.AttributeClientAddress, "127.0.0.1"); AssertTag(activity, SemanticConventions.AttributeClientPort, 4317); AssertTag(activity, SemanticConventions.AttributeHttpResponseStatusCode, 200); - AssertTag(activity, SemanticConventions.AttributeRpcGrpcStatusCode, 13); + AssertTag(activity, SemanticConventions.AttributeRpcResponseStatusCode, "INTERNAL"); AssertTag(activity, SemanticConventions.AttributeRpcMethod, "package.Service/Method"); AssertTag(activity, SemanticConventions.AttributeRpcService, null); AssertTag(activity, SemanticConventions.AttributeRpcSystemName, "grpc"); @@ -56,7 +56,7 @@ public void OnStopActivityPreservesGrpcTagsWhenMethodCannotBeParsedAndStatusIsIn AssertTag(activity, GrpcTagHelper.GrpcStatusCodeTagName, "invalid"); AssertTag(activity, SemanticConventions.AttributeClientAddress, null); AssertTag(activity, SemanticConventions.AttributeClientPort, 4317); - AssertTag(activity, SemanticConventions.AttributeRpcGrpcStatusCode, null); + AssertTag(activity, SemanticConventions.AttributeRpcResponseStatusCode, null); AssertTag(activity, SemanticConventions.AttributeRpcMethod, null); AssertTag(activity, SemanticConventions.AttributeRpcService, null); AssertTag(activity, SemanticConventions.AttributeRpcSystemName, "grpc"); @@ -79,7 +79,7 @@ public void OnStopActivityIgnoresEmptyGrpcMethodTag() AssertTag(activity, GrpcTagHelper.GrpcMethodTagName, string.Empty); AssertTag(activity, GrpcTagHelper.GrpcStatusCodeTagName, "13"); - AssertTag(activity, SemanticConventions.AttributeRpcGrpcStatusCode, null); + AssertTag(activity, SemanticConventions.AttributeRpcResponseStatusCode, null); AssertTag(activity, SemanticConventions.AttributeRpcSystemName, null); } diff --git a/test/OpenTelemetry.Instrumentation.GrpcCore.Tests/GrpcCoreClientInterceptorTests.cs b/test/OpenTelemetry.Instrumentation.GrpcCore.Tests/GrpcCoreClientInterceptorTests.cs index 605dbf141a..af8bfd80b0 100644 --- a/test/OpenTelemetry.Instrumentation.GrpcCore.Tests/GrpcCoreClientInterceptorTests.cs +++ b/test/OpenTelemetry.Instrumentation.GrpcCore.Tests/GrpcCoreClientInterceptorTests.cs @@ -344,6 +344,7 @@ internal static void ValidateCommonActivityTags( Assert.True(activity.IsStopped, "The activity has not been stopped."); var expectedRpcMethod = $"OpenTelemetry.Instrumentation.GrpcCore.Tests.Foobar/{expectedMethodName}"; + var expectedResponseStatusCode = GrpcTagHelper.ConvertStatusCodeToString((int)expectedStatusCode); Assert.Equal(expectedRpcMethod, activity.DisplayName); @@ -352,7 +353,7 @@ internal static void ValidateCommonActivityTags( Assert.Contains(activity.TagObjects, t => t.Key == SemanticConventions.AttributeRpcSystemName && (string?)t.Value == "grpc"); Assert.DoesNotContain(activity.TagObjects, t => t.Key == SemanticConventions.AttributeRpcService); Assert.Contains(activity.TagObjects, t => t.Key == SemanticConventions.AttributeRpcMethod && (string?)t.Value == expectedRpcMethod); - Assert.Contains(activity.TagObjects, t => t.Key == SemanticConventions.AttributeRpcResponseStatusCode && (int?)t.Value == (int)expectedStatusCode); + Assert.Contains(activity.TagObjects, t => t.Key == SemanticConventions.AttributeRpcResponseStatusCode && (string?)t.Value == expectedResponseStatusCode); // Cancelled is not an error. if (expectedStatusCode is not StatusCode.OK and not StatusCode.Cancelled) diff --git a/test/OpenTelemetry.Instrumentation.GrpcNetClient.Tests/GrpcTests.client.cs b/test/OpenTelemetry.Instrumentation.GrpcNetClient.Tests/GrpcTests.client.cs index 3a50959723..4547008247 100644 --- a/test/OpenTelemetry.Instrumentation.GrpcNetClient.Tests/GrpcTests.client.cs +++ b/test/OpenTelemetry.Instrumentation.GrpcNetClient.Tests/GrpcTests.client.cs @@ -90,7 +90,7 @@ public void GrpcClientCallsAreCollectedSuccessfully(string baseAddress, bool sho // Tags added by the library then removed from the instrumentation Assert.Null(activity.GetTagValue(GrpcTagHelper.GrpcMethodTagName)); Assert.Null(activity.GetTagValue(GrpcTagHelper.GrpcStatusCodeTagName)); - Assert.Equal(0, activity.GetTagValue(SemanticConventions.AttributeRpcResponseStatusCode)); + Assert.Equal("OK", activity.GetTagValue(SemanticConventions.AttributeRpcResponseStatusCode)); if (shouldEnrich) { @@ -146,7 +146,7 @@ public void GrpcAndHttpClientInstrumentationIsInvoked(bool shouldEnrich) ValidateGrpcActivity(grpcSpan); Assert.Equal($"greet.Greeter/SayHello", grpcSpan.DisplayName); - Assert.Equal(0, grpcSpan.GetTagValue(SemanticConventions.AttributeRpcResponseStatusCode)); + Assert.Equal("OK", grpcSpan.GetTagValue(SemanticConventions.AttributeRpcResponseStatusCode)); Assert.Equal("POST", httpSpan.DisplayName); Assert.Equal(grpcSpan.SpanId, httpSpan.ParentSpanId); @@ -199,19 +199,19 @@ public void GrpcAndHttpClientInstrumentationWithSuppressInstrumentation() ValidateGrpcActivity(grpcSpan1); Assert.Equal($"greet.Greeter/SayHello", grpcSpan1.DisplayName); - Assert.Equal(0, grpcSpan1.GetTagValue(SemanticConventions.AttributeRpcResponseStatusCode)); + Assert.Equal("OK", grpcSpan1.GetTagValue(SemanticConventions.AttributeRpcResponseStatusCode)); ValidateGrpcActivity(grpcSpan2); Assert.Equal($"greet.Greeter/SayHello", grpcSpan2.DisplayName); - Assert.Equal(0, grpcSpan2.GetTagValue(SemanticConventions.AttributeRpcResponseStatusCode)); + Assert.Equal("OK", grpcSpan2.GetTagValue(SemanticConventions.AttributeRpcResponseStatusCode)); ValidateGrpcActivity(grpcSpan3); Assert.Equal($"greet.Greeter/SayHello", grpcSpan3.DisplayName); - Assert.Equal(0, grpcSpan3.GetTagValue(SemanticConventions.AttributeRpcResponseStatusCode)); + Assert.Equal("OK", grpcSpan3.GetTagValue(SemanticConventions.AttributeRpcResponseStatusCode)); ValidateGrpcActivity(grpcSpan4); Assert.Equal($"greet.Greeter/SayHello", grpcSpan4.DisplayName); - Assert.Equal(0, grpcSpan4.GetTagValue(SemanticConventions.AttributeRpcResponseStatusCode)); + Assert.Equal("OK", grpcSpan4.GetTagValue(SemanticConventions.AttributeRpcResponseStatusCode)); } #if NET @@ -267,7 +267,7 @@ public void GrpcPropagatesContextWithSuppressInstrumentationOptionSetToTrue() Assert.Equal($"POST /greet.Greeter/SayHello", serverActivity.DisplayName); Assert.Equal(clientActivity.TraceId, serverActivity.TraceId); Assert.Equal(clientActivity.SpanId, serverActivity.ParentSpanId); - Assert.Equal(0, clientActivity.GetTagValue(SemanticConventions.AttributeRpcGrpcStatusCode)); + Assert.Equal("OK", clientActivity.GetTagValue(SemanticConventions.AttributeRpcResponseStatusCode)); Assert.Equal("customValue", serverActivity.GetCustomProperty("customField") as string); } finally diff --git a/test/OpenTelemetry.Instrumentation.GrpcNetClient.Tests/GrpcTests.server.cs b/test/OpenTelemetry.Instrumentation.GrpcNetClient.Tests/GrpcTests.server.cs index 9df76090a7..28cb93ec0e 100644 --- a/test/OpenTelemetry.Instrumentation.GrpcNetClient.Tests/GrpcTests.server.cs +++ b/test/OpenTelemetry.Instrumentation.GrpcNetClient.Tests/GrpcTests.server.cs @@ -84,7 +84,7 @@ public void GrpcAspNetCoreInstrumentationAddsCorrectAttributes(string? enableGrp Assert.NotEqual(0, activity.GetTagValue(SemanticConventions.AttributeClientPort)); Assert.Null(activity.GetTagValue(GrpcTagHelper.GrpcMethodTagName)); Assert.Null(activity.GetTagValue(GrpcTagHelper.GrpcStatusCodeTagName)); - Assert.Equal(0, activity.GetTagValue(SemanticConventions.AttributeRpcGrpcStatusCode)); + Assert.Equal("OK", activity.GetTagValue(SemanticConventions.AttributeRpcResponseStatusCode)); } else { @@ -164,7 +164,7 @@ public void GrpcAspNetCoreInstrumentationAddsCorrectAttributesWhenItCreatesNewAc Assert.NotEqual(0, activity.GetTagValue(SemanticConventions.AttributeNetPeerPort)); Assert.Null(activity.GetTagValue(GrpcTagHelper.GrpcMethodTagName)); Assert.Null(activity.GetTagValue(GrpcTagHelper.GrpcStatusCodeTagName)); - Assert.Equal(0, activity.GetTagValue(SemanticConventions.AttributeRpcResponseStatusCode)); + Assert.Equal("OK", activity.GetTagValue(SemanticConventions.AttributeRpcResponseStatusCode)); } else {