< Summary - CoreWCF Coverage — PR #1766

Information
Class: CoreWCF.Configuration.ServiceModelApplicationBuilderExtensions
Assembly: CoreWCF.Primitives
File(s): /home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.Primitives/src/CoreWCF/Configuration/ServiceModelApplicationBuilderExtensions.cs
Line coverage
86%
Covered lines: 46
Uncovered lines: 7
Coverable lines: 53
Total lines: 133
Line coverage: 86.7%
Branch coverage
73%
Covered branches: 25
Total branches: 34
Branch coverage: 73.5%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
UseServiceModel(...)50%4471.42%
UseServiceModel(...)92.85%1414100%
UseServiceModel(...)50%2275%
UseServiceModel(...)50%4471.42%
UseServiceModel(...)70%101085.71%

File(s)

/home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.Primitives/src/CoreWCF/Configuration/ServiceModelApplicationBuilderExtensions.cs

#LineLine coverage
 1// Licensed to the .NET Foundation under one or more agreements.
 2// The .NET Foundation licenses this file to you under the MIT license.
 3
 4using System;
 5using System.Collections.Generic;
 6using System.Linq;
 7using CoreWCF.Channels;
 8using Microsoft.AspNetCore.Builder;
 9using Microsoft.Extensions.DependencyInjection;
 10using Microsoft.Extensions.Hosting;
 11using Microsoft.Extensions.Logging;
 12using Microsoft.Extensions.Options;
 13
 14namespace CoreWCF.Configuration
 15{
 16    public static class ServiceModelApplicationBuilderExtensions
 17    {
 18        public static IApplicationBuilder UseServiceModel(this IApplicationBuilder app, Action<IServiceBuilder> configur
 19        {
 51120            if (app == null)
 21            {
 022                throw new ArgumentNullException(nameof(app));
 23            }
 24
 51125            if (configureServices == null)
 26            {
 027                throw new ArgumentNullException(nameof(configureServices));
 28            }
 29
 51130            ServiceBuilder serviceBuilder = app.ApplicationServices.GetRequiredService<ServiceBuilder>();
 51131            configureServices(serviceBuilder);
 51032            return UseServiceModel(app);
 33        }
 34
 35        public static IApplicationBuilder UseServiceModel(this IApplicationBuilder app)
 36        {
 51237            ServiceBuilder serviceBuilder = app.ApplicationServices.GetRequiredService<ServiceBuilder>();
 51238            ILoggerFactory loggerFactory = app.ApplicationServices.GetRequiredService<ILoggerFactory>();
 51239            ILogger logger = loggerFactory.CreateLogger(typeof(ServiceModelApplicationBuilderExtensions));
 40
 51241            var options = app.ApplicationServices.GetService<IOptions<ServiceModelOptions>>();
 51242            var serviceModelOptions = options.Value ?? new ServiceModelOptions();
 51243            serviceModelOptions.ConfigureServiceBuilder(serviceBuilder);
 44
 51245            IEnumerable<ITransportServiceBuilder> transportServiceBuilders = app.ApplicationServices.GetServices<ITransp
 51246            var transportServiceBuilderSeenTypes = new HashSet<Type>();
 107247            foreach (ITransportServiceBuilder transportServiceBuilder in transportServiceBuilders)
 48            {
 2449                if (!transportServiceBuilderSeenTypes.Contains(transportServiceBuilder.GetType()))
 50                {
 2451                    logger.LogDebug("Calling {builderType}.Configure", transportServiceBuilder.GetType().FullName);
 2452                    transportServiceBuilder.Configure(app);
 2453                    transportServiceBuilderSeenTypes.Add(transportServiceBuilder.GetType());
 54                }
 55            }
 56
 207257            foreach (IServiceConfiguration serviceConfig in serviceBuilder.ServiceConfigurations)
 58            {
 222659                foreach (ServiceEndpointConfiguration serviceEndpoint in serviceConfig.Endpoints)
 60                {
 58961                    ITransportServiceBuilder transportServiceBuilder = serviceEndpoint.Binding.GetProperty<ITransportSer
 62                    // Check if this transport service builder type has already been used in this app
 58963                    if (transportServiceBuilder != null && !transportServiceBuilderSeenTypes.Contains(transportServiceBu
 64                    {
 38265                        logger.LogDebug("Calling {builderType}.Configure", transportServiceBuilder.GetType().FullName);
 38266                        transportServiceBuilder.Configure(app);
 38267                        transportServiceBuilderSeenTypes.Add(transportServiceBuilder.GetType());
 68                    }
 69                }
 70            }
 71
 51272            return app;
 73        }
 74
 75        public static IHost UseServiceModel(this IHost host, Action<IServiceBuilder> configureServices)
 76        {
 377            if (host == null)
 78            {
 079                throw new ArgumentNullException(nameof(host));
 80            }
 81
 382            host.Services.UseServiceModel(configureServices);
 383            return host;
 84        }
 85
 86        public static IServiceProvider UseServiceModel(this IServiceProvider serviceProvider, Action<IServiceBuilder> co
 87        {
 388            if (serviceProvider == null)
 89            {
 090                throw new ArgumentNullException(nameof(serviceProvider));
 91            }
 92
 393            if (configureServices == null)
 94            {
 095                throw new ArgumentNullException(nameof(configureServices));
 96            }
 97
 398            ServiceBuilder serviceBuilder = serviceProvider.GetService<ServiceBuilder>();
 399            configureServices(serviceBuilder);
 3100            return UseServiceModel(serviceProvider);
 101        }
 102
 103        public static IServiceProvider UseServiceModel(this IServiceProvider serviceProvider)
 104        {
 3105            ServiceBuilder serviceBuilder = serviceProvider.GetRequiredService<ServiceBuilder>();
 3106            ILoggerFactory loggerFactory = serviceProvider.GetRequiredService<ILoggerFactory>();
 107
 3108            var options = serviceProvider.GetService<IOptions<ServiceModelOptions>>();
 3109            var serviceModelOptions = options.Value ?? new ServiceModelOptions();
 3110            serviceModelOptions.ConfigureServiceBuilder(serviceBuilder);
 111
 3112            IEnumerable<ITransportServiceBuilder> transportServiceBuilders = serviceProvider.GetServices<ITransportServi
 3113            if (transportServiceBuilders.Count() > 0)
 114            {
 0115                throw new InvalidOperationException(SR.WebHostRequired);
 116            }
 117
 12118            foreach (IServiceConfiguration serviceConfig in serviceBuilder.ServiceConfigurations)
 119            {
 12120                foreach (ServiceEndpointConfiguration serviceEndpoint in serviceConfig.Endpoints)
 121                {
 3122                    ITransportServiceBuilder transportServiceBuilder = serviceEndpoint.Binding.GetProperty<ITransportSer
 3123                    if (transportServiceBuilder != null)
 124                    {
 0125                        throw new InvalidOperationException(SR.WebHostRequired);
 126                    }
 127                }
 128            }
 129
 3130            return serviceProvider;
 131        }
 132    }
 133}