public void Test_GetRandomID()
        {
            var randId = DHTHelper.GetRandomID();

            Assert.IsNotNull(randId);
            Assert.AreEqual(20, randId.Length);
        }
Beispiel #2
0
        public void Test_ToString()
        {
            var endPoint = new IPEndPoint(IPAddress.Any, 0);
            var randId   = DHTHelper.GetRandomID();
            var node     = new DHTNode(randId, endPoint);

            Assert.IsNotNullOrEmpty(node.ToString());
        }
Beispiel #3
0
        public void Test_CreateChatMessage()
        {
            var tid    = DHTHelper.GetTransactionId();
            var nodeId = DHTHelper.GetRandomID();
            var msg    = ProtocolHelper.CreateChatMessage(tid, nodeId, "test");

            Assert.IsNotNull(msg);
            // TODO: test contents
        }
Beispiel #4
0
        public void Test_CreateHandshakeResponse()
        {
            var tid    = DHTHelper.GetTransactionId();
            var nodeId = DHTHelper.GetRandomID();
            var msg    = ProtocolHelper.CreateHandshakeResponse(tid, nodeId);

            Assert.IsNotNull(msg);
            // TODO: test contents
        }
Beispiel #5
0
        public void Test_CreateGetPeerInfoQuery()
        {
            var tid    = DHTHelper.GetTransactionId();
            var nodeId = DHTHelper.GetRandomID();
            var msg    = ProtocolHelper.CreateGetPeerInfoQuery(tid, nodeId);

            Assert.IsNotNull(msg);
            // TODO: test contents
        }
Beispiel #6
0
        public void Test_UpdateNode()
        {
            var table = new DHTRoutingTable(10);

            table.UpdateNode(null);

            var node = new DHTNode(DHTHelper.GetRandomID(), new IPEndPoint(IPAddress.Any, 0));

            table.UpdateNode(node);
        }
        public void Test_CreateAnnouncePeerResponse()
        {
            var        tid    = DHTHelper.GetTransactionId();
            var        nodeId = DHTHelper.GetRandomID();
            DHTMessage msg    = DHTMessage.CreateAnnouncePeerResponse(tid, nodeId, new List <DHTNode>());

            Assert.IsNotNull(msg);
            Assert.AreEqual(MessageType.Response, msg.Type);
            // TODO: test contents
        }
        public void Test_CreateFindNodeQuery()
        {
            var        tid    = DHTHelper.GetTransactionId();
            var        nodeId = DHTHelper.GetRandomID();
            DHTMessage msg    = DHTMessage.CreateFindNodeQuery(tid, nodeId);

            Assert.IsNotNull(msg);
            Assert.AreEqual(MessageType.Query, msg.Type);
            Assert.AreEqual(QueryType.FindNode, msg.QueryType);
            // TODO: test contents
        }
Beispiel #9
0
        public void Test_PeerPingedEventArgs()
        {
            IPEndPoint peerEndPoint = new IPEndPoint(IPAddress.Any, 1111);

            byte[] nodeId = DHTHelper.GetRandomID();
            var    evt    = new PeerPingedEventArgs(peerEndPoint, nodeId);

            Assert.IsNotNull(evt);
            Assert.AreEqual(peerEndPoint, evt.EndPoint);
            Assert.AreEqual(nodeId, evt.NodeId);
        }
        public void Test_CreateGetPeersQuery()
        {
            var        tid      = DHTHelper.GetTransactionId();
            var        nodeId   = DHTHelper.GetRandomID();
            var        infoHash = DHTHelper.GetRandomHashID();
            DHTMessage msg      = DHTMessage.CreateGetPeersQuery(tid, nodeId, infoHash);

            Assert.IsNotNull(msg);
            Assert.AreEqual(MessageType.Query, msg.Type);
            Assert.AreEqual(QueryType.GetPeers, msg.QueryType);
            // TODO: test contents
        }
        public void Test_CreateAnnouncePeerQuery()
        {
            var        tid      = DHTHelper.GetTransactionId();
            var        nodeId   = DHTHelper.GetRandomID();
            var        infoHash = DHTHelper.GetRandomHashID();
            DHTMessage msg      = DHTMessage.CreateAnnouncePeerQuery(tid, nodeId, infoHash, 1, 1, new BString("XX"));

            Assert.IsNotNull(msg);
            Assert.AreEqual(MessageType.Query, msg.Type);
            Assert.AreEqual(QueryType.AnnouncePeer, msg.QueryType);
            // TODO: test contents
        }
Beispiel #12
0
        public void Test_CreateGetPeerInfoResponse()
        {
            var peerInfo = new PeerProfile();

            peerInfo.ResetSystem();

            var tid    = DHTHelper.GetTransactionId();
            var nodeId = DHTHelper.GetRandomID();
            var msg    = ProtocolHelper.CreateGetPeerInfoResponse(tid, nodeId, peerInfo);

            Assert.IsNotNull(msg);
            // TODO: test contents
        }
