introduced a non-rarest-first option to the piece picker that is used to pick the very first pieces in a torrent

This commit is contained in:
Arvid Norberg
2007-07-07 01:26:30 +00:00
parent 4d912eddf4
commit 82e1160214
5 changed files with 72 additions and 57 deletions

View File

@@ -95,21 +95,21 @@ int test_main()
std::vector<piece_block> picked;
picked.clear();
p.pick_pieces(peer1, picked, 1, false, 0, piece_picker::fast);
p.pick_pieces(peer1, picked, 1, false, 0, piece_picker::fast, true);
TEST_CHECK(picked.size() == 1);
TEST_CHECK(picked.front().piece_index == 2);
// now pick a piece from peer2. The block is supposed to be
// from piece 3, since it is the rarest piece that peer has.
picked.clear();
p.pick_pieces(peer2, picked, 1, false, 0, piece_picker::fast);
p.pick_pieces(peer2, picked, 1, false, 0, piece_picker::fast, true);
TEST_CHECK(picked.size() == 1);
TEST_CHECK(picked.front().piece_index == 3);
// same thing for peer3.
picked.clear();
p.pick_pieces(peer3, picked, 1, false, 0, piece_picker::fast);
p.pick_pieces(peer3, picked, 1, false, 0, piece_picker::fast, true);
TEST_CHECK(picked.size() == 1);
TEST_CHECK(picked.front().piece_index == 5);
@@ -119,7 +119,7 @@ int test_main()
p.inc_refcount(1);
picked.clear();
p.pick_pieces(peer3, picked, 1, false, 0, piece_picker::fast);
p.pick_pieces(peer3, picked, 1, false, 0, piece_picker::fast, true);
TEST_CHECK(picked.size() == 1);
TEST_CHECK(picked.front().piece_index == 1);
// and the block picked should not be 0 or 2
@@ -167,7 +167,7 @@ int test_main()
TEST_CHECK(!p.is_requested(piece_block(2, 1)));
picked.clear();
p.pick_pieces(peer1, picked, 1, false, 0, piece_picker::fast);
p.pick_pieces(peer1, picked, 1, false, 0, piece_picker::fast, true);
TEST_CHECK(picked.size() == 2);
piece_block expected3[] = { piece_block(2, 0), piece_block(2, 1) };
@@ -180,7 +180,7 @@ int test_main()
// partially selected)
picked.clear();
p.pick_pieces(peer1, picked, 1, true, 0, piece_picker::fast);
p.pick_pieces(peer1, picked, 1, true, 0, piece_picker::fast, true);
// it will pick 4 blocks, since we said we
// wanted whole pieces.
@@ -199,7 +199,7 @@ int test_main()
// to make sure it can still fall back on partial pieces
picked.clear();
p.pick_pieces(peer1, picked, 100, true, 0, piece_picker::fast);
p.pick_pieces(peer1, picked, 100, true, 0, piece_picker::fast, true);
TEST_CHECK(picked.size() == 12);
@@ -220,7 +220,7 @@ int test_main()
// to make sure it can still fall back on partial pieces
picked.clear();
p.pick_pieces(peer1, picked, 100, true, &peer_struct, piece_picker::fast);
p.pick_pieces(peer1, picked, 100, true, &peer_struct, piece_picker::fast, true);
TEST_CHECK(picked.size() == 11);