public void IfStartPeerMonitoringMessadeReceived_ConnectsToPeerHealthUri() { var healthUri = new Uri("tcp://127.0.0.2:9090"); var peerIdentifier = new ReceiverIdentifier(Guid.NewGuid().ToByteArray()); var payload = new StartPeerMonitoringMessage { Uri = "tcp://127.0.0.1:800", SocketIdentity = peerIdentifier.Identity, Health = new global::kino.Messaging.Messages.Health { Uri = healthUri.ToSocketAddress(), HeartBeatInterval = TimeSpan.FromMinutes(1) } }; var message = Message.Create(payload); var meta = new ClusterMemberMeta { HealthUri = payload.Health.Uri, HeartBeatInterval = payload.Health.HeartBeatInterval, ScaleOutUri = payload.Uri, LastKnownHeartBeat = DateTime.UtcNow, ConnectionEstablished = false }; connectedPeerRegistry.Setup(m => m.FindOrAdd(It.Is <ReceiverIdentifier>(id => id == peerIdentifier), It.IsAny <ClusterMemberMeta>())).Returns(meta); subscriberSocket.SetupMessageReceived(message, tokenSource.Token); // clusterHealthMonitor.Start(); TimeSpan.FromMilliseconds(100).Sleep(); tokenSource.Cancel(); clusterHealthMonitor.Stop(); // subscriberSocket.Verify(m => m.Connect(healthUri, false), Times.Once); Assert.IsTrue(meta.ConnectionEstablished); }
public void IfStartPeerMonitoringMessadeReceived_CheckDeadPeersMessageAfterPeerHeartBeatInterval() { config.StalePeersCheckInterval = TimeSpan.FromMinutes(1); var healthUri = new Uri("tcp://127.0.0.2:9090"); var heartBeatInterval = TimeSpan.FromMilliseconds(300); var peerIdentifier = new ReceiverIdentifier(Guid.NewGuid().ToByteArray()); var payload = new StartPeerMonitoringMessage { Uri = "tcp://127.0.0.1:800", SocketIdentity = peerIdentifier.Identity, Health = new global::kino.Messaging.Messages.Health { Uri = healthUri.ToSocketAddress(), HeartBeatInterval = heartBeatInterval } }; var message = Message.Create(payload); var meta = new ClusterMemberMeta { HealthUri = payload.Health.Uri, HeartBeatInterval = payload.Health.HeartBeatInterval, ScaleOutUri = payload.Uri, LastKnownHeartBeat = DateTime.UtcNow, ConnectionEstablished = false }; connectedPeerRegistry.Setup(m => m.FindOrAdd(It.Is <ReceiverIdentifier>(id => id == peerIdentifier), It.IsAny <ClusterMemberMeta>())).Returns(meta); subscriberSocket.SetupMessageReceived(message, tokenSource.Token); // clusterHealthMonitor.Start(); heartBeatInterval.MultiplyBy(2).Sleep(); tokenSource.Cancel(); clusterHealthMonitor.Stop(); // multiplexingSocket.Verify(m => m.Send(It.Is <IMessage>(msg => msg.Equals(KinoMessages.CheckDeadPeers))), Times.AtLeastOnce); }