diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2007-11-28 14:22:28 +0000 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2007-11-28 14:22:28 +0000 |
| commit | 5a2f398eca68b2b0330ddcec2b222bf76875f82f (patch) | |
| tree | eb916885f04126e7e48b56fe02de6b44f0493c17 /test/SingleFileAllocationIteratorTest.cc | |
| parent | a022a1826bb573028f264bc6edbc564c0d488bbc (diff) | |
2007-11-28 Tatsuhiro Tsujikawa <tujikawa at rednoah dot com>
Added direct I/O support. The current implementation uses O_DIRECT,
which is not posix standard and is tested on linux 2.6.21.
Currently only file allocation uses direct I/O.
* src/SingleFileAllocationIterator.{h, cc}
* test/SingleFileAllocationIteratorTest.cc
* src/MultiFileAllocationIterator.{h, cc}
* test/MultiFileAllocationIteratorTest.cc
* src/BinaryStream.h
* src/DiskWriter.h
* src/AbstractDiskWriter.{h, cc}
* src/ByteArrayDiskWriter.h
* src/DiskAdaptor.h
* src/AbstractSingleDiskAdaptor.{h, cc}
* src/MultiDiskAdaptor.{h, cc}
* src/FileAllocationEntry.cc
* src/Util.{h, cc}
* src/OptionHandlerFactory.cc
* src/prefs.h
* src/version_usage.cc
* src/option_processing.cc
Moved FileAllocationMan::markCurrentFileAllocationEntryDone() to
handleException.
* src/MultiFileAllocationIterator.cc
Added EINTR handling
* src/SocketCore.cc
Diffstat (limited to 'test/SingleFileAllocationIteratorTest.cc')
| -rw-r--r-- | test/SingleFileAllocationIteratorTest.cc | 33 |
1 files changed, 9 insertions, 24 deletions
diff --git a/test/SingleFileAllocationIteratorTest.cc b/test/SingleFileAllocationIteratorTest.cc index 050d0a19..4cdb7d39 100644 --- a/test/SingleFileAllocationIteratorTest.cc +++ b/test/SingleFileAllocationIteratorTest.cc @@ -1,7 +1,6 @@ #include "SingleFileAllocationIterator.h" #include "File.h" #include "DefaultDiskWriter.h" -#include "DirectDiskAdaptor.h" #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> @@ -31,38 +30,24 @@ void SingleFileAllocationIteratorTest::testAllocate() string fname = "aria2_SingleFileAllocationIteratorTest_testAllocate"; string fn = dir+"/"+fname; ofstream of(fn.c_str()); - of << "0123456789"; - of.close(); File x(fn); CPPUNIT_ASSERT_EQUAL((int64_t)10, x.size()); - - DefaultDiskWriterHandle writer = new DefaultDiskWriter(); - DirectDiskAdaptorHandle diskAdaptor = new DirectDiskAdaptor(); - diskAdaptor->setDiskWriter(writer); - diskAdaptor->setTotalLength(16*1024*2+8*1024); - diskAdaptor->setStoreDir(dir); - FileEntryHandle fileEntry = new FileEntry(fname, - diskAdaptor->getTotalLength(), - 0); - FileEntries fs; - fs.push_back(fileEntry); - diskAdaptor->setFileEntries(fs); + DefaultDiskWriter writer; + int64_t offset = 10; + int64_t totalLength = 16*1024*2+8*1024; // we have to open file first. - diskAdaptor->openFile(); - SingleFileAllocationIteratorHandle itr = diskAdaptor->fileAllocationIterator(); - - itr->allocateChunk(); - CPPUNIT_ASSERT(!itr->finished()); - itr->allocateChunk(); - CPPUNIT_ASSERT(!itr->finished()); - itr->allocateChunk(); - CPPUNIT_ASSERT(itr->finished()); + writer.openExistingFile(fn); + SingleFileAllocationIterator itr(&writer, offset, totalLength); + itr.init(); + while(!itr.finished()) { + itr.allocateChunk(); + } File f(fn); CPPUNIT_ASSERT_EQUAL((int64_t)40960, f.size()); } |
