summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2016-07-10 22:42:49 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2016-07-10 22:42:49 +0900
commitbabdcb2c7d249b19ad38a07158e829f52a08e75a (patch)
tree7207be5d5f5762754fd601fbafe5c43ea479a0ec /test
parentf2aa7564b09f6c80d9975533401396f11a0e8439 (diff)
Change have entry indexing method
Now use increasing sequence of integer rather than timer value.
Diffstat (limited to 'test')
-rw-r--r--test/DefaultPieceStorageTest.cc56
-rw-r--r--test/MockPieceStorage.h14
2 files changed, 63 insertions, 7 deletions
diff --git a/test/DefaultPieceStorageTest.cc b/test/DefaultPieceStorageTest.cc
index 10162921..cbb3b4bf 100644
--- a/test/DefaultPieceStorageTest.cc
+++ b/test/DefaultPieceStorageTest.cc
@@ -39,6 +39,7 @@ class DefaultPieceStorageTest : public CppUnit::TestFixture {
CPPUNIT_TEST(testGetCompletedLength);
CPPUNIT_TEST(testGetFilteredCompletedLength);
CPPUNIT_TEST(testGetNextUsedIndex);
+ CPPUNIT_TEST(testAdvertisePiece);
CPPUNIT_TEST_SUITE_END();
private:
@@ -77,6 +78,7 @@ public:
void testGetCompletedLength();
void testGetFilteredCompletedLength();
void testGetNextUsedIndex();
+ void testAdvertisePiece();
};
CPPUNIT_TEST_SUITE_REGISTRATION(DefaultPieceStorageTest);
@@ -401,4 +403,58 @@ void DefaultPieceStorageTest::testGetNextUsedIndex()
CPPUNIT_ASSERT_EQUAL((size_t)2, pss.getNextUsedIndex(0));
}
+void DefaultPieceStorageTest::testAdvertisePiece()
+{
+ DefaultPieceStorage ps(dctx_, option_.get());
+
+ ps.advertisePiece(1, 100, Timer(10_s));
+ ps.advertisePiece(2, 101, Timer(11_s));
+ ps.advertisePiece(3, 102, Timer(11_s));
+ ps.advertisePiece(1, 103, Timer(12_s));
+ ps.advertisePiece(2, 104, Timer(100_s));
+
+ std::vector<size_t> res, ans;
+ uint64_t lastHaveIndex;
+
+ lastHaveIndex = ps.getAdvertisedPieceIndexes(res, 1, 0);
+ ans = std::vector<size_t>{100, 101, 102, 103, 104};
+
+ CPPUNIT_ASSERT_EQUAL((uint64_t)5, lastHaveIndex);
+ CPPUNIT_ASSERT(ans == res);
+
+ res.clear();
+ lastHaveIndex = ps.getAdvertisedPieceIndexes(res, 1, 3);
+ ans = std::vector<size_t>{103, 104};
+
+ CPPUNIT_ASSERT_EQUAL((uint64_t)5, lastHaveIndex);
+ CPPUNIT_ASSERT_EQUAL((size_t)2, res.size());
+ CPPUNIT_ASSERT(ans == res);
+
+ res.clear();
+ lastHaveIndex = ps.getAdvertisedPieceIndexes(res, 1, 5);
+
+ CPPUNIT_ASSERT_EQUAL((uint64_t)5, lastHaveIndex);
+ CPPUNIT_ASSERT_EQUAL((size_t)0, res.size());
+
+ // remove haves
+
+ ps.removeAdvertisedPiece(Timer(11_s));
+
+ res.clear();
+ lastHaveIndex = ps.getAdvertisedPieceIndexes(res, 1, 0);
+ ans = std::vector<size_t>{103, 104};
+
+ CPPUNIT_ASSERT_EQUAL((uint64_t)5, lastHaveIndex);
+ CPPUNIT_ASSERT_EQUAL((size_t)2, res.size());
+ CPPUNIT_ASSERT(ans == res);
+
+ ps.removeAdvertisedPiece(Timer(300_s));
+
+ res.clear();
+ lastHaveIndex = ps.getAdvertisedPieceIndexes(res, 1, 0);
+
+ CPPUNIT_ASSERT_EQUAL((uint64_t)0, lastHaveIndex);
+ CPPUNIT_ASSERT_EQUAL((size_t)0, res.size());
+}
+
} // namespace aria2
diff --git a/test/MockPieceStorage.h b/test/MockPieceStorage.h
index 9350e204..89297363 100644
--- a/test/MockPieceStorage.h
+++ b/test/MockPieceStorage.h
@@ -241,19 +241,19 @@ public:
void addPieceLengthList(int32_t length) { pieceLengthList.push_back(length); }
- virtual void advertisePiece(cuid_t cuid, size_t index) CXX11_OVERRIDE {}
-
- virtual void
- getAdvertisedPieceIndexes(std::vector<size_t>& indexes, cuid_t myCuid,
- const Timer& lastCheckTime) CXX11_OVERRIDE
+ virtual void advertisePiece(cuid_t cuid, size_t index,
+ Timer registeredTime) CXX11_OVERRIDE
{
}
- virtual void
- removeAdvertisedPiece(const std::chrono::seconds& elapsed) CXX11_OVERRIDE
+ virtual uint64_t
+ getAdvertisedPieceIndexes(std::vector<size_t>& indexes, cuid_t myCuid,
+ uint64_t lastHaveIndex) CXX11_OVERRIDE
{
}
+ virtual void removeAdvertisedPiece(const Timer& expiry) CXX11_OVERRIDE {}
+
virtual void markAllPiecesDone() CXX11_OVERRIDE {}
virtual void addInFlightPiece(