public void NeighborsSentReceivedTest() { var msg = new NeighborsMessage { FarAddress = _address2, Nodes = new List <Node>().ToArray(), ExpirationTime = (long)(new Timestamper().EpochSeconds + 1200), FarPublicKey = _privateKey2.PublicKey }; _discoveryHandlers[0].SendMessage(msg); Thread.Sleep(200); _discoveryManagers[1].Received(1).OnIncomingMessage(Arg.Is <DiscoveryMessage>(x => x.MessageType == MessageType.Neighbors)); var msg2 = new NeighborsMessage { FarAddress = _address, Nodes = new List <Node>().ToArray(), ExpirationTime = (long)(new Timestamper().EpochSeconds + 1200), FarPublicKey = _privateKey.PublicKey }; _discoveryHandlers[1].SendMessage(msg2); Thread.Sleep(200); _discoveryManagers[0].Received(1).OnIncomingMessage(Arg.Is <DiscoveryMessage>(x => x.MessageType == MessageType.Neighbors)); }
public void ProcessNeighborsMessage(NeighborsMessage discoveryMessage) { if (!IsBonded) { return; } if (_isNeighborsExpected) { NodeStats.AddNodeStatsEvent(NodeStatsEventType.DiscoveryNeighboursIn); RefreshNodeContactTime(); foreach (Node node in discoveryMessage.Nodes) { if (node.Address.Address.ToString().Contains("127.0.0.1")) { if (_logger.IsTrace) { _logger.Trace($"Received localhost as node address from: {discoveryMessage.FarPublicKey}, node: {node}"); } continue; } //If node is new it will create a new nodeLifecycleManager and will update state to New, which will trigger Ping _discoveryManager.GetNodeLifecycleManager(node); } } _isNeighborsExpected = false; }
public void NeighborsMessageTest() { var message = new NeighborsMessage { FarAddress = _farAddress, Nodes = new[] { new Node("192.168.1.2", 1), new Node("192.168.1.3", 2), new Node("192.168.1.4", 3) }, FarPublicKey = _privateKey.PublicKey, ExpirationTime = 60 + (long)_timestamper.EpochMilliseconds }; var data = _messageSerializationService.Serialize(message); var deserializedMessage = _messageSerializationService.Deserialize <NeighborsMessage>(data); Assert.AreEqual(message.MessageType, deserializedMessage.MessageType); Assert.AreEqual(message.FarPublicKey, deserializedMessage.FarPublicKey); Assert.AreEqual(message.ExpirationTime, deserializedMessage.ExpirationTime); for (var i = 0; i < message.Nodes.Length; i++) { Assert.AreEqual(message.Nodes[i].Host, deserializedMessage.Nodes[i].Host); Assert.AreEqual(message.Nodes[i].Port, deserializedMessage.Nodes[i].Port); Assert.AreEqual(message.Nodes[i].IdHash, deserializedMessage.Nodes[i].IdHash); Assert.AreEqual(message.Nodes[i], deserializedMessage.Nodes[i]); } }
public async Task NeighborsSentReceivedTest() { var msg = new NeighborsMessage { FarAddress = _address2, Nodes = new List <Node>().ToArray(), ExpirationTime = Timestamper.Default.UnixTime.SecondsLong + 1200, FarPublicKey = _privateKey2.PublicKey }; _discoveryHandlers[0].SendMessage(msg); await SleepWhileWaiting(); _discoveryManagersMocks[1].Received(1).OnIncomingMessage(Arg.Is <DiscoveryMessage>(x => x.MessageType == MessageType.Neighbors)); var msg2 = new NeighborsMessage { FarAddress = _address, Nodes = new List <Node>().ToArray(), ExpirationTime = Timestamper.Default.UnixTime.SecondsLong + 1200, FarPublicKey = _privateKey.PublicKey }; _discoveryHandlers[1].SendMessage(msg2); await SleepWhileWaiting(); _discoveryManagersMocks[0].Received(1).OnIncomingMessage(Arg.Is <DiscoveryMessage>(x => x.MessageType == MessageType.Neighbors)); }
public void NeighborsMessageTest() { var nodeFactory = new NodeFactory(); var message = new NeighborsMessage { FarAddress = _farAddress, Nodes = new[] { nodeFactory.CreateNode("192.168.1.2", 1), nodeFactory.CreateNode("192.168.1.3", 2), nodeFactory.CreateNode("192.168.1.4", 3) }, FarPublicKey = _privateKey.PublicKey, ExpirationTime = _config.DiscoveryMsgExpiryTime + Timestamp.UnixUtcUntilNowMilisecs }; var data = _messageSerializationService.Serialize(message); var deserializedMessage = _messageSerializationService.Deserialize <NeighborsMessage>(data); Assert.AreEqual(message.MessageType, deserializedMessage.MessageType); Assert.AreEqual(message.FarPublicKey, deserializedMessage.FarPublicKey); Assert.AreEqual(message.ExpirationTime, deserializedMessage.ExpirationTime); for (var i = 0; i < message.Nodes.Length; i++) { Assert.AreEqual(message.Nodes[i].Host, deserializedMessage.Nodes[i].Host); Assert.AreEqual(message.Nodes[i].Port, deserializedMessage.Nodes[i].Port); Assert.AreEqual(message.Nodes[i].IdHashText, deserializedMessage.Nodes[i].IdHashText); Assert.AreEqual(message.Nodes[i], deserializedMessage.Nodes[i]); } }
public void SendNeighbors(Node[] nodes) { NeighborsMessage msg = _discoveryMessageFactory.CreateOutgoingMessage <NeighborsMessage>(ManagedNode); msg.Nodes = nodes; _discoveryManager.SendMessage(msg); NodeStats.AddNodeStatsEvent(NodeStatsEventType.DiscoveryNeighboursOut); }
public void ProcessNeighborsMessage(NeighborsMessage discoveryMessage) { if (_isNeighborsExpected) { NodeStats.AddNodeStatsEvent(NodeStatsEvent.DiscoveryNeighboursIn); RefreshNodeContactTime(); foreach (var node in discoveryMessage.Nodes) { //If node is new it will create a new nodeLifecycleManager and will update state to New, which will trigger Ping _discoveryManager.GetNodeLifecycleManager(node); } } _isNeighborsExpected = false; }
public void SendNeighbors(Node[] nodes) { if (!IsBonded) { if (_logger.IsWarn) { _logger.Warn("Sending NEIGHBOURS before bonding"); } } NeighborsMessage msg = _discoveryMessageFactory.CreateOutgoingMessage <NeighborsMessage>(ManagedNode); msg.Nodes = nodes; _discoveryManager.SendMessage(msg); NodeStats.AddNodeStatsEvent(NodeStatsEventType.DiscoveryNeighboursOut); }
public void HandleNeighbours(NeighborsMessage message) { if (!this.wait_neighbors) { Logger.Warning( string.Format("Receive neighbors from {0} without send find nodes.", node.Host)); return; } this.wait_neighbors = false; foreach (Node node in message.Nodes) { if (!this.node_manager.PublicHomeNode.Id.ToHexString().Equals(node.Id.ToHexString())) { this.node_manager.GetNodeHandler(node); } } }
public void SendNeighbours(List <Node> neighbours, long sequence) { Message msg = new NeighborsMessage(this.node_manager.PublicHomeNode, neighbours, sequence); SendMessage(msg); }