Ejemplo n.º 1
0
        public void RequestFastHaveEverything()
        {
            peer.SupportsFastPeer = true;
            peer.IsAllowedFastPieces.AddRange(new int[] { 1, 2, 3, 5, 8, 13, 21 });

            peer.BitField.SetAll(true);
            bitfield.SetAll(true);

            Assert.IsNull(manager.Picker.PickPiece(peer, peer.BitField, peers), "#1");
            manager.AddPieceRequests(peer);
            Assert.AreEqual(0, peer.AmRequestingPiecesCount, "#2");
            Assert.AreEqual(0, peer.QueueLength, "#3");
        }
Ejemplo n.º 2
0
        public void RequestInEndgame_AllDoNotDownload()
        {
            foreach (var file in torrentManager.Files)
            {
                file.Priority = Priority.DoNotDownload;
            }

            torrentManager.Bitfield.SetAll(true).Set(0, false);
            peers[0].BitField.SetAll(true);
            peers[0].IsChoking = false;

            manager.AddPieceRequests(peers[0]);
            Assert.AreEqual(0, peers[0].AmRequestingPiecesCount, "#1");
            Assert.AreEqual(0, peers[0].MessageQueue.QueueLength, "#2");
        }
Ejemplo n.º 3
0
        public async Task RequestInEndgame_AllDoNotDownload()
        {
            foreach (var file in torrentManager.Files)
            {
                await torrentManager.SetFilePriorityAsync(file, Priority.DoNotDownload);
            }

            torrentManager.MutableBitField.SetAll(true).Set(0, false);
            peers[0].MutableBitField.SetAll(true);
            peers[0].IsChoking = false;

            manager.AddPieceRequests(peers[0]);
            Assert.AreEqual(0, peers[0].AmRequestingPiecesCount, "#1");
            Assert.AreEqual(0, peers[0].MessageQueue.QueueLength, "#2");
        }
Ejemplo n.º 4
0
        public void RequestEntireFastPiece()
        {
            var id = peers [0];

            int[] allowedFast = { 1, 2 };
            id.SupportsFastPeer = true;
            id.IsAllowedFastPieces.AddRange((int[])allowedFast.Clone());
            id.BitField.SetAll(true); // Lets pretend he has everything
            id.ProcessingQueue = true;

            var requests = new List <RequestMessage> ();

            while (true)
            {
                manager.AddPieceRequests(id);
                if (id.QueueLength == 0)
                {
                    break;
                }

                while (id.QueueLength > 0)
                {
                    var req = (RequestMessage)id.Dequeue();
                    requests.Add(req);
                    manager.PieceDataReceived(id, new PieceMessage(req.PieceIndex, req.StartOffset, req.RequestLength));
                }
            }
            var expectedRequests = rig.Torrent.PieceLength / Piece.BlockSize;

            Assert.AreEqual(expectedRequests * 2, requests.Count, "#1");
            Assert.IsTrue(requests.All(r => r.PieceIndex == 1 || r.PieceIndex == 2), "#2");
            for (int i = 0; i < expectedRequests; i++)
            {
                Assert.AreEqual(2, requests.Count(t => t.StartOffset == i * Piece.BlockSize && t.RequestLength == Piece.BlockSize), "#2." + i);
            }
        }