Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(975)

Unified Diff: net/base/file_stream_unittest.cc

Issue 9949011: Make FileStream::Seek async and add FileStream::SeekSync for sync operation (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « net/base/file_stream_posix.cc ('k') | net/base/file_stream_win.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/base/file_stream_unittest.cc
diff --git a/net/base/file_stream_unittest.cc b/net/base/file_stream_unittest.cc
index b55e22e4ee5d57edac4a26003c940af47d0de213..d3853ca16fb7aa948118ff75b116a6e5c6e19b79 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;
« no previous file with comments | « net/base/file_stream_posix.cc ('k') | net/base/file_stream_win.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698