diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2013-07-05 21:08:24 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2013-07-06 15:56:08 +0900 |
| commit | f000fd0cab7860920b5269c018ea3eaae9f35e2e (patch) | |
| tree | 952cfc4756f3dfd4d9184875c2a0b55e170ad17b /test | |
| parent | e823fe8bb5efb018648934ed6e047a515b4018bb (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.cc | 80 | ||||
| -rw-r--r-- | test/MultiFileAllocationIteratorTest.cc | 110 |
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(); } |
