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"); }
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"); }
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"); }
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); } }