Beispiel #13
0
        public void Test_ctor2()
        {
            var endPoint = new IPEndPoint(IPAddress.Any, 0);
            var randId   = DHTHelper.GetRandomID();
            var node     = new DHTNode(randId, endPoint);

            Assert.IsNotNull(node);
            Assert.AreEqual(randId, node.ID);
            Assert.AreEqual(endPoint, node.EndPoint);

            Assert.AreEqual(0, node.LastAnnouncementTime);
            Assert.AreEqual(0, node.LastUpdateTime);
        }
        public void Test_CreateGetPeersResponse()
        {
            var        tid      = DHTHelper.GetTransactionId();
            var        nodeId   = DHTHelper.GetRandomID();
            var        infoHash = DHTHelper.GetRandomHashID();
            var        peers    = new List <IDHTPeer>();
            var        nodes    = new List <DHTNode>();
            DHTMessage msg      = DHTMessage.CreateGetPeersResponse(tid, nodeId, infoHash, peers, nodes);

            Assert.IsNotNull(msg);
            Assert.AreEqual(MessageType.Response, msg.Type);
            // TODO: test contents
        }
Beispiel #15
0
        public void Test_MessageEventArgs()
        {
            IPEndPoint peerEndPoint = new IPEndPoint(IPAddress.Any, 1111);

            byte[]      nodeId = DHTHelper.GetRandomID();
            BDictionary data   = new BDictionary();
            var         evt    = new MessageEventArgs(peerEndPoint, nodeId, data);

            Assert.IsNotNull(evt);
            Assert.AreEqual(peerEndPoint, evt.EndPoint);
            Assert.AreEqual(nodeId, evt.NodeId);
            Assert.AreEqual(data, evt.Data);
        }
Beispiel #16
0
        public void Test_ctor()
        {
            var table = new DHTRoutingTable(10);

            Assert.IsNotNull(table);

            Assert.AreEqual(0, table.Count);
            Assert.AreEqual(false, table.IsFull);

            table.Clear();

            var randId = DHTHelper.GetRandomID();
            var nodes  = table.FindNodes(randId);
        }
Beispiel #17
0
        public void Test_FindNode()
        {
            var table = new DHTRoutingTable(10);

            var randId       = DHTHelper.GetRandomID();
            var nodeEndPoint = new IPEndPoint(IPAddress.Any, 0);
            var node         = new DHTNode(randId, nodeEndPoint);

            table.UpdateNode(node);

            var node2 = table.FindNode(nodeEndPoint);

            Assert.IsNotNull(node2);

            node2 = table.FindNode(null);
            Assert.IsNull(node2);
        }
Beispiel #18
0
        public void Test_FindNodes()
        {
            var table = new DHTRoutingTable(10);

            var randId = DHTHelper.GetRandomID();
            var nodes  = table.FindNodes(randId);

            Assert.IsNotNull(nodes);
            Assert.AreEqual(0, nodes.Count);

            var node = new DHTNode(randId, new IPEndPoint(IPAddress.Any, 0));

            table.UpdateNode(node);
            nodes = table.FindNodes(randId);
            Assert.IsNotNull(nodes);
            Assert.AreEqual(1, nodes.Count);
        }
Beispiel #19
0
        public DHTClient(IPAddress addr, int port, IDHTPeersHolder peersHolder, string clientVer)
        {
            fBuffer       = new byte[65535];
            fClientVer    = clientVer;
            fDefaultIP    = new IPEndPoint(IPLoopbackAddress, 0);
            fLocalID      = DHTHelper.GetRandomID();
            fLocalIP      = new IPEndPoint(addr, port);
            fLogger       = LogManager.GetLogger(ProtocolHelper.LOG_FILE, ProtocolHelper.LOG_LEVEL, "DHTClient");
            fPeersHolder  = peersHolder;
            fRoutingTable = new DHTRoutingTable(KTableSize);
            fSearchRunned = false;
            fTransactions = new Dictionary <int, DHTMessage>();

            fSocket = new Socket(IPAddressFamily, SocketType.Dgram, ProtocolType.Udp);

            // FIXME: unsupported?
            #if !__MonoCS__
            fSocket.SetIPProtectionLevel(IPProtectionLevel.Unrestricted);
            #if !IP6
            const long IOC_IN            = 0x80000000;
            const long IOC_VENDOR        = 0x18000000;
            const long SIO_UDP_CONNRESET = IOC_IN | IOC_VENDOR | 12;
            byte[]     optionInValue     = { Convert.ToByte(false) };
            byte[]     optionOutValue    = new byte[4];
            fSocket.IOControl((IOControlCode)SIO_UDP_CONNRESET, optionInValue, optionOutValue);
            #else
            #endif
            #endif

            #if !IP6
            fSocket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);
            fSocket.Ttl = 255;
            #else
            fSocket.SetSocketOption(SocketOptionLevel.IPv6, SocketOptionName.IPv6Only, false);
            #endif

            fSocket.Bind(fLocalIP);
        }