< Summary

Information
Class: Elsa.Resilience.ShellFeatures.ResilienceFeature
Assembly: Elsa.Resilience
File(s): /home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Resilience/ShellFeatures/ResilienceFeature.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 22
Coverable lines: 22
Total lines: 47
Line coverage: 0%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
ConfigureServices(...)100%210%

File(s)

/home/runner/work/elsa-core/elsa-core/src/modules/Elsa.Resilience/ShellFeatures/ResilienceFeature.cs

#LineLine coverage
 1using CShells.FastEndpoints.Features;
 2using CShells.Features;
 3using Elsa.Expressions.Options;
 4using Elsa.Extensions;
 5using Elsa.Resilience.Entities;
 6using Elsa.Resilience.Modifiers;
 7using Elsa.Resilience.Options;
 8using Elsa.Resilience.Recorders;
 9using Elsa.Resilience.Serialization;
 10using Elsa.Resilience.StrategySources;
 11using Elsa.Workflows;
 12using Microsoft.Extensions.DependencyInjection;
 13
 14namespace Elsa.Resilience.ShellFeatures;
 15
 16[ShellFeature]
 17public class ResilienceFeature : IFastEndpointsShellFeature
 18{
 19    public void ConfigureServices(IServiceCollection services)
 20    {
 021        services.Configure<ExpressionOptions>(options =>
 022        {
 023            options.AddTypeAlias<List<RetryAttemptRecord>>("RetryAttemptRecordList");
 024        });
 25
 026        services.AddOptions<ResilienceOptions>();
 27
 028        services
 029            .AddSingleton<ResilienceStrategySerializer>()
 030            .AddSingleton<IActivityDescriptorModifier, ResilientActivityDescriptorModifier>()
 031            .AddScoped<IResilienceStrategyCatalog, ResilienceStrategyCatalog>()
 032            .AddScoped<IResilienceStrategyConfigEvaluator, ResilienceStrategyConfigEvaluator>()
 033            .AddScoped<IResilientActivityInvoker, ResilientActivityInvoker>()
 034            .AddScoped<IResilienceStrategySource, ConfigurationResilienceStrategySource>()
 035            .AddSingleton(VoidRetryAttemptRecorder.Instance)
 036            .AddSingleton(VoidRetryAttemptReader.Instance)
 037            .AddScoped<IRetryAttemptRecorder, ActivityExecutionContextRetryAttemptRecorder>()
 038            .AddScoped<IRetryAttemptReader, ActivityExecutionContextRetryAttemptReader>()
 039            .AddScoped<ActivityExecutionContextRetryAttemptReader>()
 040            .AddHandlersFrom<ResilienceFeature>();
 41
 42        // Register transient exception detection infrastructure
 043        services
 044            .AddSingleton<ITransientExceptionStrategy, DefaultTransientExceptionStrategy>()
 045            .AddSingleton<ITransientExceptionDetector, TransientExceptionDetector>();
 046    }
 47}