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

Side by Side Diff: net/base/file_stream_unittest.cc

Issue 23872004: Remove base::WorkerPool use from FileStream tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 3 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/base/file_stream.h" 5 #include "net/base/file_stream.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "base/file_util.h" 9 #include "base/file_util.h"
10 #include "base/message_loop/message_loop.h"
11 #include "base/path_service.h" 10 #include "base/path_service.h"
12 #include "base/platform_file.h" 11 #include "base/platform_file.h"
12 #include "base/run_loop.h"
13 #include "base/synchronization/waitable_event.h" 13 #include "base/synchronization/waitable_event.h"
14 #include "base/task_runner.h"
14 #include "base/test/test_timeouts.h" 15 #include "base/test/test_timeouts.h"
16 #include "base/threading/thread.h"
15 #include "net/base/capturing_net_log.h" 17 #include "net/base/capturing_net_log.h"
16 #include "net/base/io_buffer.h" 18 #include "net/base/io_buffer.h"
17 #include "net/base/net_errors.h" 19 #include "net/base/net_errors.h"
18 #include "net/base/test_completion_callback.h" 20 #include "net/base/test_completion_callback.h"
19 #include "testing/gtest/include/gtest/gtest.h" 21 #include "testing/gtest/include/gtest/gtest.h"
20 #include "testing/platform_test.h" 22 #include "testing/platform_test.h"
21 23
22 namespace net { 24 namespace net {
23 25
24 namespace { 26 namespace {
25 27
26 const char kTestData[] = "0123456789"; 28 const char kTestData[] = "0123456789";
27 const int kTestDataSize = arraysize(kTestData) - 1; 29 const int kTestDataSize = arraysize(kTestData) - 1;
28 30
29 // Creates an IOBufferWithSize that contains the kTestDataSize. 31 // Creates an IOBufferWithSize that contains the kTestDataSize.
30 IOBufferWithSize* CreateTestDataBuffer() { 32 IOBufferWithSize* CreateTestDataBuffer() {
31 IOBufferWithSize* buf = new IOBufferWithSize(kTestDataSize); 33 IOBufferWithSize* buf = new IOBufferWithSize(kTestDataSize);
32 memcpy(buf->data(), kTestData, kTestDataSize); 34 memcpy(buf->data(), kTestData, kTestDataSize);
33 return buf; 35 return buf;
34 } 36 }
35 37
36 } // namespace 38 } // namespace
37 39
38 class FileStreamTest : public PlatformTest { 40 class FileStreamTest : public PlatformTest {
39 public: 41 public:
42 FileStreamTest() : file_thread_("FileStreamTestFileThread") {}
40 virtual void SetUp() { 43 virtual void SetUp() {
41 PlatformTest::SetUp(); 44 PlatformTest::SetUp();
42 45
46 file_thread_.Start();
43 file_util::CreateTemporaryFile(&temp_file_path_); 47 file_util::CreateTemporaryFile(&temp_file_path_);
44 file_util::WriteFile(temp_file_path_, kTestData, kTestDataSize); 48 file_util::WriteFile(temp_file_path_, kTestData, kTestDataSize);
45 } 49 }
46 virtual void TearDown() { 50 virtual void TearDown() {
47 EXPECT_TRUE(base::DeleteFile(temp_file_path_, false)); 51 EXPECT_TRUE(base::DeleteFile(temp_file_path_, false));
48 52
53 TestCompletionCallback callback;
54
55 file_task_runner()->PostTaskAndReply(FROM_HERE, base::Bind(DoNothing),
56 base::Bind(callback.callback(), 0));
57 callback.WaitForResult();
58 base::RunLoop().RunUntilIdle();
59 file_thread_.Stop();
60 base::RunLoop().RunUntilIdle();
61
49 PlatformTest::TearDown(); 62 PlatformTest::TearDown();
50 } 63 }
51 64
65 static void DoNothing() {};
66
52 const base::FilePath temp_file_path() const { return temp_file_path_; } 67 const base::FilePath temp_file_path() const { return temp_file_path_; }
68 scoped_refptr<base::TaskRunner> file_task_runner() const {
69 CHECK(file_thread_.message_loop_proxy().get());
70 return file_thread_.message_loop_proxy();
71 }
53 72
54 private: 73 private:
55 base::FilePath temp_file_path_; 74 base::FilePath temp_file_path_;
75 base::Thread file_thread_;
Ryan Sleevi 2013/09/06 20:46:38 The only requirement for this interface is that th
56 }; 76 };
57 77
58 namespace { 78 namespace {
59 79
60 TEST_F(FileStreamTest, BasicOpenClose) { 80 TEST_F(FileStreamTest, BasicOpenClose) {
61 base::PlatformFile file = base::kInvalidPlatformFileValue; 81 base::PlatformFile file = base::kInvalidPlatformFileValue;
62 { 82 {
63 FileStream stream(NULL); 83 FileStream stream(NULL, file_task_runner());
64 int rv = stream.OpenSync(temp_file_path(), 84 int rv = stream.OpenSync(temp_file_path(),
65 base::PLATFORM_FILE_OPEN | base::PLATFORM_FILE_READ); 85 base::PLATFORM_FILE_OPEN | base::PLATFORM_FILE_READ);
66 EXPECT_EQ(OK, rv); 86 EXPECT_EQ(OK, rv);
67 EXPECT_TRUE(stream.IsOpen()); 87 EXPECT_TRUE(stream.IsOpen());
68 file = stream.GetPlatformFileForTesting(); 88 file = stream.GetPlatformFileForTesting();
69 } 89 }
70 EXPECT_NE(base::kInvalidPlatformFileValue, file); 90 EXPECT_NE(base::kInvalidPlatformFileValue, file);
71 base::PlatformFileInfo info; 91 base::PlatformFileInfo info;
72 // The file should be closed. 92 // The file should be closed.
73 EXPECT_FALSE(base::GetPlatformFileInfo(file, &info)); 93 EXPECT_FALSE(base::GetPlatformFileInfo(file, &info));
74 } 94 }
75 95
76 TEST_F(FileStreamTest, FileHandleNotLeftOpen) { 96 TEST_F(FileStreamTest, FileHandleNotLeftOpen) {
77 bool created = false; 97 bool created = false;
78 ASSERT_EQ(kTestDataSize, 98 ASSERT_EQ(kTestDataSize,
79 file_util::WriteFile(temp_file_path(), kTestData, kTestDataSize)); 99 file_util::WriteFile(temp_file_path(), kTestData, kTestDataSize));
80 int flags = base::PLATFORM_FILE_OPEN_ALWAYS | base::PLATFORM_FILE_READ; 100 int flags = base::PLATFORM_FILE_OPEN_ALWAYS | base::PLATFORM_FILE_READ;
81 base::PlatformFile file = base::CreatePlatformFile( 101 base::PlatformFile file = base::CreatePlatformFile(
82 temp_file_path(), flags, &created, NULL); 102 temp_file_path(), flags, &created, NULL);
83 103
84 { 104 {
85 // Seek to the beginning of the file and read. 105 // Seek to the beginning of the file and read.
86 FileStream read_stream(file, flags, NULL); 106 FileStream read_stream(file, flags, NULL, file_task_runner());
87 EXPECT_TRUE(read_stream.IsOpen()); 107 EXPECT_TRUE(read_stream.IsOpen());
88 } 108 }
89 109
90 EXPECT_NE(base::kInvalidPlatformFileValue, file); 110 EXPECT_NE(base::kInvalidPlatformFileValue, file);
91 base::PlatformFileInfo info; 111 base::PlatformFileInfo info;
92 // The file should be closed. 112 // The file should be closed.
93 EXPECT_FALSE(base::GetPlatformFileInfo(file, &info)); 113 EXPECT_FALSE(base::GetPlatformFileInfo(file, &info));
94 } 114 }
95 115
96 // Test the use of FileStream with a file handle provided at construction. 116 // Test the use of FileStream with a file handle provided at construction.
97 TEST_F(FileStreamTest, UseFileHandle) { 117 TEST_F(FileStreamTest, UseFileHandle) {
98 bool created = false; 118 bool created = false;
99 119
100 // 1. Test reading with a file handle. 120 // 1. Test reading with a file handle.
101 ASSERT_EQ(kTestDataSize, 121 ASSERT_EQ(kTestDataSize,
102 file_util::WriteFile(temp_file_path(), kTestData, kTestDataSize)); 122 file_util::WriteFile(temp_file_path(), kTestData, kTestDataSize));
103 int flags = base::PLATFORM_FILE_OPEN_ALWAYS | base::PLATFORM_FILE_READ; 123 int flags = base::PLATFORM_FILE_OPEN_ALWAYS | base::PLATFORM_FILE_READ;
104 base::PlatformFile file = base::CreatePlatformFile( 124 base::PlatformFile file = base::CreatePlatformFile(
105 temp_file_path(), flags, &created, NULL); 125 temp_file_path(), flags, &created, NULL);
106 126
107 // Seek to the beginning of the file and read. 127 // Seek to the beginning of the file and read.
108 scoped_ptr<FileStream> read_stream(new FileStream(file, flags, NULL)); 128 scoped_ptr<FileStream> read_stream(
129 new FileStream(file, flags, NULL, file_task_runner()));
109 ASSERT_EQ(0, read_stream->SeekSync(FROM_BEGIN, 0)); 130 ASSERT_EQ(0, read_stream->SeekSync(FROM_BEGIN, 0));
110 ASSERT_EQ(kTestDataSize, read_stream->Available()); 131 ASSERT_EQ(kTestDataSize, read_stream->Available());
111 // Read into buffer and compare. 132 // Read into buffer and compare.
112 char buffer[kTestDataSize]; 133 char buffer[kTestDataSize];
113 ASSERT_EQ(kTestDataSize, 134 ASSERT_EQ(kTestDataSize,
114 read_stream->ReadSync(buffer, kTestDataSize)); 135 read_stream->ReadSync(buffer, kTestDataSize));
115 ASSERT_EQ(0, memcmp(kTestData, buffer, kTestDataSize)); 136 ASSERT_EQ(0, memcmp(kTestData, buffer, kTestDataSize));
116 read_stream.reset(); 137 read_stream.reset();
117 138
118 // 2. Test writing with a file handle. 139 // 2. Test writing with a file handle.
119 base::DeleteFile(temp_file_path(), false); 140 base::DeleteFile(temp_file_path(), false);
120 flags = base::PLATFORM_FILE_OPEN_ALWAYS | base::PLATFORM_FILE_WRITE; 141 flags = base::PLATFORM_FILE_OPEN_ALWAYS | base::PLATFORM_FILE_WRITE;
121 file = base::CreatePlatformFile(temp_file_path(), flags, &created, NULL); 142 file = base::CreatePlatformFile(temp_file_path(), flags, &created, NULL);
122 143
123 scoped_ptr<FileStream> write_stream(new FileStream(file, flags, NULL)); 144 scoped_ptr<FileStream> write_stream(
145 new FileStream(file, flags, NULL, file_task_runner()));
124 ASSERT_EQ(0, write_stream->SeekSync(FROM_BEGIN, 0)); 146 ASSERT_EQ(0, write_stream->SeekSync(FROM_BEGIN, 0));
125 ASSERT_EQ(kTestDataSize, 147 ASSERT_EQ(kTestDataSize,
126 write_stream->WriteSync(kTestData, kTestDataSize)); 148 write_stream->WriteSync(kTestData, kTestDataSize));
127 write_stream.reset(); 149 write_stream.reset();
128 150
129 // Read into buffer and compare to make sure the handle worked fine. 151 // Read into buffer and compare to make sure the handle worked fine.
130 ASSERT_EQ(kTestDataSize, 152 ASSERT_EQ(kTestDataSize,
131 file_util::ReadFile(temp_file_path(), buffer, kTestDataSize)); 153 file_util::ReadFile(temp_file_path(), buffer, kTestDataSize));
132 ASSERT_EQ(0, memcmp(kTestData, buffer, kTestDataSize)); 154 ASSERT_EQ(0, memcmp(kTestData, buffer, kTestDataSize));
133 } 155 }
134 156
135 TEST_F(FileStreamTest, UseClosedStream) { 157 TEST_F(FileStreamTest, UseClosedStream) {
136 FileStream stream(NULL); 158 FileStream stream(NULL, file_task_runner());
137 159
138 EXPECT_FALSE(stream.IsOpen()); 160 EXPECT_FALSE(stream.IsOpen());
139 161
140 // Try seeking... 162 // Try seeking...
141 int64 new_offset = stream.SeekSync(FROM_BEGIN, 5); 163 int64 new_offset = stream.SeekSync(FROM_BEGIN, 5);
142 EXPECT_EQ(ERR_UNEXPECTED, new_offset); 164 EXPECT_EQ(ERR_UNEXPECTED, new_offset);
143 165
144 // Try available... 166 // Try available...
145 int64 avail = stream.Available(); 167 int64 avail = stream.Available();
146 EXPECT_EQ(ERR_UNEXPECTED, avail); 168 EXPECT_EQ(ERR_UNEXPECTED, avail);
147 169
148 // Try reading... 170 // Try reading...
149 char buf[10]; 171 char buf[10];
150 int rv = stream.ReadSync(buf, arraysize(buf)); 172 int rv = stream.ReadSync(buf, arraysize(buf));
151 EXPECT_EQ(ERR_UNEXPECTED, rv); 173 EXPECT_EQ(ERR_UNEXPECTED, rv);
152 } 174 }
153 175
154 TEST_F(FileStreamTest, BasicRead) { 176 TEST_F(FileStreamTest, BasicRead) {
155 int64 file_size; 177 int64 file_size;
156 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 178 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
157 EXPECT_TRUE(ok); 179 EXPECT_TRUE(ok);
158 180
159 FileStream stream(NULL); 181 FileStream stream(NULL, file_task_runner());
160 int flags = base::PLATFORM_FILE_OPEN | 182 int flags = base::PLATFORM_FILE_OPEN |
161 base::PLATFORM_FILE_READ; 183 base::PLATFORM_FILE_READ;
162 int rv = stream.OpenSync(temp_file_path(), flags); 184 int rv = stream.OpenSync(temp_file_path(), flags);
163 EXPECT_EQ(OK, rv); 185 EXPECT_EQ(OK, rv);
164 186
165 int64 total_bytes_avail = stream.Available(); 187 int64 total_bytes_avail = stream.Available();
166 EXPECT_EQ(file_size, total_bytes_avail); 188 EXPECT_EQ(file_size, total_bytes_avail);
167 189
168 int total_bytes_read = 0; 190 int total_bytes_read = 0;
169 191
170 std::string data_read; 192 std::string data_read;
171 for (;;) { 193 for (;;) {
172 char buf[4]; 194 char buf[4];
173 rv = stream.ReadSync(buf, arraysize(buf)); 195 rv = stream.ReadSync(buf, arraysize(buf));
174 EXPECT_LE(0, rv); 196 EXPECT_LE(0, rv);
175 if (rv <= 0) 197 if (rv <= 0)
176 break; 198 break;
177 total_bytes_read += rv; 199 total_bytes_read += rv;
178 data_read.append(buf, rv); 200 data_read.append(buf, rv);
179 } 201 }
180 EXPECT_EQ(file_size, total_bytes_read); 202 EXPECT_EQ(file_size, total_bytes_read);
181 EXPECT_EQ(kTestData, data_read); 203 EXPECT_EQ(kTestData, data_read);
182 } 204 }
183 205
184 TEST_F(FileStreamTest, AsyncRead) { 206 TEST_F(FileStreamTest, AsyncRead) {
185 int64 file_size; 207 int64 file_size;
186 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 208 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
187 EXPECT_TRUE(ok); 209 EXPECT_TRUE(ok);
188 210
189 FileStream stream(NULL); 211 FileStream stream(NULL, file_task_runner());
190 int flags = base::PLATFORM_FILE_OPEN | 212 int flags = base::PLATFORM_FILE_OPEN |
191 base::PLATFORM_FILE_READ | 213 base::PLATFORM_FILE_READ |
192 base::PLATFORM_FILE_ASYNC; 214 base::PLATFORM_FILE_ASYNC;
193 TestCompletionCallback callback; 215 TestCompletionCallback callback;
194 int rv = stream.Open(temp_file_path(), flags, callback.callback()); 216 int rv = stream.Open(temp_file_path(), flags, callback.callback());
195 EXPECT_EQ(ERR_IO_PENDING, rv); 217 EXPECT_EQ(ERR_IO_PENDING, rv);
196 EXPECT_EQ(OK, callback.WaitForResult()); 218 EXPECT_EQ(OK, callback.WaitForResult());
197 219
198 int64 total_bytes_avail = stream.Available(); 220 int64 total_bytes_avail = stream.Available();
199 EXPECT_EQ(file_size, total_bytes_avail); 221 EXPECT_EQ(file_size, total_bytes_avail);
(...skipping 14 matching lines...) Expand all
214 } 236 }
215 EXPECT_EQ(file_size, total_bytes_read); 237 EXPECT_EQ(file_size, total_bytes_read);
216 EXPECT_EQ(kTestData, data_read); 238 EXPECT_EQ(kTestData, data_read);
217 } 239 }
218 240
219 TEST_F(FileStreamTest, AsyncRead_EarlyDelete) { 241 TEST_F(FileStreamTest, AsyncRead_EarlyDelete) {
220 int64 file_size; 242 int64 file_size;
221 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 243 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
222 EXPECT_TRUE(ok); 244 EXPECT_TRUE(ok);
223 245
224 scoped_ptr<FileStream> stream(new FileStream(NULL)); 246 scoped_ptr<FileStream> stream(new FileStream(NULL, file_task_runner()));
225 int flags = base::PLATFORM_FILE_OPEN | 247 int flags = base::PLATFORM_FILE_OPEN |
226 base::PLATFORM_FILE_READ | 248 base::PLATFORM_FILE_READ |
227 base::PLATFORM_FILE_ASYNC; 249 base::PLATFORM_FILE_ASYNC;
228 TestCompletionCallback callback; 250 TestCompletionCallback callback;
229 int rv = stream->Open(temp_file_path(), flags, callback.callback()); 251 int rv = stream->Open(temp_file_path(), flags, callback.callback());
230 EXPECT_EQ(ERR_IO_PENDING, rv); 252 EXPECT_EQ(ERR_IO_PENDING, rv);
231 EXPECT_EQ(OK, callback.WaitForResult()); 253 EXPECT_EQ(OK, callback.WaitForResult());
232 254
233 int64 total_bytes_avail = stream->Available(); 255 int64 total_bytes_avail = stream->Available();
234 EXPECT_EQ(file_size, total_bytes_avail); 256 EXPECT_EQ(file_size, total_bytes_avail);
235 257
236 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4); 258 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4);
237 rv = stream->Read(buf.get(), buf->size(), callback.callback()); 259 rv = stream->Read(buf.get(), buf->size(), callback.callback());
238 stream.reset(); // Delete instead of closing it. 260 stream.reset(); // Delete instead of closing it.
239 if (rv < 0) { 261 if (rv < 0) {
240 EXPECT_EQ(ERR_IO_PENDING, rv); 262 EXPECT_EQ(ERR_IO_PENDING, rv);
241 // The callback should not be called if the request is cancelled. 263 // The callback should not be called if the request is cancelled.
242 base::MessageLoop::current()->RunUntilIdle(); 264 base::RunLoop().RunUntilIdle();
243 EXPECT_FALSE(callback.have_result()); 265 EXPECT_FALSE(callback.have_result());
244 } else { 266 } else {
245 EXPECT_EQ(std::string(kTestData, rv), std::string(buf->data(), rv)); 267 EXPECT_EQ(std::string(kTestData, rv), std::string(buf->data(), rv));
246 } 268 }
247 } 269 }
248 270
249 TEST_F(FileStreamTest, BasicRead_FromOffset) { 271 TEST_F(FileStreamTest, BasicRead_FromOffset) {
250 int64 file_size; 272 int64 file_size;
251 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 273 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
252 EXPECT_TRUE(ok); 274 EXPECT_TRUE(ok);
253 275
254 FileStream stream(NULL); 276 FileStream stream(NULL, file_task_runner());
255 int flags = base::PLATFORM_FILE_OPEN | 277 int flags = base::PLATFORM_FILE_OPEN |
256 base::PLATFORM_FILE_READ; 278 base::PLATFORM_FILE_READ;
257 int rv = stream.OpenSync(temp_file_path(), flags); 279 int rv = stream.OpenSync(temp_file_path(), flags);
258 EXPECT_EQ(OK, rv); 280 EXPECT_EQ(OK, rv);
259 281
260 const int64 kOffset = 3; 282 const int64 kOffset = 3;
261 int64 new_offset = stream.SeekSync(FROM_BEGIN, kOffset); 283 int64 new_offset = stream.SeekSync(FROM_BEGIN, kOffset);
262 EXPECT_EQ(kOffset, new_offset); 284 EXPECT_EQ(kOffset, new_offset);
263 285
264 int64 total_bytes_avail = stream.Available(); 286 int64 total_bytes_avail = stream.Available();
(...skipping 14 matching lines...) Expand all
279 EXPECT_EQ(file_size - kOffset, total_bytes_read); 301 EXPECT_EQ(file_size - kOffset, total_bytes_read);
280 EXPECT_TRUE(data_read == kTestData + kOffset); 302 EXPECT_TRUE(data_read == kTestData + kOffset);
281 EXPECT_EQ(kTestData + kOffset, data_read); 303 EXPECT_EQ(kTestData + kOffset, data_read);
282 } 304 }
283 305
284 TEST_F(FileStreamTest, AsyncRead_FromOffset) { 306 TEST_F(FileStreamTest, AsyncRead_FromOffset) {
285 int64 file_size; 307 int64 file_size;
286 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 308 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
287 EXPECT_TRUE(ok); 309 EXPECT_TRUE(ok);
288 310
289 FileStream stream(NULL); 311 FileStream stream(NULL, file_task_runner());
290 int flags = base::PLATFORM_FILE_OPEN | 312 int flags = base::PLATFORM_FILE_OPEN |
291 base::PLATFORM_FILE_READ | 313 base::PLATFORM_FILE_READ |
292 base::PLATFORM_FILE_ASYNC; 314 base::PLATFORM_FILE_ASYNC;
293 TestCompletionCallback callback; 315 TestCompletionCallback callback;
294 int rv = stream.Open(temp_file_path(), flags, callback.callback()); 316 int rv = stream.Open(temp_file_path(), flags, callback.callback());
295 EXPECT_EQ(ERR_IO_PENDING, rv); 317 EXPECT_EQ(ERR_IO_PENDING, rv);
296 EXPECT_EQ(OK, callback.WaitForResult()); 318 EXPECT_EQ(OK, callback.WaitForResult());
297 319
298 TestInt64CompletionCallback callback64; 320 TestInt64CompletionCallback callback64;
299 const int64 kOffset = 3; 321 const int64 kOffset = 3;
(...skipping 17 matching lines...) Expand all
317 if (rv <= 0) 339 if (rv <= 0)
318 break; 340 break;
319 total_bytes_read += rv; 341 total_bytes_read += rv;
320 data_read.append(buf->data(), rv); 342 data_read.append(buf->data(), rv);
321 } 343 }
322 EXPECT_EQ(file_size - kOffset, total_bytes_read); 344 EXPECT_EQ(file_size - kOffset, total_bytes_read);
323 EXPECT_EQ(kTestData + kOffset, data_read); 345 EXPECT_EQ(kTestData + kOffset, data_read);
324 } 346 }
325 347
326 TEST_F(FileStreamTest, SeekAround) { 348 TEST_F(FileStreamTest, SeekAround) {
327 FileStream stream(NULL); 349 FileStream stream(NULL, file_task_runner());
328 int flags = base::PLATFORM_FILE_OPEN | 350 int flags = base::PLATFORM_FILE_OPEN |
329 base::PLATFORM_FILE_READ; 351 base::PLATFORM_FILE_READ;
330 int rv = stream.OpenSync(temp_file_path(), flags); 352 int rv = stream.OpenSync(temp_file_path(), flags);
331 EXPECT_EQ(OK, rv); 353 EXPECT_EQ(OK, rv);
332 354
333 const int64 kOffset = 3; 355 const int64 kOffset = 3;
334 int64 new_offset = stream.SeekSync(FROM_BEGIN, kOffset); 356 int64 new_offset = stream.SeekSync(FROM_BEGIN, kOffset);
335 EXPECT_EQ(kOffset, new_offset); 357 EXPECT_EQ(kOffset, new_offset);
336 358
337 new_offset = stream.SeekSync(FROM_CURRENT, kOffset); 359 new_offset = stream.SeekSync(FROM_CURRENT, kOffset);
338 EXPECT_EQ(2 * kOffset, new_offset); 360 EXPECT_EQ(2 * kOffset, new_offset);
339 361
340 new_offset = stream.SeekSync(FROM_CURRENT, -kOffset); 362 new_offset = stream.SeekSync(FROM_CURRENT, -kOffset);
341 EXPECT_EQ(kOffset, new_offset); 363 EXPECT_EQ(kOffset, new_offset);
342 364
343 const int kTestDataLen = arraysize(kTestData) - 1; 365 const int kTestDataLen = arraysize(kTestData) - 1;
344 366
345 new_offset = stream.SeekSync(FROM_END, -kTestDataLen); 367 new_offset = stream.SeekSync(FROM_END, -kTestDataLen);
346 EXPECT_EQ(0, new_offset); 368 EXPECT_EQ(0, new_offset);
347 } 369 }
348 370
349 TEST_F(FileStreamTest, AsyncSeekAround) { 371 TEST_F(FileStreamTest, AsyncSeekAround) {
350 FileStream stream(NULL); 372 FileStream stream(NULL, file_task_runner());
351 int flags = base::PLATFORM_FILE_OPEN | 373 int flags = base::PLATFORM_FILE_OPEN |
352 base::PLATFORM_FILE_ASYNC | 374 base::PLATFORM_FILE_ASYNC |
353 base::PLATFORM_FILE_READ; 375 base::PLATFORM_FILE_READ;
354 TestCompletionCallback callback; 376 TestCompletionCallback callback;
355 int rv = stream.Open(temp_file_path(), flags, callback.callback()); 377 int rv = stream.Open(temp_file_path(), flags, callback.callback());
356 EXPECT_EQ(ERR_IO_PENDING, rv); 378 EXPECT_EQ(ERR_IO_PENDING, rv);
357 EXPECT_EQ(OK, callback.WaitForResult()); 379 EXPECT_EQ(OK, callback.WaitForResult());
358 380
359 TestInt64CompletionCallback callback64; 381 TestInt64CompletionCallback callback64;
360 382
(...skipping 15 matching lines...) Expand all
376 398
377 const int kTestDataLen = arraysize(kTestData) - 1; 399 const int kTestDataLen = arraysize(kTestData) - 1;
378 400
379 rv = stream.Seek(FROM_END, -kTestDataLen, callback64.callback()); 401 rv = stream.Seek(FROM_END, -kTestDataLen, callback64.callback());
380 ASSERT_EQ(ERR_IO_PENDING, rv); 402 ASSERT_EQ(ERR_IO_PENDING, rv);
381 new_offset = callback64.WaitForResult(); 403 new_offset = callback64.WaitForResult();
382 EXPECT_EQ(0, new_offset); 404 EXPECT_EQ(0, new_offset);
383 } 405 }
384 406
385 TEST_F(FileStreamTest, BasicWrite) { 407 TEST_F(FileStreamTest, BasicWrite) {
386 scoped_ptr<FileStream> stream(new FileStream(NULL)); 408 scoped_ptr<FileStream> stream(new FileStream(NULL, file_task_runner()));
387 int flags = base::PLATFORM_FILE_CREATE_ALWAYS | 409 int flags = base::PLATFORM_FILE_CREATE_ALWAYS |
388 base::PLATFORM_FILE_WRITE; 410 base::PLATFORM_FILE_WRITE;
389 int rv = stream->OpenSync(temp_file_path(), flags); 411 int rv = stream->OpenSync(temp_file_path(), flags);
390 EXPECT_EQ(OK, rv); 412 EXPECT_EQ(OK, rv);
391 413
392 int64 file_size; 414 int64 file_size;
393 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 415 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
394 EXPECT_TRUE(ok); 416 EXPECT_TRUE(ok);
395 EXPECT_EQ(0, file_size); 417 EXPECT_EQ(0, file_size);
396 418
397 rv = stream->WriteSync(kTestData, kTestDataSize); 419 rv = stream->WriteSync(kTestData, kTestDataSize);
398 EXPECT_EQ(kTestDataSize, rv); 420 EXPECT_EQ(kTestDataSize, rv);
399 stream.reset(); 421 stream.reset();
400 422
401 ok = file_util::GetFileSize(temp_file_path(), &file_size); 423 ok = file_util::GetFileSize(temp_file_path(), &file_size);
402 EXPECT_TRUE(ok); 424 EXPECT_TRUE(ok);
403 EXPECT_EQ(kTestDataSize, file_size); 425 EXPECT_EQ(kTestDataSize, file_size);
404 } 426 }
405 427
406 TEST_F(FileStreamTest, AsyncWrite) { 428 TEST_F(FileStreamTest, AsyncWrite) {
407 FileStream stream(NULL); 429 FileStream stream(NULL, file_task_runner());
408 int flags = base::PLATFORM_FILE_CREATE_ALWAYS | 430 int flags = base::PLATFORM_FILE_CREATE_ALWAYS |
409 base::PLATFORM_FILE_WRITE | 431 base::PLATFORM_FILE_WRITE |
410 base::PLATFORM_FILE_ASYNC; 432 base::PLATFORM_FILE_ASYNC;
411 TestCompletionCallback callback; 433 TestCompletionCallback callback;
412 int rv = stream.Open(temp_file_path(), flags, callback.callback()); 434 int rv = stream.Open(temp_file_path(), flags, callback.callback());
413 EXPECT_EQ(ERR_IO_PENDING, rv); 435 EXPECT_EQ(ERR_IO_PENDING, rv);
414 EXPECT_EQ(OK, callback.WaitForResult()); 436 EXPECT_EQ(OK, callback.WaitForResult());
415 437
416 int64 file_size; 438 int64 file_size;
417 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 439 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
(...skipping 15 matching lines...) Expand all
433 break; 455 break;
434 drainable->DidConsume(rv); 456 drainable->DidConsume(rv);
435 total_bytes_written += rv; 457 total_bytes_written += rv;
436 } 458 }
437 ok = file_util::GetFileSize(temp_file_path(), &file_size); 459 ok = file_util::GetFileSize(temp_file_path(), &file_size);
438 EXPECT_TRUE(ok); 460 EXPECT_TRUE(ok);
439 EXPECT_EQ(file_size, total_bytes_written); 461 EXPECT_EQ(file_size, total_bytes_written);
440 } 462 }
441 463
442 TEST_F(FileStreamTest, AsyncWrite_EarlyDelete) { 464 TEST_F(FileStreamTest, AsyncWrite_EarlyDelete) {
443 scoped_ptr<FileStream> stream(new FileStream(NULL)); 465 scoped_ptr<FileStream> stream(new FileStream(NULL, file_task_runner()));
444 int flags = base::PLATFORM_FILE_CREATE_ALWAYS | 466 int flags = base::PLATFORM_FILE_CREATE_ALWAYS |
445 base::PLATFORM_FILE_WRITE | 467 base::PLATFORM_FILE_WRITE |
446 base::PLATFORM_FILE_ASYNC; 468 base::PLATFORM_FILE_ASYNC;
447 TestCompletionCallback callback; 469 TestCompletionCallback callback;
448 int rv = stream->Open(temp_file_path(), flags, callback.callback()); 470 int rv = stream->Open(temp_file_path(), flags, callback.callback());
449 EXPECT_EQ(ERR_IO_PENDING, rv); 471 EXPECT_EQ(ERR_IO_PENDING, rv);
450 EXPECT_EQ(OK, callback.WaitForResult()); 472 EXPECT_EQ(OK, callback.WaitForResult());
451 473
452 int64 file_size; 474 int64 file_size;
453 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 475 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
454 EXPECT_TRUE(ok); 476 EXPECT_TRUE(ok);
455 EXPECT_EQ(0, file_size); 477 EXPECT_EQ(0, file_size);
456 478
457 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); 479 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer();
458 rv = stream->Write(buf.get(), buf->size(), callback.callback()); 480 rv = stream->Write(buf.get(), buf->size(), callback.callback());
459 stream.reset(); 481 stream.reset();
460 if (rv < 0) { 482 if (rv < 0) {
461 EXPECT_EQ(ERR_IO_PENDING, rv); 483 EXPECT_EQ(ERR_IO_PENDING, rv);
462 // The callback should not be called if the request is cancelled. 484 // The callback should not be called if the request is cancelled.
463 base::MessageLoop::current()->RunUntilIdle(); 485 base::RunLoop().RunUntilIdle();
464 EXPECT_FALSE(callback.have_result()); 486 EXPECT_FALSE(callback.have_result());
465 } else { 487 } else {
466 ok = file_util::GetFileSize(temp_file_path(), &file_size); 488 ok = file_util::GetFileSize(temp_file_path(), &file_size);
467 EXPECT_TRUE(ok); 489 EXPECT_TRUE(ok);
468 EXPECT_EQ(file_size, rv); 490 EXPECT_EQ(file_size, rv);
469 } 491 }
470 } 492 }
471 493
472 TEST_F(FileStreamTest, BasicWrite_FromOffset) { 494 TEST_F(FileStreamTest, BasicWrite_FromOffset) {
473 scoped_ptr<FileStream> stream(new FileStream(NULL)); 495 scoped_ptr<FileStream> stream(new FileStream(NULL, file_task_runner()));
474 int flags = base::PLATFORM_FILE_OPEN | 496 int flags = base::PLATFORM_FILE_OPEN |
475 base::PLATFORM_FILE_WRITE; 497 base::PLATFORM_FILE_WRITE;
476 int rv = stream->OpenSync(temp_file_path(), flags); 498 int rv = stream->OpenSync(temp_file_path(), flags);
477 EXPECT_EQ(OK, rv); 499 EXPECT_EQ(OK, rv);
478 500
479 int64 file_size; 501 int64 file_size;
480 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 502 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
481 EXPECT_TRUE(ok); 503 EXPECT_TRUE(ok);
482 EXPECT_EQ(kTestDataSize, file_size); 504 EXPECT_EQ(kTestDataSize, file_size);
483 505
484 const int64 kOffset = 0; 506 const int64 kOffset = 0;
485 int64 new_offset = stream->SeekSync(FROM_END, kOffset); 507 int64 new_offset = stream->SeekSync(FROM_END, kOffset);
486 EXPECT_EQ(kTestDataSize, new_offset); 508 EXPECT_EQ(kTestDataSize, new_offset);
487 509
488 rv = stream->WriteSync(kTestData, kTestDataSize); 510 rv = stream->WriteSync(kTestData, kTestDataSize);
489 EXPECT_EQ(kTestDataSize, rv); 511 EXPECT_EQ(kTestDataSize, rv);
490 stream.reset(); 512 stream.reset();
491 513
492 ok = file_util::GetFileSize(temp_file_path(), &file_size); 514 ok = file_util::GetFileSize(temp_file_path(), &file_size);
493 EXPECT_TRUE(ok); 515 EXPECT_TRUE(ok);
494 EXPECT_EQ(kTestDataSize * 2, file_size); 516 EXPECT_EQ(kTestDataSize * 2, file_size);
495 } 517 }
496 518
497 TEST_F(FileStreamTest, AsyncWrite_FromOffset) { 519 TEST_F(FileStreamTest, AsyncWrite_FromOffset) {
498 int64 file_size; 520 int64 file_size;
499 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 521 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
500 EXPECT_TRUE(ok); 522 EXPECT_TRUE(ok);
501 523
502 FileStream stream(NULL); 524 FileStream stream(NULL, file_task_runner());
503 int flags = base::PLATFORM_FILE_OPEN | 525 int flags = base::PLATFORM_FILE_OPEN |
504 base::PLATFORM_FILE_WRITE | 526 base::PLATFORM_FILE_WRITE |
505 base::PLATFORM_FILE_ASYNC; 527 base::PLATFORM_FILE_ASYNC;
506 TestCompletionCallback callback; 528 TestCompletionCallback callback;
507 int rv = stream.Open(temp_file_path(), flags, callback.callback()); 529 int rv = stream.Open(temp_file_path(), flags, callback.callback());
508 EXPECT_EQ(ERR_IO_PENDING, rv); 530 EXPECT_EQ(ERR_IO_PENDING, rv);
509 EXPECT_EQ(OK, callback.WaitForResult()); 531 EXPECT_EQ(OK, callback.WaitForResult());
510 532
511 TestInt64CompletionCallback callback64; 533 TestInt64CompletionCallback callback64;
512 const int64 kOffset = 0; 534 const int64 kOffset = 0;
(...skipping 21 matching lines...) Expand all
534 ok = file_util::GetFileSize(temp_file_path(), &file_size); 556 ok = file_util::GetFileSize(temp_file_path(), &file_size);
535 EXPECT_TRUE(ok); 557 EXPECT_TRUE(ok);
536 EXPECT_EQ(file_size, kTestDataSize * 2); 558 EXPECT_EQ(file_size, kTestDataSize * 2);
537 } 559 }
538 560
539 TEST_F(FileStreamTest, BasicReadWrite) { 561 TEST_F(FileStreamTest, BasicReadWrite) {
540 int64 file_size; 562 int64 file_size;
541 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 563 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
542 EXPECT_TRUE(ok); 564 EXPECT_TRUE(ok);
543 565
544 scoped_ptr<FileStream> stream(new FileStream(NULL)); 566 scoped_ptr<FileStream> stream(new FileStream(NULL, file_task_runner()));
545 int flags = base::PLATFORM_FILE_OPEN | 567 int flags = base::PLATFORM_FILE_OPEN |
546 base::PLATFORM_FILE_READ | 568 base::PLATFORM_FILE_READ |
547 base::PLATFORM_FILE_WRITE; 569 base::PLATFORM_FILE_WRITE;
548 int rv = stream->OpenSync(temp_file_path(), flags); 570 int rv = stream->OpenSync(temp_file_path(), flags);
549 EXPECT_EQ(OK, rv); 571 EXPECT_EQ(OK, rv);
550 572
551 int64 total_bytes_avail = stream->Available(); 573 int64 total_bytes_avail = stream->Available();
552 EXPECT_EQ(file_size, total_bytes_avail); 574 EXPECT_EQ(file_size, total_bytes_avail);
553 575
554 int total_bytes_read = 0; 576 int total_bytes_read = 0;
(...skipping 18 matching lines...) Expand all
573 ok = file_util::GetFileSize(temp_file_path(), &file_size); 595 ok = file_util::GetFileSize(temp_file_path(), &file_size);
574 EXPECT_TRUE(ok); 596 EXPECT_TRUE(ok);
575 EXPECT_EQ(kTestDataSize * 2, file_size); 597 EXPECT_EQ(kTestDataSize * 2, file_size);
576 } 598 }
577 599
578 TEST_F(FileStreamTest, BasicWriteRead) { 600 TEST_F(FileStreamTest, BasicWriteRead) {
579 int64 file_size; 601 int64 file_size;
580 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 602 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
581 EXPECT_TRUE(ok); 603 EXPECT_TRUE(ok);
582 604
583 scoped_ptr<FileStream> stream(new FileStream(NULL)); 605 scoped_ptr<FileStream> stream(new FileStream(NULL, file_task_runner()));
584 int flags = base::PLATFORM_FILE_OPEN | 606 int flags = base::PLATFORM_FILE_OPEN |
585 base::PLATFORM_FILE_READ | 607 base::PLATFORM_FILE_READ |
586 base::PLATFORM_FILE_WRITE; 608 base::PLATFORM_FILE_WRITE;
587 int rv = stream->OpenSync(temp_file_path(), flags); 609 int rv = stream->OpenSync(temp_file_path(), flags);
588 EXPECT_EQ(OK, rv); 610 EXPECT_EQ(OK, rv);
589 611
590 int64 total_bytes_avail = stream->Available(); 612 int64 total_bytes_avail = stream->Available();
591 EXPECT_EQ(file_size, total_bytes_avail); 613 EXPECT_EQ(file_size, total_bytes_avail);
592 614
593 int64 offset = stream->SeekSync(FROM_END, 0); 615 int64 offset = stream->SeekSync(FROM_END, 0);
(...skipping 27 matching lines...) Expand all
621 const std::string kExpectedFileData = 643 const std::string kExpectedFileData =
622 std::string(kTestData) + std::string(kTestData); 644 std::string(kTestData) + std::string(kTestData);
623 EXPECT_EQ(kExpectedFileData, data_read); 645 EXPECT_EQ(kExpectedFileData, data_read);
624 } 646 }
625 647
626 TEST_F(FileStreamTest, BasicAsyncReadWrite) { 648 TEST_F(FileStreamTest, BasicAsyncReadWrite) {
627 int64 file_size; 649 int64 file_size;
628 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 650 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
629 EXPECT_TRUE(ok); 651 EXPECT_TRUE(ok);
630 652
631 scoped_ptr<FileStream> stream(new FileStream(NULL)); 653 scoped_ptr<FileStream> stream(new FileStream(NULL, file_task_runner()));
632 int flags = base::PLATFORM_FILE_OPEN | 654 int flags = base::PLATFORM_FILE_OPEN |
633 base::PLATFORM_FILE_READ | 655 base::PLATFORM_FILE_READ |
634 base::PLATFORM_FILE_WRITE | 656 base::PLATFORM_FILE_WRITE |
635 base::PLATFORM_FILE_ASYNC; 657 base::PLATFORM_FILE_ASYNC;
636 TestCompletionCallback callback; 658 TestCompletionCallback callback;
637 int rv = stream->Open(temp_file_path(), flags, callback.callback()); 659 int rv = stream->Open(temp_file_path(), flags, callback.callback());
638 EXPECT_EQ(ERR_IO_PENDING, rv); 660 EXPECT_EQ(ERR_IO_PENDING, rv);
639 EXPECT_EQ(OK, callback.WaitForResult()); 661 EXPECT_EQ(OK, callback.WaitForResult());
640 662
641 int64 total_bytes_avail = stream->Available(); 663 int64 total_bytes_avail = stream->Available();
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
680 ok = file_util::GetFileSize(temp_file_path(), &file_size); 702 ok = file_util::GetFileSize(temp_file_path(), &file_size);
681 EXPECT_TRUE(ok); 703 EXPECT_TRUE(ok);
682 EXPECT_EQ(kTestDataSize * 2, file_size); 704 EXPECT_EQ(kTestDataSize * 2, file_size);
683 } 705 }
684 706
685 TEST_F(FileStreamTest, BasicAsyncWriteRead) { 707 TEST_F(FileStreamTest, BasicAsyncWriteRead) {
686 int64 file_size; 708 int64 file_size;
687 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 709 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
688 EXPECT_TRUE(ok); 710 EXPECT_TRUE(ok);
689 711
690 scoped_ptr<FileStream> stream(new FileStream(NULL)); 712 scoped_ptr<FileStream> stream(new FileStream(NULL, file_task_runner()));
691 int flags = base::PLATFORM_FILE_OPEN | 713 int flags = base::PLATFORM_FILE_OPEN |
692 base::PLATFORM_FILE_READ | 714 base::PLATFORM_FILE_READ |
693 base::PLATFORM_FILE_WRITE | 715 base::PLATFORM_FILE_WRITE |
694 base::PLATFORM_FILE_ASYNC; 716 base::PLATFORM_FILE_ASYNC;
695 TestCompletionCallback callback; 717 TestCompletionCallback callback;
696 int rv = stream->Open(temp_file_path(), flags, callback.callback()); 718 int rv = stream->Open(temp_file_path(), flags, callback.callback());
697 EXPECT_EQ(ERR_IO_PENDING, rv); 719 EXPECT_EQ(ERR_IO_PENDING, rv);
698 EXPECT_EQ(OK, callback.WaitForResult()); 720 EXPECT_EQ(OK, callback.WaitForResult());
699 721
700 int64 total_bytes_avail = stream->Available(); 722 int64 total_bytes_avail = stream->Available();
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
771 data_read_(data_read), 793 data_read_(data_read),
772 callback_(base::Bind(&TestWriteReadCompletionCallback::OnComplete, 794 callback_(base::Bind(&TestWriteReadCompletionCallback::OnComplete,
773 base::Unretained(this))), 795 base::Unretained(this))),
774 test_data_(CreateTestDataBuffer()), 796 test_data_(CreateTestDataBuffer()),
775 drainable_(new DrainableIOBuffer(test_data_.get(), kTestDataSize)) {} 797 drainable_(new DrainableIOBuffer(test_data_.get(), kTestDataSize)) {}
776 798
777 int WaitForResult() { 799 int WaitForResult() {
778 DCHECK(!waiting_for_result_); 800 DCHECK(!waiting_for_result_);
779 while (!have_result_) { 801 while (!have_result_) {
780 waiting_for_result_ = true; 802 waiting_for_result_ = true;
781 base::MessageLoop::current()->Run(); 803 base::RunLoop().Run();
782 waiting_for_result_ = false; 804 waiting_for_result_ = false;
783 } 805 }
784 have_result_ = false; // auto-reset for next callback 806 have_result_ = false; // auto-reset for next callback
785 return result_; 807 return result_;
786 } 808 }
787 809
788 const CompletionCallback& callback() const { return callback_; } 810 const CompletionCallback& callback() const { return callback_; }
789 811
790 private: 812 private:
791 void OnComplete(int result) { 813 void OnComplete(int result) {
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
846 scoped_refptr<DrainableIOBuffer> drainable_; 868 scoped_refptr<DrainableIOBuffer> drainable_;
847 869
848 DISALLOW_COPY_AND_ASSIGN(TestWriteReadCompletionCallback); 870 DISALLOW_COPY_AND_ASSIGN(TestWriteReadCompletionCallback);
849 }; 871 };
850 872
851 TEST_F(FileStreamTest, AsyncWriteRead) { 873 TEST_F(FileStreamTest, AsyncWriteRead) {
852 int64 file_size; 874 int64 file_size;
853 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 875 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
854 EXPECT_TRUE(ok); 876 EXPECT_TRUE(ok);
855 877
856 scoped_ptr<FileStream> stream(new FileStream(NULL)); 878 scoped_ptr<FileStream> stream(new FileStream(NULL, file_task_runner()));
857 int flags = base::PLATFORM_FILE_OPEN | 879 int flags = base::PLATFORM_FILE_OPEN |
858 base::PLATFORM_FILE_READ | 880 base::PLATFORM_FILE_READ |
859 base::PLATFORM_FILE_WRITE | 881 base::PLATFORM_FILE_WRITE |
860 base::PLATFORM_FILE_ASYNC; 882 base::PLATFORM_FILE_ASYNC;
861 TestCompletionCallback open_callback; 883 TestCompletionCallback open_callback;
862 int rv = stream->Open(temp_file_path(), flags, open_callback.callback()); 884 int rv = stream->Open(temp_file_path(), flags, open_callback.callback());
863 EXPECT_EQ(ERR_IO_PENDING, rv); 885 EXPECT_EQ(ERR_IO_PENDING, rv);
864 EXPECT_EQ(OK, open_callback.WaitForResult()); 886 EXPECT_EQ(OK, open_callback.WaitForResult());
865 887
866 int64 total_bytes_avail = stream->Available(); 888 int64 total_bytes_avail = stream->Available();
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
904 total_bytes_written_(total_bytes_written), 926 total_bytes_written_(total_bytes_written),
905 callback_(base::Bind(&TestWriteCloseCompletionCallback::OnComplete, 927 callback_(base::Bind(&TestWriteCloseCompletionCallback::OnComplete,
906 base::Unretained(this))), 928 base::Unretained(this))),
907 test_data_(CreateTestDataBuffer()), 929 test_data_(CreateTestDataBuffer()),
908 drainable_(new DrainableIOBuffer(test_data_.get(), kTestDataSize)) {} 930 drainable_(new DrainableIOBuffer(test_data_.get(), kTestDataSize)) {}
909 931
910 int WaitForResult() { 932 int WaitForResult() {
911 DCHECK(!waiting_for_result_); 933 DCHECK(!waiting_for_result_);
912 while (!have_result_) { 934 while (!have_result_) {
913 waiting_for_result_ = true; 935 waiting_for_result_ = true;
914 base::MessageLoop::current()->Run(); 936 base::RunLoop().Run();
915 waiting_for_result_ = false; 937 waiting_for_result_ = false;
916 } 938 }
917 have_result_ = false; // auto-reset for next callback 939 have_result_ = false; // auto-reset for next callback
918 return result_; 940 return result_;
919 } 941 }
920 942
921 const CompletionCallback& callback() const { return callback_; } 943 const CompletionCallback& callback() const { return callback_; }
922 944
923 private: 945 private:
924 void OnComplete(int result) { 946 void OnComplete(int result) {
(...skipping 30 matching lines...) Expand all
955 scoped_refptr<DrainableIOBuffer> drainable_; 977 scoped_refptr<DrainableIOBuffer> drainable_;
956 978
957 DISALLOW_COPY_AND_ASSIGN(TestWriteCloseCompletionCallback); 979 DISALLOW_COPY_AND_ASSIGN(TestWriteCloseCompletionCallback);
958 }; 980 };
959 981
960 TEST_F(FileStreamTest, AsyncWriteClose) { 982 TEST_F(FileStreamTest, AsyncWriteClose) {
961 int64 file_size; 983 int64 file_size;
962 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 984 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
963 EXPECT_TRUE(ok); 985 EXPECT_TRUE(ok);
964 986
965 scoped_ptr<FileStream> stream(new FileStream(NULL)); 987 scoped_ptr<FileStream> stream(new FileStream(NULL, file_task_runner()));
966 int flags = base::PLATFORM_FILE_OPEN | 988 int flags = base::PLATFORM_FILE_OPEN |
967 base::PLATFORM_FILE_READ | 989 base::PLATFORM_FILE_READ |
968 base::PLATFORM_FILE_WRITE | 990 base::PLATFORM_FILE_WRITE |
969 base::PLATFORM_FILE_ASYNC; 991 base::PLATFORM_FILE_ASYNC;
970 TestCompletionCallback open_callback; 992 TestCompletionCallback open_callback;
971 int rv = stream->Open(temp_file_path(), flags, open_callback.callback()); 993 int rv = stream->Open(temp_file_path(), flags, open_callback.callback());
972 EXPECT_EQ(ERR_IO_PENDING, rv); 994 EXPECT_EQ(ERR_IO_PENDING, rv);
973 EXPECT_EQ(OK, open_callback.WaitForResult()); 995 EXPECT_EQ(OK, open_callback.WaitForResult());
974 996
975 int64 total_bytes_avail = stream->Available(); 997 int64 total_bytes_avail = stream->Available();
(...skipping 16 matching lines...) Expand all
992 1014
993 ok = file_util::GetFileSize(temp_file_path(), &file_size); 1015 ok = file_util::GetFileSize(temp_file_path(), &file_size);
994 EXPECT_TRUE(ok); 1016 EXPECT_TRUE(ok);
995 EXPECT_EQ(kTestDataSize * 2, file_size); 1017 EXPECT_EQ(kTestDataSize * 2, file_size);
996 } 1018 }
997 1019
998 // Tests truncating a file. 1020 // Tests truncating a file.
999 TEST_F(FileStreamTest, Truncate) { 1021 TEST_F(FileStreamTest, Truncate) {
1000 int flags = base::PLATFORM_FILE_CREATE_ALWAYS | base::PLATFORM_FILE_WRITE; 1022 int flags = base::PLATFORM_FILE_CREATE_ALWAYS | base::PLATFORM_FILE_WRITE;
1001 1023
1002 scoped_ptr<FileStream> write_stream(new FileStream(NULL)); 1024 scoped_ptr<FileStream> write_stream(new FileStream(NULL, file_task_runner()));
1003 ASSERT_EQ(OK, write_stream->OpenSync(temp_file_path(), flags)); 1025 ASSERT_EQ(OK, write_stream->OpenSync(temp_file_path(), flags));
1004 1026
1005 // Write some data to the file. 1027 // Write some data to the file.
1006 const char test_data[] = "0123456789"; 1028 const char test_data[] = "0123456789";
1007 write_stream->WriteSync(test_data, arraysize(test_data)); 1029 write_stream->WriteSync(test_data, arraysize(test_data));
1008 1030
1009 // Truncate the file. 1031 // Truncate the file.
1010 ASSERT_EQ(4, write_stream->Truncate(4)); 1032 ASSERT_EQ(4, write_stream->Truncate(4));
1011 1033
1012 // Write again. 1034 // Write again.
1013 write_stream->WriteSync(test_data, 4); 1035 write_stream->WriteSync(test_data, 4);
1014 1036
1015 // Close the stream. 1037 // Close the stream.
1016 write_stream.reset(); 1038 write_stream.reset();
1017 1039
1018 // Read in the contents and make sure we get back what we expected. 1040 // Read in the contents and make sure we get back what we expected.
1019 std::string read_contents; 1041 std::string read_contents;
1020 EXPECT_TRUE(base::ReadFileToString(temp_file_path(), &read_contents)); 1042 EXPECT_TRUE(base::ReadFileToString(temp_file_path(), &read_contents));
1021 1043
1022 EXPECT_EQ("01230123", read_contents); 1044 EXPECT_EQ("01230123", read_contents);
1023 } 1045 }
1024 1046
1025 TEST_F(FileStreamTest, AsyncOpenAndDelete) { 1047 TEST_F(FileStreamTest, AsyncOpenAndDelete) {
1026 scoped_ptr<FileStream> stream(new FileStream(NULL)); 1048 scoped_ptr<FileStream> stream(new FileStream(NULL, file_task_runner()));
1027 int flags = base::PLATFORM_FILE_OPEN | 1049 int flags = base::PLATFORM_FILE_OPEN |
1028 base::PLATFORM_FILE_WRITE | 1050 base::PLATFORM_FILE_WRITE |
1029 base::PLATFORM_FILE_ASYNC; 1051 base::PLATFORM_FILE_ASYNC;
1030 TestCompletionCallback open_callback; 1052 TestCompletionCallback open_callback;
1031 int rv = stream->Open(temp_file_path(), flags, open_callback.callback()); 1053 int rv = stream->Open(temp_file_path(), flags, open_callback.callback());
1032 EXPECT_EQ(ERR_IO_PENDING, rv); 1054 EXPECT_EQ(ERR_IO_PENDING, rv);
1033 1055
1034 // Delete the stream without waiting for the open operation to be 1056 // Delete the stream without waiting for the open operation to be
1035 // complete. Should be safe. 1057 // complete. Should be safe.
1036 stream.reset(); 1058 stream.reset();
1037 // open_callback won't be called. 1059 // open_callback won't be called.
1038 base::MessageLoop::current()->RunUntilIdle(); 1060 base::RunLoop().RunUntilIdle();
1039 EXPECT_FALSE(open_callback.have_result()); 1061 EXPECT_FALSE(open_callback.have_result());
1040 } 1062 }
1041 1063
1042 // Verify that async Write() errors are mapped correctly. 1064 // Verify that async Write() errors are mapped correctly.
1043 TEST_F(FileStreamTest, AsyncWriteError) { 1065 TEST_F(FileStreamTest, AsyncWriteError) {
1044 scoped_ptr<FileStream> stream(new FileStream(NULL)); 1066 scoped_ptr<FileStream> stream(new FileStream(NULL, file_task_runner()));
1045 int flags = base::PLATFORM_FILE_CREATE_ALWAYS | 1067 int flags = base::PLATFORM_FILE_CREATE_ALWAYS |
1046 base::PLATFORM_FILE_WRITE | 1068 base::PLATFORM_FILE_WRITE |
1047 base::PLATFORM_FILE_ASYNC; 1069 base::PLATFORM_FILE_ASYNC;
1048 TestCompletionCallback callback; 1070 TestCompletionCallback callback;
1049 int rv = stream->Open(temp_file_path(), flags, callback.callback()); 1071 int rv = stream->Open(temp_file_path(), flags, callback.callback());
1050 EXPECT_EQ(ERR_IO_PENDING, rv); 1072 EXPECT_EQ(ERR_IO_PENDING, rv);
1051 EXPECT_EQ(OK, callback.WaitForResult()); 1073 EXPECT_EQ(OK, callback.WaitForResult());
1052 1074
1053 // Try passing NULL buffer to Write() and check that it fails. 1075 // Try passing NULL buffer to Write() and check that it fails.
1054 scoped_refptr<IOBuffer> buf = new WrappedIOBuffer(NULL); 1076 scoped_refptr<IOBuffer> buf = new WrappedIOBuffer(NULL);
1055 rv = stream->Write(buf.get(), 1, callback.callback()); 1077 rv = stream->Write(buf.get(), 1, callback.callback());
1056 if (rv == ERR_IO_PENDING) 1078 if (rv == ERR_IO_PENDING)
1057 rv = callback.WaitForResult(); 1079 rv = callback.WaitForResult();
1058 EXPECT_LT(rv, 0); 1080 EXPECT_LT(rv, 0);
1059 } 1081 }
1060 1082
1061 // Verify that async Read() errors are mapped correctly. 1083 // Verify that async Read() errors are mapped correctly.
1062 TEST_F(FileStreamTest, AsyncReadError) { 1084 TEST_F(FileStreamTest, AsyncReadError) {
1063 scoped_ptr<FileStream> stream(new FileStream(NULL)); 1085 scoped_ptr<FileStream> stream(new FileStream(NULL, file_task_runner()));
1064 int flags = base::PLATFORM_FILE_OPEN | 1086 int flags = base::PLATFORM_FILE_OPEN |
1065 base::PLATFORM_FILE_READ | 1087 base::PLATFORM_FILE_READ |
1066 base::PLATFORM_FILE_ASYNC; 1088 base::PLATFORM_FILE_ASYNC;
1067 TestCompletionCallback callback; 1089 TestCompletionCallback callback;
1068 int rv = stream->Open(temp_file_path(), flags, callback.callback()); 1090 int rv = stream->Open(temp_file_path(), flags, callback.callback());
1069 EXPECT_EQ(ERR_IO_PENDING, rv); 1091 EXPECT_EQ(ERR_IO_PENDING, rv);
1070 EXPECT_EQ(OK, callback.WaitForResult()); 1092 EXPECT_EQ(OK, callback.WaitForResult());
1071 1093
1072 // Try passing NULL buffer to Read() and check that it fails. 1094 // Try passing NULL buffer to Read() and check that it fails.
1073 scoped_refptr<IOBuffer> buf = new WrappedIOBuffer(NULL); 1095 scoped_refptr<IOBuffer> buf = new WrappedIOBuffer(NULL);
1074 rv = stream->Read(buf.get(), 1, callback.callback()); 1096 rv = stream->Read(buf.get(), 1, callback.callback());
1075 if (rv == ERR_IO_PENDING) 1097 if (rv == ERR_IO_PENDING)
1076 rv = callback.WaitForResult(); 1098 rv = callback.WaitForResult();
1077 EXPECT_LT(rv, 0); 1099 EXPECT_LT(rv, 0);
1078 } 1100 }
1079 1101
1080 } // namespace 1102 } // namespace
1081 1103
1082 } // namespace net 1104 } // namespace net
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698