Beispiel #1
0
 public void IfSynodConsistsOfMoreThanOneNode_HeartBeatingIsStarted()
 {
     messageHub.Start(TimeSpan.FromSeconds(3));
     synodConfigProvider.Object.HeartBeatInterval.MultiplyBy(2).Sleep();
     messageHub.Stop();
     //
     Assert.InRange(synodConfigProvider.Object.Synod.Count(), 2, Int32.MaxValue);
     publisherSocket.Verify(m => m.SendMessage(It.Is <IMessage>(msg => msg.Equals(MessageIdentifier.Create <HeartBeatMessage>()))), Times.AtLeast(1));
 }
Beispiel #2
0
        public void WhenHeartBeatMessageArrives_LastKnownHeartBeatIsUpdated()
        {
            synodConfigProvider.Setup(m => m.MissingHeartBeatsBeforeReconnect).Returns(1);
            messageHub = new IntercomMessageHub(socketFactory.Object,
                                                synodConfigProvider.Object,
                                                perfCounterManager.Object,
                                                logger.Object);
            var messageCount = 1;
            var deadNode     = messageHub.GetClusterHealthInfo().First();
            var message      = Message.Create(new HeartBeatMessage {
                NodeUri = deadNode.NodeUri.ToSocketAddress()
            });

            subscriberSocket.Setup(m => m.ReceiveMessage(It.IsAny <CancellationToken>())).Returns(() => messageCount-- > 0 ? message : null);

            synodConfigProvider.Object
            .HeartBeatInterval
            .MultiplyBy(synodConfigProvider.Object.MissingHeartBeatsBeforeReconnect + 1)
            .Sleep();
            var timeout = synodConfigProvider.Object
                          .HeartBeatInterval
                          .DivideBy(2);

            //
            Assert.False(deadNode.IsHealthy());
            messageHub.Start(timeout);
            timeout.Sleep();
            messageHub.Stop();
            //
            Assert.True(deadNode.IsHealthy());
        }
Beispiel #3
0
        public void IfSynodConsistsOfOneNode_NoHeartBeatingStarted()
        {
            var localNode = new Node("tcp://127.0.0.1:800", ReceiverIdentifier.CreateIdentity());

            synodConfigProvider.Setup(m => m.Synod).Returns(1.Produce(i => new DynamicUri(localNode.Uri.AbsoluteUri)));
            synodConfigProvider.Setup(m => m.LocalNode).Returns(localNode);

            messageHub = new IntercomMessageHub(socketFactory.Object,
                                                synodConfigProvider.Object,
                                                perfCounterManager.Object,
                                                logger.Object);
            //
            messageHub.Start(TimeSpan.FromSeconds(3));
            synodConfigProvider.Object.HeartBeatInterval.MultiplyBy(2).Sleep();
            messageHub.Stop();
            //
            Assert.Equal(1, synodConfigProvider.Object.Synod.Count());
            publisherSocket.Verify(m => m.SendMessage(It.IsAny <IMessage>()), Times.Never);
        }