Esempio n. 1
0
        public override void OnStopActivity(Activity activity, object payload)
        {
            if (activity.IsAllDataRequested)
            {
                bool validConversion = GrpcTagHelper.TryGetGrpcStatusCodeFromActivity(activity, out int status);
                if (validConversion)
                {
                    if (activity.GetStatus().StatusCode == StatusCode.Unset)
                    {
                        activity.SetStatus(GrpcTagHelper.ResolveSpanStatusForGrpcStatusCode(status));
                    }

                    // setting rpc.grpc.status_code
                    activity.SetTag(SemanticConventions.AttributeRpcGrpcStatusCode, status);
                }

                // Remove the grpc.status_code tag added by the gRPC .NET library
                activity.SetTag(GrpcTagHelper.GrpcStatusCodeTagName, null);

                if (this.stopRequestFetcher.TryFetch(payload, out HttpResponseMessage response) && response != null)
                {
                    try
                    {
                        this.options.Enrich?.Invoke(activity, "OnStopActivity", response);
                    }
                    catch (Exception ex)
                    {
                        GrpcInstrumentationEventSource.Log.EnrichmentException(ex);
                    }
                }
            }
        }
        public void GrpcTagHelper_GetGrpcStatusCodeFromActivity()
        {
            var activity = new Activity("operationName");

            activity.SetTag(GrpcTagHelper.GrpcStatusCodeTagName, "0");

            bool validConversion = GrpcTagHelper.TryGetGrpcStatusCodeFromActivity(activity, out int status);

            Assert.True(validConversion);

            var statusCode = GrpcTagHelper.ResolveSpanStatusForGrpcStatusCode(status);

            activity.SetTag(SemanticConventions.AttributeRpcGrpcStatusCode, status);

            Assert.Equal(StatusCode.Unset, statusCode.StatusCode);
            Assert.Equal(status, activity.GetTagValue(SemanticConventions.AttributeRpcGrpcStatusCode));
        }
Esempio n. 3
0
        public override void OnStopActivity(Activity activity, object payload)
        {
            if (activity.IsAllDataRequested)
            {
                bool validConversion = GrpcTagHelper.TryGetGrpcStatusCodeFromActivity(activity, out int status);
                if (validConversion)
                {
                    activity.SetStatus(GrpcTagHelper.ResolveSpanStatusForGrpcStatusCode(status));

                    // setting rpc.grpc.status_code
                    activity.SetTag(SemanticConventions.AttributeRpcGrpcStatusCode, status);
                }

                // Remove the grpc.status_code tag added by the gRPC .NET library
                activity.SetTag(GrpcTagHelper.GrpcStatusCodeTagName, null);
            }

            this.activitySource.Stop(activity);
        }