summaryrefslogtreecommitdiff
path: root/test/DefaultPieceStorageTest.cc
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-08-29 08:53:19 +0000
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2010-08-29 08:53:19 +0000
commite997903e5d29adb83d8dfa435ff05f3cc87d4ee7 (patch)
treeb3930396f8437b13519e924790bcbe599578b34f /test/DefaultPieceStorageTest.cc
parentb49081340dec7bd5b3370214b3dde0d570a52d10 (diff)
2010-08-29 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added a sets of overloaded functions for PieceStorage::getMissingPiece() and getMissingFastPiece() to get multiple pieces more efficiently. * src/DefaultBtInteractive.cc * src/DefaultPieceStorage.cc * src/DefaultPieceStorage.h * src/PieceStorage.h * src/UnknownLengthPieceStorage.cc * src/UnknownLengthPieceStorage.h * test/DefaultPieceStorageTest.cc * test/MockPieceStorage.h
Diffstat (limited to 'test/DefaultPieceStorageTest.cc')
-rw-r--r--test/DefaultPieceStorageTest.cc45
1 files changed, 43 insertions, 2 deletions
diff --git a/test/DefaultPieceStorageTest.cc b/test/DefaultPieceStorageTest.cc
index f97847d8..f173be87 100644
--- a/test/DefaultPieceStorageTest.cc
+++ b/test/DefaultPieceStorageTest.cc
@@ -12,6 +12,9 @@
#include "InOrderPieceSelector.h"
#include "DownloadContext.h"
#include "bittorrent_helper.h"
+#include "DiskAdaptor.h"
+#include "DiskWriterFactory.h"
+#include "PieceStatMan.h"
namespace aria2 {
@@ -20,7 +23,9 @@ class DefaultPieceStorageTest:public CppUnit::TestFixture {
CPPUNIT_TEST_SUITE(DefaultPieceStorageTest);
CPPUNIT_TEST(testGetTotalLength);
CPPUNIT_TEST(testGetMissingPiece);
+ CPPUNIT_TEST(testGetMissingPiece_many);
CPPUNIT_TEST(testGetMissingPiece_excludedIndexes);
+ CPPUNIT_TEST(testGetMissingPiece_manyWithExcludedIndexes);
CPPUNIT_TEST(testGetMissingFastPiece);
CPPUNIT_TEST(testGetMissingFastPiece_excludedIndexes);
CPPUNIT_TEST(testHasMissingPiece);
@@ -57,7 +62,9 @@ public:
void testGetTotalLength();
void testGetMissingPiece();
+ void testGetMissingPiece_many();
void testGetMissingPiece_excludedIndexes();
+ void testGetMissingPiece_manyWithExcludedIndexes();
void testGetMissingFastPiece();
void testGetMissingFastPiece_excludedIndexes();
void testHasMissingPiece();
@@ -83,8 +90,6 @@ void DefaultPieceStorageTest::testGetTotalLength() {
void DefaultPieceStorageTest::testGetMissingPiece() {
DefaultPieceStorage pss(dctx_, option);
pss.setPieceSelector(pieceSelector_);
- pss.setEndGamePieceNum(0);
-
peer->setAllBitfield();
SharedHandle<Piece> piece = pss.getMissingPiece(peer);
@@ -100,6 +105,24 @@ void DefaultPieceStorageTest::testGetMissingPiece() {
CPPUNIT_ASSERT(piece.isNull());
}
+void DefaultPieceStorageTest::testGetMissingPiece_many() {
+ DefaultPieceStorage pss(dctx_, option);
+ pss.setPieceSelector(pieceSelector_);
+ peer->setAllBitfield();
+ std::vector<SharedHandle<Piece> > pieces;
+ pss.getMissingPiece(pieces, 2, peer);
+ CPPUNIT_ASSERT_EQUAL((size_t)2, pieces.size());
+ CPPUNIT_ASSERT_EQUAL(std::string("piece: index=0, length=128"),
+ pieces[0]->toString());
+ CPPUNIT_ASSERT_EQUAL(std::string("piece: index=1, length=128"),
+ pieces[1]->toString());
+ pieces.clear();
+ pss.getMissingPiece(pieces, 2, peer);
+ CPPUNIT_ASSERT_EQUAL((size_t)1, pieces.size());
+ CPPUNIT_ASSERT_EQUAL(std::string("piece: index=2, length=128"),
+ pieces[0]->toString());
+}
+
void DefaultPieceStorageTest::testGetMissingPiece_excludedIndexes()
{
DefaultPieceStorage pss(dctx_, option);
@@ -123,6 +146,24 @@ void DefaultPieceStorageTest::testGetMissingPiece_excludedIndexes()
CPPUNIT_ASSERT(piece.isNull());
}
+void DefaultPieceStorageTest::testGetMissingPiece_manyWithExcludedIndexes() {
+ DefaultPieceStorage pss(dctx_, option);
+ pss.setPieceSelector(pieceSelector_);
+ peer->setAllBitfield();
+ std::vector<size_t> excludedIndexes;
+ excludedIndexes.push_back(1);
+ std::vector<SharedHandle<Piece> > pieces;
+ pss.getMissingPiece(pieces, 2, peer, excludedIndexes);
+ CPPUNIT_ASSERT_EQUAL((size_t)2, pieces.size());
+ CPPUNIT_ASSERT_EQUAL(std::string("piece: index=0, length=128"),
+ pieces[0]->toString());
+ CPPUNIT_ASSERT_EQUAL(std::string("piece: index=2, length=128"),
+ pieces[1]->toString());
+ pieces.clear();
+ pss.getMissingPiece(pieces, 2, peer, excludedIndexes);
+ CPPUNIT_ASSERT(pieces.empty());
+}
+
void DefaultPieceStorageTest::testGetMissingFastPiece() {
DefaultPieceStorage pss(dctx_, option);
pss.setPieceSelector(pieceSelector_);