From d64c8e75f6c3b6895f51036e5d16ad696dfe0f66 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Mon, 4 Aug 2008 17:06:47 +0000 Subject: 2008-08-05 Tatsuhiro Tsujikawa Implemented download speed based URI selection algorithm. Introduced new option --uri-selector. If --uri-selector=feedback is given, aria2 uses download speed observed in the previous downloads and chooses fastest server in the URI list. Currently at most 10 URIs are considered to introduce randomeness for finding better servers. The speed is average download speed in the downloads. On the other hand, if --uri-selector=inorder is given, which is default, URI is tried in order in URI list. The usage text for the new option has not been written yet. * src/AbstractCommand.cc * src/DownloadCommand.cc * src/DownloadEngine.cc * src/DownloadEngineFactory.cc * src/InOrderURISelector.cc * src/InOrderURISelector.h * src/OptionHandlerFactory.cc * src/PeerStat.h * src/RequestGroup.cc * src/RequestGroup.h * src/RequestGroupMan.cc * src/RequestGroupMan.h * src/SegmentMan.cc * src/SegmentMan.h * src/ServerStat.cc * src/ServerStat.h * src/ServerStatMan.cc * src/ServerStatMan.h * src/ServerStatURISelector.cc * src/ServerStatURISelector.h * src/URISelector.h * src/option_processing.cc * src/prefs.cc * src/prefs.h * test/InOrderURISelectorTest.cc * test/RequestGroupManTest.cc * test/ServerStatManTest.cc * test/ServerStatURISelectorTest.cc --- test/ServerStatManTest.cc | 50 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 test/ServerStatManTest.cc (limited to 'test/ServerStatManTest.cc') diff --git a/test/ServerStatManTest.cc b/test/ServerStatManTest.cc new file mode 100644 index 00000000..df6cafa8 --- /dev/null +++ b/test/ServerStatManTest.cc @@ -0,0 +1,50 @@ +#include "ServerStatMan.h" +#include "ServerStat.h" +#include "Exception.h" +#include "Util.h" +#include +#include + +namespace aria2 { + +class ServerStatManTest:public CppUnit::TestFixture { + + CPPUNIT_TEST_SUITE(ServerStatManTest); + CPPUNIT_TEST(testAddAndFind); + CPPUNIT_TEST_SUITE_END(); +public: + void setUp() {} + + void tearDown() {} + + void testAddAndFind(); +}; + + +CPPUNIT_TEST_SUITE_REGISTRATION(ServerStatManTest); + +void ServerStatManTest::testAddAndFind() +{ + SharedHandle localhost_http(new ServerStat("localhost", "http")); + SharedHandle localhost_ftp(new ServerStat("localhost", "ftp")); + SharedHandle mirror(new ServerStat("mirror", "http")); + + ServerStatMan ssm; + CPPUNIT_ASSERT(ssm.add(localhost_http)); + CPPUNIT_ASSERT(!ssm.add(localhost_http)); + CPPUNIT_ASSERT(ssm.add(localhost_ftp)); + CPPUNIT_ASSERT(ssm.add(mirror)); + + { + SharedHandle r = ssm.find("localhost", "http"); + CPPUNIT_ASSERT(!r.isNull()); + CPPUNIT_ASSERT_EQUAL(std::string("localhost"), r->getHostname()); + CPPUNIT_ASSERT_EQUAL(std::string("http"), r->getProtocol()); + } + { + SharedHandle r = ssm.find("mirror", "ftp"); + CPPUNIT_ASSERT(r.isNull()); + } +} + +} // namespace aria2 -- cgit