diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2016-07-10 22:42:49 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2016-07-10 22:42:49 +0900 |
| commit | babdcb2c7d249b19ad38a07158e829f52a08e75a (patch) | |
| tree | 7207be5d5f5762754fd601fbafe5c43ea479a0ec /test | |
| parent | f2aa7564b09f6c80d9975533401396f11a0e8439 (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.cc | 56 | ||||
| -rw-r--r-- | test/MockPieceStorage.h | 14 |
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( |
