< Summary - Combined Code Coverage

Information
Class: NLightning.Application.NLTG.Extensions.NltgServiceExtensions
Assembly: NLightning.Application.NLTG
File(s): /home/runner/work/nlightning/nlightning/src/NLightning.Application.NLTG/Extensions/NltgServiceExtensions.cs
Tag: 30_15166811759
Line coverage
0%
Covered lines: 0
Uncovered lines: 48
Coverable lines: 48
Total lines: 79
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 4
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
ConfigureNltgServices(...)0%2040%

File(s)

/home/runner/work/nlightning/nlightning/src/NLightning.Application.NLTG/Extensions/NltgServiceExtensions.cs

#LineLine coverage
 1using Microsoft.Extensions.Configuration;
 2using Microsoft.Extensions.DependencyInjection;
 3using Microsoft.Extensions.Hosting;
 4
 5namespace NLightning.Application.NLTG.Extensions;
 6
 7using Common.Options;
 8using Domain.Bitcoin.Services;
 9using Domain.Factories;
 10using Domain.Node.Options;
 11using Domain.Protocol.Factories;
 12using Domain.Protocol.Managers;
 13using Factories;
 14using Infrastructure.Node.Factories;
 15using Infrastructure.Node.Interfaces;
 16using Infrastructure.Node.Managers;
 17using Infrastructure.Protocol.Factories;
 18using Infrastructure.Transport.Factories;
 19using Interfaces;
 20using Managers;
 21using Services;
 22
 23public static class NltgServiceExtensions
 24{
 25    /// <summary>
 26    /// Registers all NLTG application services for dependency injection
 27    /// </summary>
 28    public static IHostBuilder ConfigureNltgServices(this IHostBuilder hostBuilder, SecureKeyManager secureKeyManager)
 29    {
 030        return hostBuilder.ConfigureServices((hostContext, services) =>
 031        {
 032            // Get configuration
 033            var configuration = hostContext.Configuration;
 034
 035            // Register configuration as a service
 036            services.AddSingleton(configuration);
 037
 038            // Register the main daemon service
 039            services.AddHostedService<NltgDaemonService>();
 040
 041            // Add HttpClient for FeeService with configuration
 042            services.AddHttpClient<IFeeService, FeeService>(client =>
 043            {
 044                client.Timeout = TimeSpan.FromSeconds(30);
 045                client.DefaultRequestHeaders.Add("Accept", "application/json");
 046            });
 047
 048            // Register application services
 049            // Singleton services (one instance throughout the application)
 050            services.AddSingleton<IFeeService, FeeService>();
 051            services.AddSingleton<IMessageFactory, MessageFactory>();
 052            services.AddSingleton<IMessageServiceFactory, MessageServiceFactory>();
 053            services.AddSingleton<IPeerFactory, PeerFactory>();
 054            services.AddSingleton<IPeerManager, PeerManager>();
 055            services.AddSingleton<IPingPongServiceFactory, PingPongServiceFactory>();
 056            services.AddSingleton<ISecureKeyManager>(secureKeyManager);
 057            services.AddSingleton<ITcpListenerService, TcpListenerService>();
 058            services.AddSingleton<ITransportServiceFactory, TransportServiceFactory>();
 059
 060            // Scoped services (one instance per scope)
 061
 062            // Transient services (new instance each time)
 063
 064            // Register options with values from configuration
 065            services.AddOptions<FeeEstimationOptions>().BindConfiguration("FeeEstimation").ValidateOnStart();
 066            services.AddOptions<NodeOptions>()
 067                .BindConfiguration("Node")
 068                .PostConfigure(options =>
 069                {
 070                    var configuredAddresses = configuration.GetSection("Node:ListenAddresses").Get<string[]?>();
 071                    if (configuredAddresses is { Length: > 0 })
 072                    {
 073                        options.ListenAddresses = configuredAddresses.ToList();
 074                    }
 075                })
 076                .ValidateOnStart();
 077        });
 78    }
 79}