Exemplo n.º 1
0
        private static void LogClusterChange(ClusterInfo oldCluster, ClusterInfo newCluster, string source)
        {
            var ipEndPointComparer = new IPEndPointComparer();

            if (!LogManager.StructuredLog)
            {
                Log.Trace("CLUSTER HAS CHANGED{0}", source.IsNotEmptyString() ? " (" + source + ")" : string.Empty);
                Log.Trace("Old:");
                foreach (var oldMember in oldCluster.Members.OrderByDescending(x => x.InternalHttpEndPoint, ipEndPointComparer))
                {
                    Log.Trace(oldMember.ToString());
                }
                Log.Trace("New:");
                foreach (var newMember in newCluster.Members.OrderByDescending(x => x.InternalHttpEndPoint, ipEndPointComparer))
                {
                    Log.Trace(newMember.ToString());
                }
                Log.Trace(new string('-', 80));
            }
            else
            {
                List <MemberInfo> oldMembers = oldCluster.Members.OrderByDescending(x => x.InternalHttpEndPoint, ipEndPointComparer).ToList();
                List <MemberInfo> newMembers = newCluster.Members.OrderByDescending(x => x.InternalHttpEndPoint, ipEndPointComparer).ToList();
                Log.Trace(
                    "CLUSTER HAS CHANGED {source}"
                    + "\nOld:"
                    + "\n{@oldMembers}"
                    + "\nNew:"
                    + "\n{@newMembers}"
                    , source.IsNotEmptyString() ? source : string.Empty
                    , oldMembers
                    , newMembers
                    );
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// The ip end point comparer test.
        /// </summary>
        [Test] public void IPEndPointComparerTest()
        {
            var ip1      = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 56721);
            var ip2      = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 56722);
            var comparer = new IPEndPointComparer();

            Assert.That(comparer.Compare(ip1, ip2) == -1);
            Assert.That(comparer.Compare(ip2, ip1) == 1);
            Assert.That(comparer.Compare(ip1, ip1) == 0);
            Assert.That(comparer.Compare(ip2, ip2) == 0);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Determines whether the current availability group contains the specified server replica.
        /// </summary>
        /// <param name="ipe">A <see cref="System.Net.IPEndPoint"/> of the specified server.</param>
        /// <returns>If the availability group contains the specified server instance, returns true; otherwise, returns false.</returns>
        public bool Has(IPEndPoint ipe)
        {
            IPEndPointComparer comparer = new IPEndPointComparer();

            for (int i = 0; i < ServerInstances.Count; i++)
            {
                if (comparer.Compare(ServerInstances[i].EndPoint, ipe) == 0)
                {
                    return(true);
                }
            }
            return(false);
        }
Exemplo n.º 4
0
        /// <summary>
        /// Gets the storage root directory by the specified server <see cref="System.Net.IPEndPoint"/>.
        /// </summary>
        /// <param name="ipe">A <see cref="System.Net.IPEndPoint"/> of the specified server.</param>
        /// <returns>The storage root directory of the specified server.</returns>
        public string GetStorageRootByIPE(IPEndPoint ipe)
        {
            IPEndPointComparer comparer = new IPEndPointComparer();

            for (int i = 0; i < ServerInstances.Count; i++)
            {
                if (comparer.Compare(ServerInstances[i].EndPoint, ipe) == 0)
                {
                    return(ServerInstances[i].StorageRoot);
                }
            }
            return(null);
        }
Exemplo n.º 5
0
        /// <summary>
        /// Determines whether the current availability group contains the specified server replica.
        /// </summary>
        /// <param name="ips">A list of available <see cref="System.Net.IPAddress"/> instances for a given server.</param>
        /// <param name="port">The network port of the server.</param>
        /// <returns>If the availability group contains the specified server instance, returns true; otherwise, returns false.</returns>
        public bool Has(List <IPAddress> ips, int port)
        {
            IPEndPointComparer comparer = new IPEndPointComparer();

            for (int i = 0; i < ServerInstances.Count; i++)
            {
                foreach (var ip in ips)
                {
                    if (comparer.Compare(ServerInstances[i].EndPoint, new IPEndPoint(ip, port)) == 0)
                    {
                        return(true);
                    }
                }
            }
            return(false);
        }
        private static void LogClusterChange(ClusterInfo oldCluster, ClusterInfo newCluster, string source)
        {
            Log.Trace("CLUSTER HAS CHANGED{0}", source.IsNotEmptyString() ? " (" + source + ")" : string.Empty);
            Log.Trace("Old:");
            var ipEndPointComparer = new IPEndPointComparer();

            foreach (var oldMember in oldCluster.Members.OrderByDescending(x => x.InternalHttpEndPoint, ipEndPointComparer))
            {
                Log.Trace(oldMember.ToString());
            }
            Log.Trace("New:");
            foreach (var newMember in newCluster.Members.OrderByDescending(x => x.InternalHttpEndPoint, ipEndPointComparer))
            {
                Log.Trace(newMember.ToString());
            }
            Log.Trace(new string('-', 80));
        }
Exemplo n.º 7
0
        public void IPEndPointComparerShouldCompareParsedV4AndV6IPEndpointsCorrectly()
        {
            var comparer = new IPEndPointComparer();

            var endpoint1 = new IPEndPoint(IPAddress.Parse("::ffff:127.0.0.1"), 12857);
            var endpoint2 = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 12857);

            comparer.Equals(endpoint2, endpoint1).Should().BeTrue();

            endpoint1 = new IPEndPoint(IPAddress.Parse("::ffff:127.0.0.1"), 12857);
            endpoint2 = new IPEndPoint(IPAddress.Parse("127.1.0.1"), 12857);
            comparer.Equals(endpoint2, endpoint1).Should().BeFalse();

            endpoint1 = new IPEndPoint(IPAddress.Parse("::ffff:127.0.0.1"), 12857);
            endpoint2 = new IPEndPoint(IPAddress.Parse("127.1.0.1"), 12858);
            comparer.Equals(endpoint2, endpoint1).Should().BeFalse();
        }
