< Summary

Class:SeungYongShim.Akka.OpenTelemetry.TraceActorCell
Assembly:SeungYongShim.Akka.OpenTelemetry
File(s):/home/runner/work/SeungYongShim.Akka/SeungYongShim.Akka/src/SeungYongShim.Akka.OpenTelemetry/TraceActorCell.cs
Covered lines:52
Uncovered lines:0
Coverable lines:52
Total lines:89
Line coverage:100% (52 of 52)
Covered branches:18
Total branches:26
Branch coverage:69.2% (18 of 26)
Tag:81_945672945

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
.ctor(...)0%330100%
SendMessage(...)77.78%5.251680%
CreateNewActorInstance()0%330100%
ReceiveMessage(...)68.42%1717512100%

File(s)

/home/runner/work/SeungYongShim.Akka/SeungYongShim.Akka/src/SeungYongShim.Akka.OpenTelemetry/TraceActorCell.cs

#LineLine coverage
 1using System;
 2using System.Diagnostics;
 3using Akka.Actor;
 4using Akka.Actor.Internal;
 5using Akka.Dispatch;
 6using Akka.Event;
 7
 8namespace SeungYongShim.Akka.OpenTelemetry
 9{
 10    public class TraceActorCell : ActorCell
 11    {
 12        internal string ActivityNew { get; set; }
 13
 7214        public TraceActorCell(ActorSystemImpl system, IInternalActorRef self, Props props, MessageDispatcher dispatcher,
 15
 16        public override void SendMessage(IActorRef sender, object message)
 6417        {
 6418            var ret = message switch
 6419            {
 6420                //IAutoReceivedMessage m => m,
 10021                LogEvent m => m,
 11422                var m when Activity.Current is not null => new TraceMessage(Activity.Current.Id, m),
 7023                _ => message
 6424            };
 25
 6426            base.SendMessage(sender, ret);
 6427        }
 28
 29        protected override ActorBase CreateNewActorInstance()
 3830        {
 3831            if (ActivityNew is not null)
 432            {
 433                using (var activity = ActivitySourceStatic.Instance.StartActivity($"{Self.Path}@Create", ActivityKind.In
 434                {
 435                    return base.CreateNewActorInstance();
 36                }
 37            }
 38            else
 3439            {
 3440                return base.CreateNewActorInstance();
 41            }
 3842        }
 43
 44        protected override void ReceiveMessage(object message)
 6345        {
 6346            switch (message)
 47            {
 248                case Error m when m.Cause is TraceException x:
 249                    using (var activity = ActivitySourceStatic.Instance.StartActivity("Exception", ActivityKind.Internal
 250                    {
 251                        activity?.AddTag("actor.path", Self.Path);
 252                        activity?.AddTagException(x.InnerException?.Demystify());
 53
 254                        base.ReceiveMessage(message);
 255                    }
 256                    return;
 57
 58                case TraceMessage m:
 2359                    message = m.Body;
 2360                    using (var activity = ActivitySourceStatic.Instance.StartActivity($"{Self.Path}@{message.GetType().F
 2361                    {
 2362                        var activityId = activity?.Id;
 2363                        activity?.AddTag("actor.path", Self.Path);
 2364                        activity?.AddTag("actor.library", Props.Type.Assembly.GetName().Name);
 2365                        activity?.AddTag("actor.type", Props.Type.Name);
 2366                        activity?.AddTag("actor.message", $"{message}");
 67
 68                        try
 2369                        {
 2370                            if (message is IAutoReceivedMessage)
 671                                base.AutoReceiveMessage(new Envelope(message, Sender));
 72                            else
 1773                                base.ReceiveMessage(message);
 2274                        }
 175                        catch (Exception ex)
 176                        {
 177                            ActivityNew = activityId;
 178                            throw new TraceException(ex, activityId);
 79                        }
 2280                    }
 2281                    return;
 82
 83                default:
 3884                    base.ReceiveMessage(message);
 3885                    return;
 86            }
 6287        }
 88    }
 89}