Esempio n. 1
0
        public AutoDiscoverySenderTests()
        {
            rendezvousCluster  = new Mock <IRendezvousCluster>();
            rendezvousEndpoint = new RendezvousEndpoint("tcp://*:8080", "tcp://*:9009");
            rendezvousCluster.Setup(m => m.GetCurrentRendezvousServer()).Returns(rendezvousEndpoint);
            socketFactory = new Mock <ISocketFactory>();
            socket        = new Mock <ISocket>();
            socketFactory.Setup(m => m.CreateDealerSocket()).Returns(socket.Object);
            performanceCounterManager = new Mock <IPerformanceCounterManager <KinoPerformanceCounters> >();
            var perfCounter = new Mock <IPerformanceCounter>();

            performanceCounterManager.Setup(m => m.GetCounter(It.IsAny <KinoPerformanceCounters>())).Returns(perfCounter.Object);
            logger = new Mock <ILogger>();
            config = new ClusterMembershipConfiguration
            {
                RouteDiscovery = new RouteDiscoveryConfiguration
                {
                    MaxAutoDiscoverySenderQueueLength = 100
                }
            };
            autoDiscoverSender = new AutoDiscoverySender(rendezvousCluster.Object,
                                                         socketFactory.Object,
                                                         config,
                                                         performanceCounterManager.Object,
                                                         logger.Object);
        }
Esempio n. 2
0
        private bool RendezvousNotLeader(IMessage message)
        {
            var shouldHandle = IsRendezvousNotLeader(message);

            if (shouldHandle)
            {
                var payload       = message.GetPayload <RendezvousNotLeaderMessage>();
                var newLeader     = new RendezvousEndpoint(payload.NewLeader.UnicastUri, payload.NewLeader.BroadcastUri);
                var currentLeader = rendezvousCluster.GetCurrentRendezvousServer();
                if (!currentLeader.Equals(newLeader))
                {
                    logger.Info($"New Rendezvous leader: {newLeader.BroadcastUri.AbsoluteUri}. " +
                                $"Disconnecting {currentLeader.BroadcastUri.AbsoluteUri}");

                    if (!rendezvousCluster.SetCurrentRendezvousServer(newLeader))
                    {
                        logger.Error($"New Rendezvous leader {newLeader.BroadcastUri.AbsoluteUri} "
                                     + $"was not found within configured Rendezvous cluster: [{string.Join(",", rendezvousCluster.Nodes.Select(n => n.BroadcastUri.AbsoluteUri))}]");
                    }

                    newRendezvousConfiguration.Set();
                }
            }

            return(shouldHandle);
        }
Esempio n. 3
0
        public void IfNewRendezvousServerDoesntBelongToCluster_ItIsNotSetAsCurrentRendezvousServer()
        {
            var otherEndpoint = new RendezvousEndpoint("tcp://*:5555", "tcp://*:4444");

            Assert.DoesNotContain(otherEndpoint, cluster.Cluster);
            //
            rendezvousCluster.SetCurrentRendezvousServer(otherEndpoint);
            //
            Assert.NotEqual(otherEndpoint, rendezvousCluster.GetCurrentRendezvousServer());
        }
        public void TwoRendezvousEndpointsAreNotEqual_IfTheirUnicastUriPropertiesAreNotEqual()
        {
            const string broadcastUri = "tcp://*:9090";
            var          first        = new RendezvousEndpoint("tcp://*:8081", broadcastUri);
            var          second       = new RendezvousEndpoint("tcp://*:8082", broadcastUri);

            //
            Assert.AreNotEqual(first, second);
            Assert.IsFalse(first.Equals(second));
            Assert.IsFalse(first.Equals((object)second));
            Assert.IsFalse(first == second);
            Assert.IsTrue(first != second);
        }
Esempio n. 5
0
        public void TwoRendezvousEndpointsAreNotEqual_IfTheirBroadsastUriPropertiesAreNotEqual()
        {
            const string unicastUri = "tcp://*:8080";
            var          first      = new RendezvousEndpoint(unicastUri, "tcp://*:9090");
            var          second     = new RendezvousEndpoint(unicastUri, "tcp://*:9091");

            //
            Assert.NotEqual(first, second);
            Assert.False(first.Equals(second));
            Assert.False(first.Equals((object)second));
            Assert.False(first == second);
            Assert.True(first != second);
        }