Exemplo n.º 8
0
        public void CanCompareIPEndPoints()
        {
            var ep1 = new IPEndPoint(IPAddress.Parse("1.2.3.4"), 5);
            var ep2 = new IPEndPoint(IPAddress.Parse("1.2.3.4"), 6);
            var ep3 = new IPEndPoint(IPAddress.Parse("1.1.2.2"), 5);
            var ep4 = new IPEndPoint(IPAddress.Parse("1.1.2.2"), 6);
            var ep5 = new IPEndPoint(IPAddress.Parse("1.1.2.2"), 6);

            var comparer = new IPEndPointComparer();

            Assert.False(comparer.Equals(ep1, ep2));
            Assert.False(comparer.Equals(ep1, ep3));
            Assert.True(comparer.Equals(ep4, ep5));

            Assert.NotEqual(comparer.GetHashCode(ep1), comparer.GetHashCode(ep2));
            Assert.NotEqual(comparer.GetHashCode(ep1), comparer.GetHashCode(ep3));
            Assert.Equal(comparer.GetHashCode(ep4), comparer.GetHashCode(ep5));
        }
Exemplo n.º 9
0
        private static void LogClusterChange(ClusterInfo oldCluster, ClusterInfo newCluster, string source)
        {
            var ipEndPointComparer = new IPEndPointComparer();

            List <MemberInfo> oldMembers = oldCluster.Members
                                           .OrderByDescending(x => x.InternalHttpEndPoint, ipEndPointComparer).ToList();
            List <MemberInfo> newMembers = newCluster.Members
                                           .OrderByDescending(x => x.InternalHttpEndPoint, ipEndPointComparer).ToList();

            Log.Information(
                "CLUSTER HAS CHANGED {source}"
                + "\nOld:"
                + "\n{oldMembers}"
                + "\nNew:"
                + "\n{newMembers}"
                , source.IsNotEmptyString() ? source : string.Empty
                , oldMembers
                , newMembers
                );
        }
Exemplo n.º 10
0
        /// <summary>
        /// TODO: Documentation RemoveEP
        /// </summary>
        /// <param name="peerEP"></param>
        public void RemoveEP(IPEndPoint peerEP)
        {
            IPEndPointComparer comparer = new IPEndPointComparer();

            foreach (var item in this.peersToPunch)
            {
                if (comparer.Equals(item.Value, peerEP))
                {
                    this.peersToPunch.Remove(item.Key);
                }
            }
        }