public async Task FindNodeSentReceivedTest()
        {
            var msg = new FindNodeMessage
            {
                FarAddress     = _address2,
                SearchedNodeId = new byte[] { 1, 2, 3 },
                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.FindNode));

            var msg2 = new FindNodeMessage
            {
                FarAddress     = _address,
                SearchedNodeId = new byte[] { 1, 2, 3 },
                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.FindNode));
        }
        public void FindNodeSentReceivedTest()
        {
            var msg = new FindNodeMessage
            {
                FarAddress     = _address2,
                SearchedNodeId = new byte[] { 1, 2, 3 },
                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.FindNode));

            var msg2 = new FindNodeMessage
            {
                FarAddress     = _address,
                SearchedNodeId = new byte[] { 1, 2, 3 },
                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.FindNode));
        }
예제 #3
0
        public void ProcessFindNodeMessage(FindNodeMessage discoveryMessage)
        {
            NodeStats.AddNodeStatsEvent(NodeStatsEventType.DiscoveryFindNodeIn);
            RefreshNodeContactTime();

            Node[] nodes = _nodeTable.GetClosestNodes(discoveryMessage.SearchedNodeId);
            SendNeighbors(nodes);
        }
예제 #4
0
        public void SendFindNode(byte[] target)
        {
            this.wait_neighbors = true;
            FindNodeMessage message = new FindNodeMessage(this.node_manager.PublicHomeNode, target);

            this.findnode_sequence = message.Timestamp;
            SendMessage(message);
        }
예제 #5
0
        public void SendFindNode(byte[] searchedNodeId)
        {
            FindNodeMessage msg = _discoveryMessageFactory.CreateOutgoingMessage <FindNodeMessage>(ManagedNode);

            msg.SearchedNodeId   = searchedNodeId;
            _isNeighborsExpected = true;
            _discoveryManager.SendMessage(msg);
            NodeStats.AddNodeStatsEvent(NodeStatsEventType.DiscoveryFindNodeOut);
        }
예제 #6
0
        public void FindNodeMessageTest()
        {
            var message = new FindNodeMessage
            {
                FarAddress     = _farAddress,
                SearchedNodeId = new byte[] { 1, 2, 3 },
                FarPublicKey   = _privateKey.PublicKey,
                ExpirationTime = 60 + (long)_timestamper.EpochMilliseconds
            };

            var data = _messageSerializationService.Serialize(message);
            var deserializedMessage = _messageSerializationService.Deserialize <FindNodeMessage>(data);

            Assert.AreEqual(message.MessageType, deserializedMessage.MessageType);
            Assert.AreEqual(message.FarPublicKey, deserializedMessage.FarPublicKey);
            Assert.AreEqual(message.ExpirationTime, deserializedMessage.ExpirationTime);

            Assert.AreEqual(message.SearchedNodeId, deserializedMessage.SearchedNodeId);
        }
예제 #7
0
        public void FindNodeMessageTest()
        {
            var message = new FindNodeMessage
            {
                FarAddress     = _farAddress,
                SearchedNodeId = new byte[] { 1, 2, 3 },
                FarPublicKey   = _privateKey.PublicKey,
                ExpirationTime = _config.DiscoveryMsgExpiryTime + Timestamp.UnixUtcUntilNowMilisecs
            };

            var data = _messageSerializationService.Serialize(message);
            var deserializedMessage = _messageSerializationService.Deserialize <FindNodeMessage>(data);

            Assert.AreEqual(message.MessageType, deserializedMessage.MessageType);
            Assert.AreEqual(message.FarPublicKey, deserializedMessage.FarPublicKey);
            Assert.AreEqual(message.ExpirationTime, deserializedMessage.ExpirationTime);

            Assert.AreEqual(message.SearchedNodeId, deserializedMessage.SearchedNodeId);
        }
        public void SendFindNode(byte[] searchedNodeId)
        {
            if (!IsBonded)
            {
                if (_logger.IsDebug)
                {
                    _logger.Debug($"Sending FIND NODE on {ManagedNode} before bonding");
                }
            }

            if (DateTime.UtcNow - _lastTimeSendFindNode < TimeSpan.FromSeconds(60))
            {
                return;
            }

            FindNodeMessage msg = _discoveryMessageFactory.CreateOutgoingMessage <FindNodeMessage>(ManagedNode);

            msg.SearchedNodeId   = searchedNodeId;
            _isNeighborsExpected = true;
            _discoveryManager.SendMessage(msg);
            NodeStats.AddNodeStatsEvent(NodeStatsEventType.DiscoveryFindNodeOut);
        }
예제 #9
0
        public void HandleFindNode(FindNodeMessage message)
        {
            List <Node> closest = this.node_manager.Table.GetClosestNodes(message.TargetId);

            SendNeighbours(closest, message.Timestamp);
        }