Esempio n. 6
0
 public void SetCurrentRendezvousServer(RendezvousEndpoint currentRendezvousServer)
 {
     lock (@lock)
     {
         for (var i = 0; i < config.Count; i++)
         {
             var server = config[i];
             if (server.Equals(currentRendezvousServer))
             {
                 config.Remove(server);
                 config.InsertFirst(server);
             }
         }
     }
 }
Esempio n. 7
0
 public void SetCurrentRendezvousServer(RendezvousEndpoint currentRendezvousServer)
 {
     lock (@lock)
     {
         for (var i = 0; i < config.Count; i++)
         {
             var server = config[i];
             if (server.Equals(currentRendezvousServer))
             {
                 config.Remove(server);
                 config.InsertFirst(server);
             }
         }
     }
 }
        public void Setup()
        {
            rendezvousCluster  = new Mock <IRendezvousCluster>();
            rendezvousEndpoint = new RendezvousEndpoint("tcp://*:8080", "tcp://*:9009");
            rendezvousCluster.Setup(m => m.GetCurrentRendezvousServer()).Returns(rendezvousEndpoint);
            socketFactory = new Mock <ISocketFactory>();
            socket        = new Mock <ISocket>();
            socketFactory.Setup(m => m.CreateDealerSocket()).Returns(socket.Object);
            performanceCounterManager = new Mock <IPerformanceCounterManager <KinoPerformanceCounters> >();
            var perfCounter = new Mock <IPerformanceCounter>();

            performanceCounterManager.Setup(m => m.GetCounter(It.IsAny <KinoPerformanceCounters>())).Returns(perfCounter.Object);
            logger             = new Mock <ILogger>();
            autoDiscoverSender = new AutoDiscoverySender(rendezvousCluster.Object,
                                                         socketFactory.Object,
                                                         performanceCounterManager.Object,
                                                         logger.Object);
        }
Esempio n. 9
0
        public bool SetCurrentRendezvousServer(RendezvousEndpoint newRendezvousServer)
        {
            lock (@lock)
            {
                for (var i = 0; i < config.Count; i++)
                {
                    var server = config[i];
                    server.RefreshUri();

                    if (server.Equals(newRendezvousServer))
                    {
                        config.Remove(server);
                        config.InsertFirst(server);

                        return(true);
                    }
                }

                return(false);
            }
        }
Esempio n. 10
0
        private bool RendezvousNotLeader(IMessage message)
        {
            var shouldHandle = IsRendezvousNotLeader(message);

            if (shouldHandle)
            {
                var payload   = message.GetPayload <RendezvousNotLeaderMessage>();
                var newLeader = new RendezvousEndpoint(new Uri(payload.NewLeader.UnicastUri),
                                                       new Uri(payload.NewLeader.BroadcastUri));
                var currentLeader = rendezvousCluster.GetCurrentRendezvousServer();
                if (!currentLeader.Equals(newLeader))
                {
                    logger.Info($"New Rendezvous leader: {newLeader.BroadcastUri.AbsoluteUri}. " +
                                $"Disconnecting {currentLeader.BroadcastUri.AbsoluteUri}");

                    rendezvousCluster.SetCurrentRendezvousServer(newLeader);
                    newRendezvousConfiguration.Set();
                }
            }

            return(shouldHandle);
        }
Esempio n. 11
0
        private bool RendezvousNotLeader(IMessage message)
        {
            var shouldHandle = IsRendezvousNotLeader(message);
            if (shouldHandle)
            {
                var payload = message.GetPayload<RendezvousNotLeaderMessage>();
                var newLeader = new RendezvousEndpoint
                                {
                                    MulticastUri = new Uri(payload.NewLeader.MulticastUri),
                                    UnicastUri = new Uri(payload.NewLeader.UnicastUri)
                                };
                if (!rendezvousCluster.GetCurrentRendezvousServer().Equals(newLeader))
                {
                    rendezvousCluster.SetCurrentRendezvousServer(newLeader);
                    newRendezvousConfiguration.Set();
                }
            }

            return shouldHandle;
        }