diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-07-14 11:39:05 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2010-07-14 11:39:05 +0000 |
| commit | c99960aa330d9666682a9871b1194eaa38ab4dc7 (patch) | |
| tree | 49063e0a3c9cecf110c1c1c9837c28a0c9dc840c /test/FileEntryTest.cc | |
| parent | 8274432f14606d22b8c11aa55efa18c50ba20767 (diff) | |
2010-07-14 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Added --max-connection-per-server=NUM option. The default value of
NUM is 1. This option limits the number of connections allowed to
one server for each download. This means when NUM is 2 and 1 URI
is provided, even if you specified -s 5, aria2 establishes 2
connections. Default value of -j option is changed from 5 to 2.
* src/BtDependency.cc
* src/CreateRequestCommand.cc
* src/FileEntry.cc
* src/FileEntry.h
* src/FtpNegotiationCommand.cc
* src/HttpResponseCommand.cc
* src/Metalink2RequestGroup.cc
* src/OptionHandlerFactory.cc
* src/TrackerWatcherCommand.cc
* src/download_helper.cc
* src/prefs.cc
* src/prefs.h
* src/usage_text.h
* test/DownloadHelperTest.cc
* test/FileEntryTest.cc
Diffstat (limited to 'test/FileEntryTest.cc')
| -rw-r--r-- | test/FileEntryTest.cc | 80 |
1 files changed, 68 insertions, 12 deletions
diff --git a/test/FileEntryTest.cc b/test/FileEntryTest.cc index daf0a3ad..34aa863d 100644 --- a/test/FileEntryTest.cc +++ b/test/FileEntryTest.cc @@ -3,6 +3,7 @@ #include <cppunit/extensions/HelperMacros.h> #include "InOrderURISelector.h" +#include "util.h" namespace aria2 { @@ -13,7 +14,8 @@ class FileEntryTest : public CppUnit::TestFixture { CPPUNIT_TEST(testRemoveURIWhoseHostnameIs); CPPUNIT_TEST(testExtractURIResult); CPPUNIT_TEST(testGetRequest); - CPPUNIT_TEST(testGetRequest_disableSingleHostMultiConnection); + CPPUNIT_TEST(testGetRequest_withoutUriReuse); + CPPUNIT_TEST(testGetRequest_withUniqueProtocol); CPPUNIT_TEST(testReuseUri); CPPUNIT_TEST(testAddUri); CPPUNIT_TEST(testAddUris); @@ -27,7 +29,8 @@ public: void testRemoveURIWhoseHostnameIs(); void testExtractURIResult(); void testGetRequest(); - void testGetRequest_disableSingleHostMultiConnection(); + void testGetRequest_withoutUriReuse(); + void testGetRequest_withUniqueProtocol(); void testReuseUri(); void testAddUri(); void testAddUris(); @@ -109,7 +112,6 @@ void FileEntryTest::testGetRequest() SharedHandle<Request> req = fileEntry->getRequest(selector); CPPUNIT_ASSERT_EQUAL(std::string("localhost"), req->getHost()); CPPUNIT_ASSERT_EQUAL(std::string("http"), req->getProtocol()); - fileEntry->poolRequest(req); SharedHandle<Request> req2nd = fileEntry->getRequest(selector); @@ -117,14 +119,51 @@ void FileEntryTest::testGetRequest() CPPUNIT_ASSERT_EQUAL(std::string("http"), req2nd->getProtocol()); SharedHandle<Request> req3rd = fileEntry->getRequest(selector); - CPPUNIT_ASSERT_EQUAL(std::string("localhost"), req3rd->getHost()); - CPPUNIT_ASSERT_EQUAL(std::string("ftp"), req3rd->getProtocol()); + CPPUNIT_ASSERT_EQUAL(std::string("mirror"), req3rd->getHost()); + CPPUNIT_ASSERT_EQUAL(std::string("http"), req3rd->getProtocol()); + + SharedHandle<Request> req4th = fileEntry->getRequest(selector); + CPPUNIT_ASSERT(req4th.isNull()); + + fileEntry->setMaxConnectionPerServer(2); + + SharedHandle<Request> req5th = fileEntry->getRequest(selector); + CPPUNIT_ASSERT_EQUAL(std::string("localhost"), req5th->getHost()); + CPPUNIT_ASSERT_EQUAL(std::string("ftp"), req5th->getProtocol()); + + SharedHandle<Request> req6th = fileEntry->getRequest(selector); + CPPUNIT_ASSERT_EQUAL(std::string("mirror"), req6th->getHost()); + CPPUNIT_ASSERT_EQUAL(std::string("http"), req6th->getProtocol()); + + SharedHandle<Request> req7th = fileEntry->getRequest(selector); + CPPUNIT_ASSERT(req7th.isNull()); +} + +void FileEntryTest::testGetRequest_withoutUriReuse() +{ + SharedHandle<FileEntry> fileEntry = createFileEntry(); + fileEntry->setMaxConnectionPerServer(2); + SharedHandle<InOrderURISelector> selector(new InOrderURISelector()); + SharedHandle<Request> req = fileEntry->getRequest(selector, false); + CPPUNIT_ASSERT_EQUAL(std::string("localhost"), req->getHost()); + CPPUNIT_ASSERT_EQUAL(std::string("http"), req->getProtocol()); + + SharedHandle<Request> req2nd = fileEntry->getRequest(selector, false); + CPPUNIT_ASSERT_EQUAL(std::string("localhost"), req2nd->getHost()); + CPPUNIT_ASSERT_EQUAL(std::string("ftp"), req2nd->getProtocol()); + + SharedHandle<Request> req3rd = fileEntry->getRequest(selector, false); + CPPUNIT_ASSERT_EQUAL(std::string("mirror"), req3rd->getHost()); + CPPUNIT_ASSERT_EQUAL(std::string("http"), req3rd->getProtocol()); + + SharedHandle<Request> req4th = fileEntry->getRequest(selector, false); + CPPUNIT_ASSERT(req4th.isNull()); } -void FileEntryTest::testGetRequest_disableSingleHostMultiConnection() +void FileEntryTest::testGetRequest_withUniqueProtocol() { SharedHandle<FileEntry> fileEntry = createFileEntry(); - fileEntry->disableSingleHostMultiConnection(); + fileEntry->setUniqueProtocol(true); SharedHandle<InOrderURISelector> selector(new InOrderURISelector()); SharedHandle<Request> req = fileEntry->getRequest(selector); CPPUNIT_ASSERT_EQUAL(std::string("localhost"), req->getHost()); @@ -136,25 +175,42 @@ void FileEntryTest::testGetRequest_disableSingleHostMultiConnection() SharedHandle<Request> req3rd = fileEntry->getRequest(selector); CPPUNIT_ASSERT(req3rd.isNull()); + + CPPUNIT_ASSERT_EQUAL((size_t)2, fileEntry->getRemainingUris().size()); + CPPUNIT_ASSERT_EQUAL(std::string("ftp://localhost/aria2.zip"), + fileEntry->getRemainingUris()[0]); + CPPUNIT_ASSERT_EQUAL(std::string("http://mirror/aria2.zip"), + fileEntry->getRemainingUris()[1]); } void FileEntryTest::testReuseUri() { SharedHandle<InOrderURISelector> selector(new InOrderURISelector()); SharedHandle<FileEntry> fileEntry = createFileEntry(); + fileEntry->setMaxConnectionPerServer(3); size_t numUris = fileEntry->getRemainingUris().size(); for(size_t i = 0; i < numUris; ++i) { - fileEntry->getRequest(selector); + fileEntry->getRequest(selector, false); } CPPUNIT_ASSERT_EQUAL((size_t)0, fileEntry->getRemainingUris().size()); fileEntry->addURIResult("http://localhost/aria2.zip", downloadresultcode::UNKNOWN_ERROR); - fileEntry->reuseUri(3); - CPPUNIT_ASSERT_EQUAL((size_t)3, fileEntry->getRemainingUris().size()); - const std::deque<std::string>& uris = fileEntry->getRemainingUris(); + std::vector<std::string> ignore; + fileEntry->reuseUri(ignore); + CPPUNIT_ASSERT_EQUAL((size_t)2, fileEntry->getRemainingUris().size()); + std::deque<std::string> uris = fileEntry->getRemainingUris(); CPPUNIT_ASSERT_EQUAL(std::string("ftp://localhost/aria2.zip"), uris[0]); CPPUNIT_ASSERT_EQUAL(std::string("http://mirror/aria2.zip"), uris[1]); - CPPUNIT_ASSERT_EQUAL(std::string("ftp://localhost/aria2.zip"), uris[2]); + for(size_t i = 0; i < 2; ++i) { + fileEntry->getRequest(selector, false); + } + CPPUNIT_ASSERT_EQUAL((size_t)0, fileEntry->getRemainingUris().size()); + ignore.clear(); + ignore.push_back("mirror"); + fileEntry->reuseUri(ignore); + CPPUNIT_ASSERT_EQUAL((size_t)1, fileEntry->getRemainingUris().size()); + uris = fileEntry->getRemainingUris(); + CPPUNIT_ASSERT_EQUAL(std::string("ftp://localhost/aria2.zip"), uris[0]); } void FileEntryTest::testAddUri() |
