From cece2bc896b941d0c9b9d441460b5d32989268bd Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Mon, 29 Jun 2009 16:43:41 +0000 Subject: 2009-06-30 Tatsuhiro Tsujikawa Removed ServerHost. Same functionality is implemented using FileEntry's in-flight Request objects. * src/AbstractCommand.cc * src/BtDependency.cc * src/CreateRequestCommand.cc * src/FileEntry.cc * src/FileEntry.h * src/FtpNegotiationCommand.cc * src/HttpResponseCommand.cc * src/Makefile.am * src/Metalink2RequestGroup.cc * src/RequestGroup.cc * src/RequestGroup.h * src/ServerHost.cc: Removed * src/ServerHost.h: Removed * test/BtDependencyTest.cc * test/FileEntryTest.cc * test/RequestGroupTest.cc --- test/FileEntryTest.cc | 65 ++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 57 insertions(+), 8 deletions(-) (limited to 'test/FileEntryTest.cc') diff --git a/test/FileEntryTest.cc b/test/FileEntryTest.cc index 475680fd..f60ae625 100644 --- a/test/FileEntryTest.cc +++ b/test/FileEntryTest.cc @@ -1,6 +1,9 @@ #include "FileEntry.h" + #include +#include "InOrderURISelector.h" + namespace aria2 { class FileEntryTest : public CppUnit::TestFixture { @@ -9,6 +12,8 @@ class FileEntryTest : public CppUnit::TestFixture { CPPUNIT_TEST(testSetupDir); CPPUNIT_TEST(testRemoveURIWhoseHostnameIs); CPPUNIT_TEST(testExtractURIResult); + CPPUNIT_TEST(testGetRequest); + CPPUNIT_TEST(testGetRequest_disableSingleHostMultiConnection); CPPUNIT_TEST_SUITE_END(); public: void setUp() {} @@ -16,11 +21,23 @@ public: void testSetupDir(); void testRemoveURIWhoseHostnameIs(); void testExtractURIResult(); + void testGetRequest(); + void testGetRequest_disableSingleHostMultiConnection(); }; CPPUNIT_TEST_SUITE_REGISTRATION( FileEntryTest ); +static SharedHandle createFileEntry() +{ + const char* uris[] = { "http://localhost/aria2.zip", + "ftp://localhost/aria2.zip", + "http://mirror/aria2.zip" }; + SharedHandle fileEntry(new FileEntry()); + fileEntry->setUris(std::deque(&uris[0], &uris[3])); + return fileEntry; +} + void FileEntryTest::testSetupDir() { std::string dir = "/tmp/aria2-FileEntryTest-testSetupDir"; @@ -40,15 +57,11 @@ void FileEntryTest::testSetupDir() void FileEntryTest::testRemoveURIWhoseHostnameIs() { - const char* uris[] = { "http://localhost/aria2.zip", - "ftp://localhost/aria2.zip", - "http://mirror/aria2.zip" }; - FileEntry fileEntry; - fileEntry.setUris(std::deque(&uris[0], &uris[3])); - fileEntry.removeURIWhoseHostnameIs("localhost"); - CPPUNIT_ASSERT_EQUAL((size_t)1, fileEntry.getRemainingUris().size()); + SharedHandle fileEntry = createFileEntry(); + fileEntry->removeURIWhoseHostnameIs("localhost"); + CPPUNIT_ASSERT_EQUAL((size_t)1, fileEntry->getRemainingUris().size()); CPPUNIT_ASSERT_EQUAL(std::string("http://mirror/aria2.zip"), - fileEntry.getRemainingUris()[0]); + fileEntry->getRemainingUris()[0]); } @@ -79,4 +92,40 @@ void FileEntryTest::testExtractURIResult() CPPUNIT_ASSERT_EQUAL((size_t)2, fileEntry.getURIResults().size()); } +void FileEntryTest::testGetRequest() +{ + SharedHandle fileEntry = createFileEntry(); + SharedHandle selector(new InOrderURISelector()); + SharedHandle req = fileEntry->getRequest(selector); + CPPUNIT_ASSERT_EQUAL(std::string("localhost"), req->getHost()); + CPPUNIT_ASSERT_EQUAL(std::string("http"), req->getProtocol()); + + fileEntry->poolRequest(req); + + SharedHandle req2nd = fileEntry->getRequest(selector); + CPPUNIT_ASSERT_EQUAL(std::string("localhost"), req2nd->getHost()); + CPPUNIT_ASSERT_EQUAL(std::string("http"), req2nd->getProtocol()); + + SharedHandle req3rd = fileEntry->getRequest(selector); + CPPUNIT_ASSERT_EQUAL(std::string("localhost"), req3rd->getHost()); + CPPUNIT_ASSERT_EQUAL(std::string("ftp"), req3rd->getProtocol()); +} + +void FileEntryTest::testGetRequest_disableSingleHostMultiConnection() +{ + SharedHandle fileEntry = createFileEntry(); + fileEntry->disableSingleHostMultiConnection(); + SharedHandle selector(new InOrderURISelector()); + SharedHandle req = fileEntry->getRequest(selector); + CPPUNIT_ASSERT_EQUAL(std::string("localhost"), req->getHost()); + CPPUNIT_ASSERT_EQUAL(std::string("http"), req->getProtocol()); + + SharedHandle req2nd = fileEntry->getRequest(selector); + CPPUNIT_ASSERT_EQUAL(std::string("mirror"), req2nd->getHost()); + CPPUNIT_ASSERT_EQUAL(std::string("http"), req2nd->getProtocol()); + + SharedHandle req3rd = fileEntry->getRequest(selector); + CPPUNIT_ASSERT(req3rd.isNull()); +} + } // namespace aria2 -- cgit