mirror of https://github.com/aria2/aria2
2007-12-10 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Fixed the bug: only first announce URL is tried in AnnounceTier, in stopped and completed event. * src/AnnounceList.{h, cc} * test/AnnounceListTest.cc * src/DefaultBtAnnounce.cc * test/DefaultBtAnnounceTest.cc Sorted URLs. * test/Metalink2RequestGroupTest.ccpull/1/head
parent
b1695a65c0
commit
b482568d59
12
ChangeLog
12
ChangeLog
|
@ -1,3 +1,15 @@
|
|||
2007-12-10 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
|
||||
|
||||
Fixed the bug: only first announce URL is tried in AnnounceTier,
|
||||
in stopped and completed event.
|
||||
* src/AnnounceList.{h, cc}
|
||||
* test/AnnounceListTest.cc
|
||||
* src/DefaultBtAnnounce.cc
|
||||
* test/DefaultBtAnnounceTest.cc
|
||||
|
||||
Sorted URLs.
|
||||
* test/Metalink2RequestGroupTest.cc
|
||||
|
||||
2007-12-09 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
|
||||
|
||||
Removed unnecessary string copy. Updated doc and corrected indentation.
|
||||
|
|
|
@ -237,3 +237,21 @@ void AnnounceList::resetTier()
|
|||
{
|
||||
resetIterator();
|
||||
}
|
||||
|
||||
bool AnnounceList::currentTierAcceptsStoppedEvent() const
|
||||
{
|
||||
if(currentTrackerInitialized) {
|
||||
return FindStoppedAllowedTier()(*currentTier);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
bool AnnounceList::currentTierAcceptsCompletedEvent() const
|
||||
{
|
||||
if(currentTrackerInitialized) {
|
||||
return FindCompletedAllowedTier()(*currentTier);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -119,6 +119,10 @@ public:
|
|||
bool allTiersFailed() const;
|
||||
|
||||
void resetTier();
|
||||
|
||||
bool currentTierAcceptsStoppedEvent() const;
|
||||
|
||||
bool currentTierAcceptsCompletedEvent() const;
|
||||
};
|
||||
|
||||
#endif // _D_ANNOUNCE_LIST_H_
|
||||
|
|
|
@ -100,10 +100,14 @@ bool DefaultBtAnnounce::isAnnounceReady() {
|
|||
|
||||
string DefaultBtAnnounce::getAnnounceUrl() {
|
||||
if(isStoppedAnnounceReady()) {
|
||||
announceList.moveToStoppedAllowedTier();
|
||||
if(!announceList.currentTierAcceptsStoppedEvent()) {
|
||||
announceList.moveToStoppedAllowedTier();
|
||||
}
|
||||
announceList.setEvent(AnnounceTier::STOPPED);
|
||||
} else if(isCompletedAnnounceReady()) {
|
||||
announceList.moveToCompletedAllowedTier();
|
||||
if(!announceList.currentTierAcceptsCompletedEvent()) {
|
||||
announceList.moveToCompletedAllowedTier();
|
||||
}
|
||||
announceList.setEvent(AnnounceTier::COMPLETED);
|
||||
} else if(isDefaultAnnounceReady()) {
|
||||
// If download completed before "started" event is sent to a tracker,
|
||||
|
|
|
@ -270,10 +270,13 @@ void AnnounceListTest::testMoveToStoppedAllowedTier() {
|
|||
|
||||
AnnounceList announceList(tiers);
|
||||
|
||||
CPPUNIT_ASSERT(!announceList.currentTierAcceptsStoppedEvent());
|
||||
CPPUNIT_ASSERT_EQUAL(string("tracker1"), announceList.getAnnounce());
|
||||
announceList.moveToStoppedAllowedTier();
|
||||
CPPUNIT_ASSERT(announceList.currentTierAcceptsStoppedEvent());
|
||||
CPPUNIT_ASSERT_EQUAL(string("tracker2"), announceList.getAnnounce());
|
||||
announceList.announceFailure();
|
||||
CPPUNIT_ASSERT(!announceList.currentTierAcceptsStoppedEvent());
|
||||
CPPUNIT_ASSERT_EQUAL(string("tracker3"), announceList.getAnnounce());
|
||||
// test wrapped search
|
||||
announceList.moveToStoppedAllowedTier();
|
||||
|
@ -293,10 +296,13 @@ void AnnounceListTest::testMoveToCompletedAllowedTier() {
|
|||
|
||||
AnnounceList announceList(tiers);
|
||||
|
||||
CPPUNIT_ASSERT(!announceList.currentTierAcceptsCompletedEvent());
|
||||
CPPUNIT_ASSERT_EQUAL(string("tracker1"), announceList.getAnnounce());
|
||||
announceList.moveToStoppedAllowedTier();
|
||||
CPPUNIT_ASSERT(announceList.currentTierAcceptsCompletedEvent());
|
||||
CPPUNIT_ASSERT_EQUAL(string("tracker2"), announceList.getAnnounce());
|
||||
announceList.announceFailure();
|
||||
CPPUNIT_ASSERT(!announceList.currentTierAcceptsCompletedEvent());
|
||||
CPPUNIT_ASSERT_EQUAL(string("tracker3"), announceList.getAnnounce());
|
||||
// test wrapped search
|
||||
announceList.moveToStoppedAllowedTier();
|
||||
|
|
|
@ -19,6 +19,8 @@ class DefaultBtAnnounceTest:public CppUnit::TestFixture {
|
|||
CPPUNIT_TEST(testGetAnnounceUrl);
|
||||
CPPUNIT_TEST(testNoMoreAnnounce);
|
||||
CPPUNIT_TEST(testIsAllAnnounceFailed);
|
||||
CPPUNIT_TEST(testURLOrderInStoppedEvent);
|
||||
CPPUNIT_TEST(testURLOrderInCompletedEvent);
|
||||
CPPUNIT_TEST_SUITE_END();
|
||||
private:
|
||||
MockBtContextHandle _btContext;
|
||||
|
@ -74,6 +76,8 @@ public:
|
|||
void testGetAnnounceUrl();
|
||||
void testNoMoreAnnounce();
|
||||
void testIsAllAnnounceFailed();
|
||||
void testURLOrderInStoppedEvent();
|
||||
void testURLOrderInCompletedEvent();
|
||||
};
|
||||
|
||||
|
||||
|
@ -211,3 +215,63 @@ void DefaultBtAnnounceTest::testIsAllAnnounceFailed()
|
|||
|
||||
CPPUNIT_ASSERT(!btAnnounce.isAllAnnounceFailed());
|
||||
}
|
||||
|
||||
void DefaultBtAnnounceTest::testURLOrderInStoppedEvent()
|
||||
{
|
||||
const char* urls[] = { "http://localhost1/announce",
|
||||
"http://localhost2/announce" };
|
||||
AnnounceTierHandle announceTier = new AnnounceTier(Strings(&urls[0], &urls[2]));
|
||||
|
||||
_btContext->addAnnounceTier(announceTier);
|
||||
|
||||
DefaultBtAnnounce btAnnounce(_btContext, _option);
|
||||
btAnnounce.setPieceStorage(_pieceStorage);
|
||||
btAnnounce.setPeerStorage(_peerStorage);
|
||||
btAnnounce.setBtRuntime(_btRuntime);
|
||||
btAnnounce.setRandomizer(new FixedNumberRandomizer());
|
||||
btAnnounce.generateKey();
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(string("http://localhost1/announce?info_hash=%01%23Eg%89%ab%cd%ef%01%23Eg%89%ab%cd%ef%01%23Eg&peer_id=%2daria2%2dultrafastdltl&uploaded=1572864&downloaded=1310720&left=1572864&compact=1&key=AAAAAAAA&numwant=50&no_peer_id=1&port=6989&event=started"), btAnnounce.getAnnounceUrl());
|
||||
|
||||
btAnnounce.announceSuccess();
|
||||
|
||||
_btRuntime->setHalt(true);
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(string("http://localhost1/announce?info_hash=%01%23Eg%89%ab%cd%ef%01%23Eg%89%ab%cd%ef%01%23Eg&peer_id=%2daria2%2dultrafastdltl&uploaded=1572864&downloaded=1310720&left=1572864&compact=1&key=AAAAAAAA&numwant=0&no_peer_id=1&port=6989&event=stopped"), btAnnounce.getAnnounceUrl());
|
||||
|
||||
btAnnounce.announceFailure();
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(string("http://localhost2/announce?info_hash=%01%23Eg%89%ab%cd%ef%01%23Eg%89%ab%cd%ef%01%23Eg&peer_id=%2daria2%2dultrafastdltl&uploaded=1572864&downloaded=1310720&left=1572864&compact=1&key=AAAAAAAA&numwant=0&no_peer_id=1&port=6989&event=stopped"), btAnnounce.getAnnounceUrl());
|
||||
|
||||
btAnnounce.announceSuccess();
|
||||
}
|
||||
|
||||
void DefaultBtAnnounceTest::testURLOrderInCompletedEvent()
|
||||
{
|
||||
const char* urls[] = { "http://localhost1/announce",
|
||||
"http://localhost2/announce" };
|
||||
AnnounceTierHandle announceTier = new AnnounceTier(Strings(&urls[0], &urls[2]));
|
||||
|
||||
_btContext->addAnnounceTier(announceTier);
|
||||
|
||||
DefaultBtAnnounce btAnnounce(_btContext, _option);
|
||||
btAnnounce.setPieceStorage(_pieceStorage);
|
||||
btAnnounce.setPeerStorage(_peerStorage);
|
||||
btAnnounce.setBtRuntime(_btRuntime);
|
||||
btAnnounce.setRandomizer(new FixedNumberRandomizer());
|
||||
btAnnounce.generateKey();
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(string("http://localhost1/announce?info_hash=%01%23Eg%89%ab%cd%ef%01%23Eg%89%ab%cd%ef%01%23Eg&peer_id=%2daria2%2dultrafastdltl&uploaded=1572864&downloaded=1310720&left=1572864&compact=1&key=AAAAAAAA&numwant=50&no_peer_id=1&port=6989&event=started"), btAnnounce.getAnnounceUrl());
|
||||
|
||||
btAnnounce.announceSuccess();
|
||||
|
||||
_pieceStorage->setAllDownloadFinished(true);
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(string("http://localhost1/announce?info_hash=%01%23Eg%89%ab%cd%ef%01%23Eg%89%ab%cd%ef%01%23Eg&peer_id=%2daria2%2dultrafastdltl&uploaded=1572864&downloaded=1310720&left=1572864&compact=1&key=AAAAAAAA&numwant=50&no_peer_id=1&port=6989&event=completed"), btAnnounce.getAnnounceUrl());
|
||||
|
||||
btAnnounce.announceFailure();
|
||||
|
||||
CPPUNIT_ASSERT_EQUAL(string("http://localhost2/announce?info_hash=%01%23Eg%89%ab%cd%ef%01%23Eg%89%ab%cd%ef%01%23Eg&peer_id=%2daria2%2dultrafastdltl&uploaded=1572864&downloaded=1310720&left=1572864&compact=1&key=AAAAAAAA&numwant=50&no_peer_id=1&port=6989&event=completed"), btAnnounce.getAnnounceUrl());
|
||||
|
||||
btAnnounce.announceSuccess();
|
||||
}
|
||||
|
|
|
@ -33,6 +33,7 @@ void Metalink2RequestGroupTest::testGenerate()
|
|||
{
|
||||
RequestGroupHandle rg = groups[0];
|
||||
Strings uris = rg->getUris();
|
||||
sort(uris.begin(), uris.end());
|
||||
CPPUNIT_ASSERT_EQUAL((size_t)2, uris.size());
|
||||
CPPUNIT_ASSERT_EQUAL(string("ftp://ftphost/aria2-0.5.2.tar.bz2"), uris[0]);
|
||||
CPPUNIT_ASSERT_EQUAL(string("http://httphost/aria2-0.5.2.tar.bz2"), uris[1]);
|
||||
|
|
Loading…
Reference in New Issue