diff options
author | kinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-11 08:02:17 +0000 |
---|---|---|
committer | kinuko@chromium.org <kinuko@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-04-11 08:02:17 +0000 |
commit | cf02541b6dd5a26ce0f9a5664dec0fce365372d2 (patch) | |
tree | a3c55f0583fea567acc4764c8ff170c285f2f917 /net/base/file_stream_unittest.cc | |
parent | 5c40dce570edf4658a077faff2323e2b1e5936e7 (diff) | |
download | chromium_src-cf02541b6dd5a26ce0f9a5664dec0fce365372d2.zip chromium_src-cf02541b6dd5a26ce0f9a5664dec0fce365372d2.tar.gz chromium_src-cf02541b6dd5a26ce0f9a5664dec0fce365372d2.tar.bz2 |
Make FileStream::Seek async and add FileStream::SeekSync for sync operation
BUG=75548,113300
TEST=existing tests should pass
Review URL: https://chromiumcodereview.appspot.com/9949011
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@131732 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net/base/file_stream_unittest.cc')
-rw-r--r-- | net/base/file_stream_unittest.cc | 81 |
1 files changed, 63 insertions, 18 deletions
diff --git a/net/base/file_stream_unittest.cc b/net/base/file_stream_unittest.cc index b55e22e..d3853ca 100644 --- a/net/base/file_stream_unittest.cc +++ b/net/base/file_stream_unittest.cc @@ -155,7 +155,7 @@ TEST_F(FileStreamTest, UseFileHandle) { // Seek to the beginning of the file and read. FileStream read_stream(file, flags, NULL); - ASSERT_EQ(0, read_stream.Seek(FROM_BEGIN, 0)); + ASSERT_EQ(0, read_stream.SeekSync(FROM_BEGIN, 0)); ASSERT_EQ(kTestDataSize, read_stream.Available()); // Read into buffer and compare. char buffer[kTestDataSize]; @@ -170,7 +170,7 @@ TEST_F(FileStreamTest, UseFileHandle) { file = base::CreatePlatformFile(temp_file_path(), flags, &created, NULL); FileStream write_stream(file, flags, NULL); - ASSERT_EQ(0, write_stream.Seek(FROM_BEGIN, 0)); + ASSERT_EQ(0, write_stream.SeekSync(FROM_BEGIN, 0)); ASSERT_EQ(kTestDataSize, write_stream.WriteSync(kTestData, kTestDataSize)); write_stream.CloseSync(); @@ -187,7 +187,7 @@ TEST_F(FileStreamTest, UseClosedStream) { EXPECT_FALSE(stream.IsOpen()); // Try seeking... - int64 new_offset = stream.Seek(FROM_BEGIN, 5); + int64 new_offset = stream.SeekSync(FROM_BEGIN, 5); EXPECT_EQ(ERR_UNEXPECTED, new_offset); // Try available... @@ -380,7 +380,7 @@ TEST_F(FileStreamTest, BasicRead_FromOffset) { EXPECT_EQ(OK, rv); const int64 kOffset = 3; - int64 new_offset = stream.Seek(FROM_BEGIN, kOffset); + int64 new_offset = stream.SeekSync(FROM_BEGIN, kOffset); EXPECT_EQ(kOffset, new_offset); int64 total_bytes_avail = stream.Available(); @@ -415,8 +415,11 @@ TEST_F(FileStreamTest, AsyncRead_FromOffset) { int rv = stream.OpenSync(temp_file_path(), flags); EXPECT_EQ(OK, rv); + TestInt64CompletionCallback callback64; const int64 kOffset = 3; - int64 new_offset = stream.Seek(FROM_BEGIN, kOffset); + rv = stream.Seek(FROM_BEGIN, kOffset, callback64.callback()); + ASSERT_EQ(ERR_IO_PENDING, rv); + int64 new_offset = callback64.WaitForResult(); EXPECT_EQ(kOffset, new_offset); int64 total_bytes_avail = stream.Available(); @@ -450,18 +453,52 @@ TEST_F(FileStreamTest, SeekAround) { EXPECT_EQ(OK, rv); const int64 kOffset = 3; - int64 new_offset = stream.Seek(FROM_BEGIN, kOffset); + int64 new_offset = stream.SeekSync(FROM_BEGIN, kOffset); EXPECT_EQ(kOffset, new_offset); - new_offset = stream.Seek(FROM_CURRENT, kOffset); + new_offset = stream.SeekSync(FROM_CURRENT, kOffset); EXPECT_EQ(2 * kOffset, new_offset); - new_offset = stream.Seek(FROM_CURRENT, -kOffset); + new_offset = stream.SeekSync(FROM_CURRENT, -kOffset); EXPECT_EQ(kOffset, new_offset); const int kTestDataLen = arraysize(kTestData) - 1; - new_offset = stream.Seek(FROM_END, -kTestDataLen); + new_offset = stream.SeekSync(FROM_END, -kTestDataLen); + EXPECT_EQ(0, new_offset); +} + +TEST_F(FileStreamTest, AsyncSeekAround) { + FileStream stream(NULL); + int flags = base::PLATFORM_FILE_OPEN | + base::PLATFORM_FILE_ASYNC | + base::PLATFORM_FILE_READ; + int rv = stream.OpenSync(temp_file_path(), flags); + EXPECT_EQ(OK, rv); + + TestInt64CompletionCallback callback; + + const int64 kOffset = 3; + rv = stream.Seek(FROM_BEGIN, kOffset, callback.callback()); + ASSERT_EQ(ERR_IO_PENDING, rv); + int64 new_offset = callback.WaitForResult(); + EXPECT_EQ(kOffset, new_offset); + + rv = stream.Seek(FROM_CURRENT, kOffset, callback.callback()); + ASSERT_EQ(ERR_IO_PENDING, rv); + new_offset = callback.WaitForResult(); + EXPECT_EQ(2 * kOffset, new_offset); + + rv = stream.Seek(FROM_CURRENT, -kOffset, callback.callback()); + ASSERT_EQ(ERR_IO_PENDING, rv); + new_offset = callback.WaitForResult(); + EXPECT_EQ(kOffset, new_offset); + + const int kTestDataLen = arraysize(kTestData) - 1; + + rv = stream.Seek(FROM_END, -kTestDataLen, callback.callback()); + ASSERT_EQ(ERR_IO_PENDING, rv); + new_offset = callback.WaitForResult(); EXPECT_EQ(0, new_offset); } @@ -564,7 +601,7 @@ TEST_F(FileStreamTest, BasicWrite_FromOffset) { EXPECT_EQ(kTestDataSize, file_size); const int64 kOffset = 0; - int64 new_offset = stream.Seek(FROM_END, kOffset); + int64 new_offset = stream.SeekSync(FROM_END, kOffset); EXPECT_EQ(kTestDataSize, new_offset); rv = stream.WriteSync(kTestData, kTestDataSize); @@ -588,8 +625,11 @@ TEST_F(FileStreamTest, AsyncWrite_FromOffset) { int rv = stream.OpenSync(temp_file_path(), flags); EXPECT_EQ(OK, rv); + TestInt64CompletionCallback callback64; const int64 kOffset = 0; - int64 new_offset = stream.Seek(FROM_END, kOffset); + rv = stream.Seek(FROM_END, kOffset, callback64.callback()); + ASSERT_EQ(ERR_IO_PENDING, rv); + int64 new_offset = callback64.WaitForResult(); EXPECT_EQ(kTestDataSize, new_offset); TestCompletionCallback callback; @@ -668,13 +708,13 @@ TEST_F(FileStreamTest, BasicWriteRead) { int64 total_bytes_avail = stream.Available(); EXPECT_EQ(file_size, total_bytes_avail); - int64 offset = stream.Seek(FROM_END, 0); + int64 offset = stream.SeekSync(FROM_END, 0); EXPECT_EQ(offset, file_size); rv = stream.WriteSync(kTestData, kTestDataSize); EXPECT_EQ(kTestDataSize, rv); - offset = stream.Seek(FROM_BEGIN, 0); + offset = stream.SeekSync(FROM_BEGIN, 0); EXPECT_EQ(0, offset); int64 total_bytes_read = 0; @@ -775,7 +815,10 @@ TEST_F(FileStreamTest, BasicAsyncWriteRead) { int64 total_bytes_avail = stream.Available(); EXPECT_EQ(file_size, total_bytes_avail); - int64 offset = stream.Seek(FROM_END, 0); + TestInt64CompletionCallback callback64; + rv = stream.Seek(FROM_END, 0, callback64.callback()); + ASSERT_EQ(ERR_IO_PENDING, rv); + int64 offset = callback64.WaitForResult(); EXPECT_EQ(offset, file_size); TestCompletionCallback callback; @@ -798,7 +841,9 @@ TEST_F(FileStreamTest, BasicAsyncWriteRead) { EXPECT_EQ(kTestDataSize, total_bytes_written); - offset = stream.Seek(FROM_BEGIN, 0); + rv = stream.Seek(FROM_BEGIN, 0, callback64.callback()); + ASSERT_EQ(ERR_IO_PENDING, rv); + offset = callback64.WaitForResult(); EXPECT_EQ(0, offset); int total_bytes_read = 0; @@ -882,7 +927,7 @@ class TestWriteReadCompletionCallback { *total_bytes_read_ += total_bytes_read; *data_read_ += data_read; } else { // We're done writing all data. Start reading the data. - stream_->Seek(FROM_BEGIN, 0); + stream_->SeekSync(FROM_BEGIN, 0); TestCompletionCallback callback; for (;;) { @@ -936,7 +981,7 @@ TEST_F(FileStreamTest, AsyncWriteRead) { int64 total_bytes_avail = stream.Available(); EXPECT_EQ(file_size, total_bytes_avail); - int64 offset = stream.Seek(FROM_END, 0); + int64 offset = stream.SeekSync(FROM_END, 0); EXPECT_EQ(offset, file_size); int total_bytes_written = 0; @@ -1046,7 +1091,7 @@ TEST_F(FileStreamTest, AsyncWriteClose) { int64 total_bytes_avail = stream.Available(); EXPECT_EQ(file_size, total_bytes_avail); - int64 offset = stream.Seek(FROM_END, 0); + int64 offset = stream.SeekSync(FROM_END, 0); EXPECT_EQ(offset, file_size); int total_bytes_written = 0; |