< Summary

Information
Class: IceRpc.Features.ServerAddressFeatureExtensions
Assembly: IceRpc
File(s): /home/runner/work/icerpc-csharp/icerpc-csharp/src/IceRpc/Features/ServerAddressFeatureExtensions.cs
Tag: 275_13775359185
Line coverage
100%
Covered lines: 21
Uncovered lines: 0
Coverable lines: 21
Total lines: 41
Line coverage: 100%
Branch coverage
83%
Covered branches: 10
Total branches: 12
Branch coverage: 83.3%
Method coverage
100%
Covered methods: 2
Total methods: 2
Method coverage: 100%

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
RemoveServerAddress(...)87.5%88100%
RotateAddresses(...)75%44100%

File(s)

/home/runner/work/icerpc-csharp/icerpc-csharp/src/IceRpc/Features/ServerAddressFeatureExtensions.cs

#LineLine coverage
 1// Copyright (c) ZeroC, Inc.
 2
 3namespace IceRpc.Features;
 4
 5/// <summary>Provides extension methods for <see cref="IServerAddressFeature" />.</summary>
 6public static class ServerAddressFeatureExtensions
 7{
 8    /// <summary>Tries to remove a server address from this server address feature. The server address is added to the
 9    /// removed server addresses of the feature.</summary>
 10    /// <param name="feature">The server address feature.</param>
 11    /// <param name="serverAddress">The server address to remove from the server address feature.</param>
 12    public static void RemoveServerAddress(this IServerAddressFeature feature, ServerAddress serverAddress)
 1013    {
 14        // Filter-out the serverAddress
 1015        if (feature.ServerAddress == serverAddress)
 816        {
 817            feature.ServerAddress = null;
 818        }
 1819        feature.AltServerAddresses = feature.AltServerAddresses.RemoveAll(e => e == serverAddress);
 20
 1021        if (feature.ServerAddress is null && feature.AltServerAddresses.Count > 0)
 622        {
 623            feature.ServerAddress = feature.AltServerAddresses[0];
 624            feature.AltServerAddresses = feature.AltServerAddresses.RemoveAt(0);
 625        }
 1026        feature.RemovedServerAddresses = feature.RemovedServerAddresses.Add(serverAddress);
 1027    }
 28
 29    /// <summary>Rotates the server addresses the first alt server address becomes the main server address and the main
 30    /// server address becomes the last alt server address.</summary>
 31    /// <param name="feature">The server address feature.</param>
 32    public static void RotateAddresses(this IServerAddressFeature feature)
 633    {
 634        if (feature.ServerAddress is not null && feature.AltServerAddresses.Count > 0)
 635        {
 636            feature.AltServerAddresses = feature.AltServerAddresses.Add(feature.ServerAddress.Value);
 637            feature.ServerAddress = feature.AltServerAddresses[0];
 638            feature.AltServerAddresses = feature.AltServerAddresses.RemoveAt(0);
 639        }
 640    }
 41}