|
@@ -109,71 +109,87 @@ void FileEntryTest::testGetRequest()
|
|
|
{
|
|
|
SharedHandle<FileEntry> fileEntry = createFileEntry();
|
|
|
SharedHandle<InOrderURISelector> selector(new InOrderURISelector());
|
|
|
- SharedHandle<Request> req = fileEntry->getRequest(selector);
|
|
|
+ std::vector<std::pair<size_t, std::string> > usedHosts;
|
|
|
+ SharedHandle<Request> req =
|
|
|
+ fileEntry->getRequest(selector, true, usedHosts);
|
|
|
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);
|
|
|
+ SharedHandle<Request> req2nd =
|
|
|
+ fileEntry->getRequest(selector, true, usedHosts);
|
|
|
CPPUNIT_ASSERT_EQUAL(std::string("localhost"), req2nd->getHost());
|
|
|
CPPUNIT_ASSERT_EQUAL(std::string("http"), req2nd->getProtocol());
|
|
|
|
|
|
- SharedHandle<Request> req3rd = fileEntry->getRequest(selector);
|
|
|
+ SharedHandle<Request> req3rd =
|
|
|
+ fileEntry->getRequest(selector, true, usedHosts);
|
|
|
CPPUNIT_ASSERT_EQUAL(std::string("mirror"), req3rd->getHost());
|
|
|
CPPUNIT_ASSERT_EQUAL(std::string("http"), req3rd->getProtocol());
|
|
|
|
|
|
- SharedHandle<Request> req4th = fileEntry->getRequest(selector);
|
|
|
+ SharedHandle<Request> req4th =
|
|
|
+ fileEntry->getRequest(selector, true, usedHosts);
|
|
|
CPPUNIT_ASSERT(req4th.isNull());
|
|
|
|
|
|
fileEntry->setMaxConnectionPerServer(2);
|
|
|
|
|
|
- SharedHandle<Request> req5th = fileEntry->getRequest(selector);
|
|
|
+ SharedHandle<Request> req5th =
|
|
|
+ fileEntry->getRequest(selector, true, usedHosts);
|
|
|
CPPUNIT_ASSERT_EQUAL(std::string("localhost"), req5th->getHost());
|
|
|
CPPUNIT_ASSERT_EQUAL(std::string("ftp"), req5th->getProtocol());
|
|
|
|
|
|
- SharedHandle<Request> req6th = fileEntry->getRequest(selector);
|
|
|
+ SharedHandle<Request> req6th =
|
|
|
+ fileEntry->getRequest(selector, true, usedHosts);
|
|
|
CPPUNIT_ASSERT_EQUAL(std::string("mirror"), req6th->getHost());
|
|
|
CPPUNIT_ASSERT_EQUAL(std::string("http"), req6th->getProtocol());
|
|
|
|
|
|
- SharedHandle<Request> req7th = fileEntry->getRequest(selector);
|
|
|
+ SharedHandle<Request> req7th =
|
|
|
+ fileEntry->getRequest(selector, true, usedHosts);
|
|
|
CPPUNIT_ASSERT(req7th.isNull());
|
|
|
}
|
|
|
|
|
|
void FileEntryTest::testGetRequest_withoutUriReuse()
|
|
|
{
|
|
|
+ std::vector<std::pair<size_t, std::string> > usedHosts;
|
|
|
SharedHandle<FileEntry> fileEntry = createFileEntry();
|
|
|
fileEntry->setMaxConnectionPerServer(2);
|
|
|
SharedHandle<InOrderURISelector> selector(new InOrderURISelector());
|
|
|
- SharedHandle<Request> req = fileEntry->getRequest(selector, false);
|
|
|
+ SharedHandle<Request> req = fileEntry->getRequest(selector, false, usedHosts);
|
|
|
CPPUNIT_ASSERT_EQUAL(std::string("localhost"), req->getHost());
|
|
|
CPPUNIT_ASSERT_EQUAL(std::string("http"), req->getProtocol());
|
|
|
|
|
|
- SharedHandle<Request> req2nd = fileEntry->getRequest(selector, false);
|
|
|
+ SharedHandle<Request> req2nd =
|
|
|
+ fileEntry->getRequest(selector, false, usedHosts);
|
|
|
CPPUNIT_ASSERT_EQUAL(std::string("localhost"), req2nd->getHost());
|
|
|
CPPUNIT_ASSERT_EQUAL(std::string("ftp"), req2nd->getProtocol());
|
|
|
|
|
|
- SharedHandle<Request> req3rd = fileEntry->getRequest(selector, false);
|
|
|
+ SharedHandle<Request> req3rd =
|
|
|
+ fileEntry->getRequest(selector, false, usedHosts);
|
|
|
CPPUNIT_ASSERT_EQUAL(std::string("mirror"), req3rd->getHost());
|
|
|
CPPUNIT_ASSERT_EQUAL(std::string("http"), req3rd->getProtocol());
|
|
|
|
|
|
- SharedHandle<Request> req4th = fileEntry->getRequest(selector, false);
|
|
|
+ SharedHandle<Request> req4th =
|
|
|
+ fileEntry->getRequest(selector, false, usedHosts);
|
|
|
CPPUNIT_ASSERT(req4th.isNull());
|
|
|
}
|
|
|
|
|
|
void FileEntryTest::testGetRequest_withUniqueProtocol()
|
|
|
{
|
|
|
+ std::vector<std::pair<size_t, std::string> > usedHosts;
|
|
|
SharedHandle<FileEntry> fileEntry = createFileEntry();
|
|
|
fileEntry->setUniqueProtocol(true);
|
|
|
SharedHandle<InOrderURISelector> selector(new InOrderURISelector());
|
|
|
- SharedHandle<Request> req = fileEntry->getRequest(selector);
|
|
|
+ SharedHandle<Request> req =
|
|
|
+ fileEntry->getRequest(selector, true, usedHosts);
|
|
|
CPPUNIT_ASSERT_EQUAL(std::string("localhost"), req->getHost());
|
|
|
CPPUNIT_ASSERT_EQUAL(std::string("http"), req->getProtocol());
|
|
|
|
|
|
- SharedHandle<Request> req2nd = fileEntry->getRequest(selector);
|
|
|
+ SharedHandle<Request> req2nd =
|
|
|
+ fileEntry->getRequest(selector, true, usedHosts);
|
|
|
CPPUNIT_ASSERT_EQUAL(std::string("mirror"), req2nd->getHost());
|
|
|
CPPUNIT_ASSERT_EQUAL(std::string("http"), req2nd->getProtocol());
|
|
|
|
|
|
- SharedHandle<Request> req3rd = fileEntry->getRequest(selector);
|
|
|
+ SharedHandle<Request> req3rd =
|
|
|
+ fileEntry->getRequest(selector, true, usedHosts);
|
|
|
CPPUNIT_ASSERT(req3rd.isNull());
|
|
|
|
|
|
CPPUNIT_ASSERT_EQUAL((size_t)2, fileEntry->getRemainingUris().size());
|
|
@@ -189,8 +205,9 @@ void FileEntryTest::testReuseUri()
|
|
|
SharedHandle<FileEntry> fileEntry = createFileEntry();
|
|
|
fileEntry->setMaxConnectionPerServer(3);
|
|
|
size_t numUris = fileEntry->getRemainingUris().size();
|
|
|
+ std::vector<std::pair<size_t, std::string> > usedHosts;
|
|
|
for(size_t i = 0; i < numUris; ++i) {
|
|
|
- fileEntry->getRequest(selector, false);
|
|
|
+ fileEntry->getRequest(selector, false, usedHosts);
|
|
|
}
|
|
|
CPPUNIT_ASSERT_EQUAL((size_t)0, fileEntry->getRemainingUris().size());
|
|
|
fileEntry->addURIResult("http://localhost/aria2.zip",
|
|
@@ -202,7 +219,7 @@ void FileEntryTest::testReuseUri()
|
|
|
CPPUNIT_ASSERT_EQUAL(std::string("ftp://localhost/aria2.zip"), uris[0]);
|
|
|
CPPUNIT_ASSERT_EQUAL(std::string("http://mirror/aria2.zip"), uris[1]);
|
|
|
for(size_t i = 0; i < 2; ++i) {
|
|
|
- fileEntry->getRequest(selector, false);
|
|
|
+ fileEntry->getRequest(selector, false, usedHosts);
|
|
|
}
|
|
|
CPPUNIT_ASSERT_EQUAL((size_t)0, fileEntry->getRemainingUris().size());
|
|
|
ignore.clear();
|
|
@@ -243,6 +260,7 @@ void FileEntryTest::testInsertUri()
|
|
|
|
|
|
void FileEntryTest::testRemoveUri()
|
|
|
{
|
|
|
+ std::vector<std::pair<size_t, std::string> > usedHosts;
|
|
|
SharedHandle<InOrderURISelector> selector(new InOrderURISelector());
|
|
|
FileEntry file;
|
|
|
file.addUri("http://example.org/");
|
|
@@ -251,7 +269,8 @@ void FileEntryTest::testRemoveUri()
|
|
|
CPPUNIT_ASSERT(!file.removeUri("http://example.org/"));
|
|
|
|
|
|
file.addUri("http://example.org/");
|
|
|
- SharedHandle<Request> exampleOrgReq = file.getRequest(selector);
|
|
|
+ SharedHandle<Request> exampleOrgReq =
|
|
|
+ file.getRequest(selector, true, usedHosts);
|
|
|
CPPUNIT_ASSERT(!exampleOrgReq->removalRequested());
|
|
|
CPPUNIT_ASSERT_EQUAL((size_t)1, file.getSpentUris().size());
|
|
|
CPPUNIT_ASSERT(file.removeUri("http://example.org/"));
|
|
@@ -261,7 +280,7 @@ void FileEntryTest::testRemoveUri()
|
|
|
CPPUNIT_ASSERT_EQUAL((size_t)0, file.countPooledRequest());
|
|
|
|
|
|
file.addUri("http://example.org/");
|
|
|
- exampleOrgReq = file.getRequest(selector);
|
|
|
+ exampleOrgReq = file.getRequest(selector, true, usedHosts);
|
|
|
file.poolRequest(exampleOrgReq);
|
|
|
CPPUNIT_ASSERT_EQUAL((size_t)1, file.countPooledRequest());
|
|
|
CPPUNIT_ASSERT(file.removeUri("http://example.org/"));
|