summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2013-07-05 21:08:24 +0900
committerTatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>2013-07-06 15:56:08 +0900
commitf000fd0cab7860920b5269c018ea3eaae9f35e2e (patch)
tree952cfc4756f3dfd4d9184875c2a0b55e170ad17b /test
parente823fe8bb5efb018648934ed6e047a515b4018bb (diff)
MultiDiskAdaptor: Use std::unique_ptr for DiskWriterEntry and DiskWriter
MultiFileAllocationIterator is also rewritten so that it does not requre copying DiskWriterEntry objects.
Diffstat (limited to 'test')
-rw-r--r--test/MultiDiskAdaptorTest.cc80
-rw-r--r--test/MultiFileAllocationIteratorTest.cc110
2 files changed, 86 insertions, 104 deletions
diff --git a/test/MultiDiskAdaptorTest.cc b/test/MultiDiskAdaptorTest.cc
index a35f105d..001c9a54 100644
--- a/test/MultiDiskAdaptorTest.cc
+++ b/test/MultiDiskAdaptorTest.cc
@@ -28,10 +28,10 @@ class MultiDiskAdaptorTest:public CppUnit::TestFixture {
CPPUNIT_TEST(testWriteCache);
CPPUNIT_TEST_SUITE_END();
private:
- std::shared_ptr<MultiDiskAdaptor> adaptor;
+ std::unique_ptr<MultiDiskAdaptor> adaptor;
public:
void setUp() {
- adaptor.reset(new MultiDiskAdaptor());
+ adaptor = make_unique<MultiDiskAdaptor>();
adaptor->setPieceLength(2);
}
@@ -81,13 +81,12 @@ std::vector<std::shared_ptr<FileEntry> > createEntries()
void MultiDiskAdaptorTest::testResetDiskWriterEntries()
{
{
- std::vector<std::shared_ptr<FileEntry> > fileEntries = createEntries();
+ auto fileEntries = createEntries();
adaptor->setFileEntries(fileEntries.begin(), fileEntries.end());
// In openFile(), resetDiskWriterEntries() are called.
adaptor->openFile();
- std::vector<std::shared_ptr<DiskWriterEntry> > entries =
- adaptor->getDiskWriterEntries();
+ auto& entries = adaptor->getDiskWriterEntries();
CPPUNIT_ASSERT(entries[0]->getDiskWriter());
CPPUNIT_ASSERT(entries[1]->getDiskWriter());
CPPUNIT_ASSERT(entries[2]->getDiskWriter());
@@ -98,14 +97,13 @@ void MultiDiskAdaptorTest::testResetDiskWriterEntries()
adaptor->closeFile();
}
{
- std::vector<std::shared_ptr<FileEntry> > fileEntries = createEntries();
+ auto fileEntries = createEntries();
fileEntries[0]->setRequested(false);
adaptor->setFileEntries(fileEntries.begin(), fileEntries.end());
// In openFile(), resetDiskWriterEntries() are called.
adaptor->openFile();
- std::vector<std::shared_ptr<DiskWriterEntry> > entries =
- adaptor->getDiskWriterEntries();
+ auto& entries = adaptor->getDiskWriterEntries();
// Because entries[1] spans entries[0]
CPPUNIT_ASSERT(entries[0]->getDiskWriter());
CPPUNIT_ASSERT(entries[1]->getDiskWriter());
@@ -117,15 +115,14 @@ void MultiDiskAdaptorTest::testResetDiskWriterEntries()
adaptor->closeFile();
}
{
- std::vector<std::shared_ptr<FileEntry> > fileEntries = createEntries();
+ auto fileEntries = createEntries();
fileEntries[0]->setRequested(false);
fileEntries[1]->setRequested(false);
adaptor->setFileEntries(fileEntries.begin(), fileEntries.end());
// In openFile(), resetDiskWriterEntries() are called.
adaptor->openFile();
- std::vector<std::shared_ptr<DiskWriterEntry> > entries =
- adaptor->getDiskWriterEntries();
+ auto& entries = adaptor->getDiskWriterEntries();
CPPUNIT_ASSERT(!entries[0]->getDiskWriter());
// Because entries[2] spans entries[1]
CPPUNIT_ASSERT(entries[1]->getDiskWriter());
@@ -138,14 +135,13 @@ void MultiDiskAdaptorTest::testResetDiskWriterEntries()
adaptor->closeFile();
}
{
- std::vector<std::shared_ptr<FileEntry> > fileEntries = createEntries();
+ auto fileEntries = createEntries();
fileEntries[3]->setRequested(false);
adaptor->setFileEntries(fileEntries.begin(), fileEntries.end());
// In openFile(), resetDiskWriterEntries() are called.
adaptor->openFile();
- std::vector<std::shared_ptr<DiskWriterEntry> > entries =
- adaptor->getDiskWriterEntries();
+ auto& entries = adaptor->getDiskWriterEntries();
CPPUNIT_ASSERT(entries[0]->getDiskWriter());
CPPUNIT_ASSERT(entries[1]->getDiskWriter());
CPPUNIT_ASSERT(entries[2]->getDiskWriter());
@@ -158,14 +154,13 @@ void MultiDiskAdaptorTest::testResetDiskWriterEntries()
adaptor->closeFile();
}
{
- std::vector<std::shared_ptr<FileEntry> > fileEntries = createEntries();
+ auto fileEntries = createEntries();
fileEntries[4]->setRequested(false);
adaptor->setFileEntries(fileEntries.begin(), fileEntries.end());
// In openFile(), resetDiskWriterEntries() are called.
adaptor->openFile();
- std::vector<std::shared_ptr<DiskWriterEntry> > entries =
- adaptor->getDiskWriterEntries();
+ auto& entries = adaptor->getDiskWriterEntries();
CPPUNIT_ASSERT(entries[0]->getDiskWriter());
CPPUNIT_ASSERT(entries[1]->getDiskWriter());
CPPUNIT_ASSERT(entries[2]->getDiskWriter());
@@ -177,15 +172,14 @@ void MultiDiskAdaptorTest::testResetDiskWriterEntries()
adaptor->closeFile();
}
{
- std::vector<std::shared_ptr<FileEntry> > fileEntries = createEntries();
+ auto fileEntries = createEntries();
fileEntries[3]->setRequested(false);
fileEntries[4]->setRequested(false);
adaptor->setFileEntries(fileEntries.begin(), fileEntries.end());
// In openFile(), resetDiskWriterEntries() are called.
adaptor->openFile();
- std::vector<std::shared_ptr<DiskWriterEntry> > entries =
- adaptor->getDiskWriterEntries();
+ auto& entries = adaptor->getDiskWriterEntries();
CPPUNIT_ASSERT(entries[0]->getDiskWriter());
CPPUNIT_ASSERT(entries[1]->getDiskWriter());
CPPUNIT_ASSERT(entries[2]->getDiskWriter());
@@ -196,7 +190,7 @@ void MultiDiskAdaptorTest::testResetDiskWriterEntries()
adaptor->closeFile();
}
{
- std::vector<std::shared_ptr<FileEntry> > fileEntries = createEntries();
+ auto fileEntries = createEntries();
for(size_t i = 5; i < 9; ++i) {
fileEntries[i]->setRequested(false);
}
@@ -204,8 +198,7 @@ void MultiDiskAdaptorTest::testResetDiskWriterEntries()
// In openFile(), resetDiskWriterEntries() are called.
adaptor->openFile();
- std::vector<std::shared_ptr<DiskWriterEntry> > entries =
- adaptor->getDiskWriterEntries();
+ auto& entries = adaptor->getDiskWriterEntries();
CPPUNIT_ASSERT(entries[0]->getDiskWriter());
CPPUNIT_ASSERT(entries[1]->getDiskWriter());
CPPUNIT_ASSERT(entries[2]->getDiskWriter());
@@ -216,14 +209,13 @@ void MultiDiskAdaptorTest::testResetDiskWriterEntries()
adaptor->closeFile();
}
{
- std::vector<std::shared_ptr<FileEntry> > fileEntries = createEntries();
+ auto fileEntries = createEntries();
for(size_t i = 1; i < 9; ++i) {
fileEntries[i]->setRequested(false);
}
adaptor->setFileEntries(fileEntries.begin(), fileEntries.end());
adaptor->openFile();
- std::vector<std::shared_ptr<DiskWriterEntry> > entries =
- adaptor->getDiskWriterEntries();
+ auto& entries = adaptor->getDiskWriterEntries();
CPPUNIT_ASSERT(entries[0]->getDiskWriter());
CPPUNIT_ASSERT(!entries[1]->getDiskWriter());
CPPUNIT_ASSERT(!entries[2]->getDiskWriter());
@@ -234,14 +226,13 @@ void MultiDiskAdaptorTest::testResetDiskWriterEntries()
adaptor->closeFile();
}
{
- std::vector<std::shared_ptr<FileEntry> > fileEntries = createEntries();
+ auto fileEntries = createEntries();
for(size_t i = 2; i < 9; ++i) {
fileEntries[i]->setRequested(false);
}
adaptor->setFileEntries(fileEntries.begin(), fileEntries.end());
adaptor->openFile();
- std::vector<std::shared_ptr<DiskWriterEntry> > entries =
- adaptor->getDiskWriterEntries();
+ auto& entries = adaptor->getDiskWriterEntries();
CPPUNIT_ASSERT(entries[0]->getDiskWriter());
CPPUNIT_ASSERT(entries[1]->getDiskWriter());
// entries[1] spans entries[2]
@@ -254,15 +245,14 @@ void MultiDiskAdaptorTest::testResetDiskWriterEntries()
adaptor->closeFile();
}
{
- std::vector<std::shared_ptr<FileEntry> > fileEntries = createEntries();
+ auto fileEntries = createEntries();
for(size_t i = 0; i < 6; ++i) {
fileEntries[i]->setRequested(false);
}
fileEntries[8]->setRequested(false);
adaptor->setFileEntries(fileEntries.begin(), fileEntries.end());
adaptor->openFile();
- std::vector<std::shared_ptr<DiskWriterEntry> > entries =
- adaptor->getDiskWriterEntries();
+ auto& entries = adaptor->getDiskWriterEntries();
CPPUNIT_ASSERT(!entries[0]->getDiskWriter());
CPPUNIT_ASSERT(!entries[1]->getDiskWriter());
CPPUNIT_ASSERT(!entries[2]->getDiskWriter());
@@ -291,8 +281,8 @@ void readFile(const std::string& filename, char* buf, int bufLength) {
}
void MultiDiskAdaptorTest::testWriteData() {
- std::vector<std::shared_ptr<FileEntry> > fileEntries(createEntries());
- adaptor->setFileEntries(fileEntries.begin(), fileEntries.end());
+ auto fileEntries = createEntries();
+ adaptor->setFileEntries(std::begin(fileEntries), std::end(fileEntries));
adaptor->openFile();
std::string msg = "12345";
@@ -340,13 +330,13 @@ void MultiDiskAdaptorTest::testWriteData() {
void MultiDiskAdaptorTest::testReadData()
{
- std::vector<std::shared_ptr<FileEntry>> entries {
+ auto entries = std::vector<std::shared_ptr<FileEntry>>{
std::make_shared<FileEntry>(A2_TEST_DIR "/file1r.txt", 15, 0),
std::make_shared<FileEntry>(A2_TEST_DIR "/file2r.txt", 7, 15),
std::make_shared<FileEntry>(A2_TEST_DIR "/file3r.txt", 3, 22)
};
- adaptor->setFileEntries(entries.begin(), entries.end());
+ adaptor->setFileEntries(std::begin(entries), std::end(entries));
adaptor->enableReadOnly();
adaptor->openFile();
unsigned char buf[128];
@@ -369,7 +359,7 @@ void MultiDiskAdaptorTest::testCutTrailingGarbage()
{
std::string dir = A2_TEST_OUT_DIR;
std::string prefix = "aria2_MultiDiskAdaptorTest_testCutTrailingGarbage_";
- std::vector<std::shared_ptr<FileEntry> > fileEntries {
+ auto fileEntries = std::vector<std::shared_ptr<FileEntry>>{
std::make_shared<FileEntry>(dir+"/"+prefix+"1", 256, 0),
std::make_shared<FileEntry>(dir+"/"+prefix+"2", 512, 256)
};
@@ -378,7 +368,7 @@ void MultiDiskAdaptorTest::testCutTrailingGarbage()
}
MultiDiskAdaptor adaptor;
- adaptor.setFileEntries(fileEntries.begin(), fileEntries.end());
+ adaptor.setFileEntries(std::begin(fileEntries), std::end(fileEntries));
adaptor.setMaxOpenFiles(1);
adaptor.setPieceLength(1);
@@ -396,7 +386,7 @@ void MultiDiskAdaptorTest::testSize()
{
std::string dir = A2_TEST_OUT_DIR;
std::string prefix = "aria2_MultiDiskAdaptorTest_testSize_";
- std::vector<std::shared_ptr<FileEntry>> fileEntries {
+ auto fileEntries = std::vector<std::shared_ptr<FileEntry>>{
std::make_shared<FileEntry>(dir+"/"+prefix+"1", 1, 0),
std::make_shared<FileEntry>(dir+"/"+prefix+"2", 1, 1)
};
@@ -405,7 +395,7 @@ void MultiDiskAdaptorTest::testSize()
}
MultiDiskAdaptor adaptor;
- adaptor.setFileEntries(fileEntries.begin(), fileEntries.end());
+ adaptor.setFileEntries(std::begin(fileEntries), std::end(fileEntries));
adaptor.setMaxOpenFiles(1);
adaptor.setPieceLength(1);
@@ -417,7 +407,7 @@ void MultiDiskAdaptorTest::testSize()
void MultiDiskAdaptorTest::testUtime()
{
std::string storeDir = A2_TEST_OUT_DIR"/aria2_MultiDiskAdaptorTest_testUtime";
- std::vector<std::shared_ptr<FileEntry> > entries {
+ auto entries = std::vector<std::shared_ptr<FileEntry>>{
std::make_shared<FileEntry>(storeDir+"/requested", 0, 0),
std::make_shared<FileEntry>(storeDir+"/notFound", 0, 0),
std::make_shared<FileEntry>(storeDir+"/notRequested", 0, 0),
@@ -432,7 +422,7 @@ void MultiDiskAdaptorTest::testUtime()
entries[2]->setRequested(false);
MultiDiskAdaptor adaptor;
- adaptor.setFileEntries(entries.begin(), entries.end());
+ adaptor.setFileEntries(std::begin(entries), std::end(entries));
time_t atime = (time_t) 100000;
time_t mtime = (time_t) 200000;
@@ -453,16 +443,16 @@ void MultiDiskAdaptorTest::testWriteCache()
{
std::string storeDir =
A2_TEST_OUT_DIR"/aria2_MultiDiskAdaptorTest_testWriteCache";
- std::vector<std::shared_ptr<FileEntry>> entries {
+ auto entries = std::vector<std::shared_ptr<FileEntry>>{
std::make_shared<FileEntry>(storeDir+"/file1", 16385, 0),
std::make_shared<FileEntry>(storeDir+"/file2", 4098, 16385)
};
for(const auto& i : entries) {
File(i->getPath()).remove();
}
- std::shared_ptr<MultiDiskAdaptor> adaptor(new MultiDiskAdaptor());
+ auto adaptor = std::make_shared<MultiDiskAdaptor>();
adaptor->setFileEntries(std::begin(entries), std::end(entries));
- WrDiskCacheEntry cache(adaptor);
+ WrDiskCacheEntry cache{adaptor};
std::string data1(16383, '1'), data2(100, '2'), data3(4000, '3');
cache.cacheData(createDataCell(0, data1.c_str()));
cache.cacheData(createDataCell(data1.size(), data2.c_str()));
diff --git a/test/MultiFileAllocationIteratorTest.cc b/test/MultiFileAllocationIteratorTest.cc
index e061fab5..c1507ede 100644
--- a/test/MultiFileAllocationIteratorTest.cc
+++ b/test/MultiFileAllocationIteratorTest.cc
@@ -38,18 +38,18 @@ void MultiFileAllocationIteratorTest::testMakeDiskWriterEntries()
std::string storeDir = A2_TEST_OUT_DIR"/aria2_MultiFileAllocationIteratorTest"
"_testMakeDiskWriterEntries";
- std::shared_ptr<FileEntry> fs[] = {
- std::shared_ptr<FileEntry>(new FileEntry(storeDir+"/file1", 1536, 0)),
- std::shared_ptr<FileEntry>(new FileEntry(storeDir+"/file2", 2048, 1536)),// req no
- std::shared_ptr<FileEntry>(new FileEntry(storeDir+"/file3", 1024, 3584)),
- std::shared_ptr<FileEntry>(new FileEntry(storeDir+"/file4", 1024, 4608)),// req no
- std::shared_ptr<FileEntry>(new FileEntry(storeDir+"/file5", 1024, 5632)),// req no
- std::shared_ptr<FileEntry>(new FileEntry(storeDir+"/file6", 1024, 6656)),// req no
- std::shared_ptr<FileEntry>(new FileEntry(storeDir+"/file7", 256, 7680)),// req no
- std::shared_ptr<FileEntry>(new FileEntry(storeDir+"/file8", 255, 7936)),
- std::shared_ptr<FileEntry>(new FileEntry(storeDir+"/file9", 1025, 8191)),// req no
- std::shared_ptr<FileEntry>(new FileEntry(storeDir+"/fileA", 1024, 9216)),// req no
- std::shared_ptr<FileEntry>(new FileEntry(storeDir+"/fileB", 1024, 10240)),
+ auto fs = std::vector<std::shared_ptr<FileEntry>>{
+ std::make_shared<FileEntry>(storeDir+"/file1", 1536, 0),
+ std::make_shared<FileEntry>(storeDir+"/file2", 2048, 1536),// req no
+ std::make_shared<FileEntry>(storeDir+"/file3", 1024, 3584),
+ std::make_shared<FileEntry>(storeDir+"/file4", 1024, 4608),// req no
+ std::make_shared<FileEntry>(storeDir+"/file5", 1024, 5632),// req no
+ std::make_shared<FileEntry>(storeDir+"/file6", 1024, 6656),// req no
+ std::make_shared<FileEntry>(storeDir+"/file7", 256, 7680),// req no
+ std::make_shared<FileEntry>(storeDir+"/file8", 255, 7936),
+ std::make_shared<FileEntry>(storeDir+"/file9", 1025, 8191),// req no
+ std::make_shared<FileEntry>(storeDir+"/fileA", 1024, 9216),// req no
+ std::make_shared<FileEntry>(storeDir+"/fileB", 1024, 10240)
};
fs[1]->setRequested(false); // file2
fs[3]->setRequested(false); // file4
@@ -59,21 +59,22 @@ void MultiFileAllocationIteratorTest::testMakeDiskWriterEntries()
fs[8]->setRequested(false); // file9
fs[9]->setRequested(false); // fileA
+ for(auto& fe : fs) {
+ File{fe->getPath()}.remove();
+ }
// create empty file4
createFile(storeDir+std::string("/file4"), 0);
- std::shared_ptr<MultiDiskAdaptor> diskAdaptor(new MultiDiskAdaptor());
- diskAdaptor->setFileEntries(std::begin(fs), std::end(fs));
- diskAdaptor->setPieceLength(1024);
- diskAdaptor->openFile();
-
- auto itr = std::dynamic_pointer_cast<MultiFileAllocationIterator>
- (diskAdaptor->fileAllocationIterator());
+ MultiDiskAdaptor diskAdaptor;
+ diskAdaptor.setFileEntries(std::begin(fs), std::end(fs));
+ diskAdaptor.setPieceLength(1024);
+ diskAdaptor.openFile();
- const std::deque<std::shared_ptr<DiskWriterEntry> >& entries =
- itr->getDiskWriterEntries();
+ auto allocitr = diskAdaptor.fileAllocationIterator();
+ auto itr = dynamic_cast<MultiFileAllocationIterator*>(allocitr.get());
+ auto& entries = itr->getDiskWriterEntries();
CPPUNIT_ASSERT_EQUAL((size_t)11, entries.size());
// file1
@@ -152,58 +153,49 @@ void MultiFileAllocationIteratorTest::testAllocate()
int64_t length6 = 30;
try {
- std::shared_ptr<MultiDiskAdaptor> diskAdaptor(new MultiDiskAdaptor());
- diskAdaptor->setPieceLength(1);
+ MultiDiskAdaptor diskAdaptor;
+ diskAdaptor.setPieceLength(1);
int64_t offset = 0;
- std::shared_ptr<FileEntry> fileEntry1(new FileEntry(storeDir+"/"+fname1,
- length1,
- offset));
+ auto fileEntry1 = std::make_shared<FileEntry>(storeDir+"/"+fname1,
+ length1, offset);
offset += length1;
- std::shared_ptr<FileEntry> fileEntry2(new FileEntry(storeDir+"/"+fname2,
- length2,
- offset));
-
+ auto fileEntry2 = std::make_shared<FileEntry>(storeDir+"/"+fname2,
+ length2, offset);
offset += length2;
- std::shared_ptr<FileEntry> fileEntry3(new FileEntry(storeDir+"/"+fname3,
- length3,
- offset));
+ auto fileEntry3 = std::make_shared<FileEntry>(storeDir+"/"+fname3,
+ length3, offset);
offset += length3;
- std::shared_ptr<FileEntry> fileEntry4(new FileEntry(storeDir+"/"+fname4,
- length4,
- offset));
+ auto fileEntry4 = std::make_shared<FileEntry>(storeDir+"/"+fname4,
+ length4, offset);
fileEntry4->setRequested(false);
-
offset += length4;
- std::shared_ptr<FileEntry> fileEntry5(new FileEntry(storeDir+"/"+fname5,
- length5,
- offset));
-
+ auto fileEntry5 = std::make_shared<FileEntry>(storeDir+"/"+fname5,
+ length5, offset);
offset += length5;
- std::shared_ptr<FileEntry> fileEntry6(new FileEntry(storeDir+"/"+fname6,
- length6,
- offset));
+ auto fileEntry6 = std::make_shared<FileEntry>(storeDir+"/"+fname6,
+ length6, offset);
fileEntry6->setRequested(false);
- std::vector<std::shared_ptr<FileEntry> > fs;
- fs.push_back(fileEntry1);
- fs.push_back(fileEntry2);
- fs.push_back(fileEntry3);
- fs.push_back(fileEntry4);
- fs.push_back(fileEntry5);
- fs.push_back(fileEntry6);
- diskAdaptor->setFileEntries(fs.begin(), fs.end());
-
- for(std::vector<std::shared_ptr<FileEntry> >::const_iterator i = fs.begin();
- i != fs.end(); ++i) {
- File((*i)->getPath()).remove();
+ auto fs = std::vector<std::shared_ptr<FileEntry>>{
+ fileEntry1,
+ fileEntry2,
+ fileEntry3,
+ fileEntry4,
+ fileEntry5,
+ fileEntry6
+ };
+ diskAdaptor.setFileEntries(std::begin(fs), std::end(fs));
+
+ for(auto& fe : fs) {
+ File{fe->getPath()}.remove();
}
// we have to open file first.
- diskAdaptor->initAndOpenFile();
- auto itr = std::dynamic_pointer_cast<MultiFileAllocationIterator>
- (diskAdaptor->fileAllocationIterator());
+ diskAdaptor.initAndOpenFile();
+ auto allocitr = diskAdaptor.fileAllocationIterator();
+ auto itr = dynamic_cast<MultiFileAllocationIterator*>(allocitr.get());
while(!itr->finished()) {
itr->allocateChunk();
}