< Summary

Information
Class: Elsa.Diagnostics.ConsoleLogs.Services.ConsoleLogContextAccessorExtensions
Assembly: Elsa.Diagnostics.ConsoleLogs
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Diagnostics.ConsoleLogs/Services/ConsoleLogContextAccessorExtensions.cs
Line coverage
77%
Covered lines: 17
Uncovered lines: 5
Coverable lines: 22
Total lines: 54
Line coverage: 77.2%
Branch coverage
66%
Covered branches: 4
Total branches: 6
Branch coverage: 66.6%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
PushWorkflowExecution(...)100%11100%
PushActivityExecution(...)100%11100%
PushMetadataIfNotEmpty(...)50%22100%
.cctor()100%210%
.ctor()100%210%
Dispose()100%210%
.ctor(...)100%11100%
Dispose()75%4483.33%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Diagnostics.ConsoleLogs/Services/ConsoleLogContextAccessorExtensions.cs

#LineLine coverage
 1namespace Elsa.Diagnostics.ConsoleLogs.Services;
 2
 3internal static class ConsoleLogContextAccessorExtensions
 4{
 5    public static IDisposable PushWorkflowExecution(this IConsoleLogContextAccessor accessor, WorkflowExecutionContext c
 6    {
 67        var identity = context.Workflow.Identity;
 68        return new CompositeScope(
 69            accessor.PushMetadata(ConsoleLogMetadataKeys.WorkflowInstanceId, context.Id),
 610            accessor.PushMetadata(ConsoleLogMetadataKeys.WorkflowDefinitionId, identity.DefinitionId),
 611            accessor.PushMetadata(ConsoleLogMetadataKeys.WorkflowDefinitionVersionId, identity.Id));
 12    }
 13
 14    public static IDisposable PushActivityExecution(this IConsoleLogContextAccessor accessor, ActivityExecutionContext c
 15    {
 316        return new CompositeScope(
 317            accessor.PushWorkflowExecution(context.WorkflowExecutionContext),
 318            PushMetadataIfNotEmpty(accessor, ConsoleLogMetadataKeys.ActivityInstanceId, context.Id),
 319            PushMetadataIfNotEmpty(accessor, ConsoleLogMetadataKeys.ActivityId, context.Activity.Id),
 320            PushMetadataIfNotEmpty(accessor, ConsoleLogMetadataKeys.ActivityNodeId, context.NodeId));
 21    }
 22
 23    private static IDisposable PushMetadataIfNotEmpty(IConsoleLogContextAccessor accessor, string key, string? value) =>
 924        string.IsNullOrWhiteSpace(value) ? EmptyScope.Instance : accessor.PushMetadata(key, value);
 25
 26    private sealed class EmptyScope : IDisposable
 27    {
 028        public static readonly EmptyScope Instance = new();
 29
 030        private EmptyScope()
 31        {
 032        }
 33
 34        public void Dispose()
 35        {
 036        }
 37    }
 38
 939    private sealed class CompositeScope(params IDisposable[] scopes) : IDisposable
 40    {
 41        private bool _disposed;
 42
 43        public void Dispose()
 44        {
 945            if (_disposed)
 046                return;
 47
 7848            for (var i = scopes.Length - 1; i >= 0; i--)
 3049                scopes[i].Dispose();
 50
 951            _disposed = true;
 952        }
 53    }
 54}