public void TestAddClusterMember()
        {
            var config = new ClusterMembership(membershipConfiguration, logger);
            var localhost = "tcp://127.0.0.1:40";
            var ep1 = new SocketEndpoint(new Uri(localhost), Guid.NewGuid().ToByteArray());
            var ep2 = new SocketEndpoint(new Uri(localhost), Guid.NewGuid().ToByteArray());
            config.AddClusterMember(ep1);
            config.AddClusterMember(ep2);

            CollectionAssert.Contains(config.GetClusterMembers(), ep1);
            CollectionAssert.Contains(config.GetClusterMembers(), ep2);
        }
        public void TestNodeConsideredDead_IfLastKnownPongWasLongerThanPongSilenceBeforeRouteDeletionAgo()
        {
            var config = new ClusterMembership(membershipConfiguration, logger);
            var localhost = "tcp://127.0.0.1:40";
            var ep1 = new SocketEndpoint(new Uri(localhost), Guid.NewGuid().ToByteArray());
            var ep2 = new SocketEndpoint(new Uri(localhost), Guid.NewGuid().ToByteArray());
            config.AddClusterMember(ep1);
            config.AddClusterMember(ep2);

            var pingTime = DateTime.UtcNow;
            var pingDelay = TimeSpan.FromSeconds(3);
            Thread.Sleep(membershipConfiguration.PongSilenceBeforeRouteDeletion + pingDelay);

            config.KeepAlive(ep1);
            
            CollectionAssert.Contains(config.GetDeadMembers(pingTime, pingInterval), ep2);
            CollectionAssert.DoesNotContain(config.GetDeadMembers(pingTime, pingInterval), ep1);
        }