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

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

Issue 266243004: Clang format slam. Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 7 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
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/files/file.h" 10 #include "base/files/file.h"
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 64
65 private: 65 private:
66 base::FilePath temp_file_path_; 66 base::FilePath temp_file_path_;
67 }; 67 };
68 68
69 namespace { 69 namespace {
70 70
71 TEST_F(FileStreamTest, AsyncOpenExplicitClose) { 71 TEST_F(FileStreamTest, AsyncOpenExplicitClose) {
72 TestCompletionCallback callback; 72 TestCompletionCallback callback;
73 FileStream stream(base::MessageLoopProxy::current()); 73 FileStream stream(base::MessageLoopProxy::current());
74 int flags = base::File::FLAG_OPEN | 74 int flags =
75 base::File::FLAG_READ | 75 base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_ASYNC;
76 base::File::FLAG_ASYNC;
77 int rv = stream.Open(temp_file_path(), flags, callback.callback()); 76 int rv = stream.Open(temp_file_path(), flags, callback.callback());
78 EXPECT_EQ(ERR_IO_PENDING, rv); 77 EXPECT_EQ(ERR_IO_PENDING, rv);
79 EXPECT_EQ(OK, callback.WaitForResult()); 78 EXPECT_EQ(OK, callback.WaitForResult());
80 EXPECT_TRUE(stream.IsOpen()); 79 EXPECT_TRUE(stream.IsOpen());
81 EXPECT_TRUE(stream.GetFileForTesting().IsValid()); 80 EXPECT_TRUE(stream.GetFileForTesting().IsValid());
82 EXPECT_EQ(ERR_IO_PENDING, stream.Close(callback.callback())); 81 EXPECT_EQ(ERR_IO_PENDING, stream.Close(callback.callback()));
83 EXPECT_EQ(OK, callback.WaitForResult()); 82 EXPECT_EQ(OK, callback.WaitForResult());
84 EXPECT_FALSE(stream.IsOpen()); 83 EXPECT_FALSE(stream.IsOpen());
85 EXPECT_FALSE(stream.GetFileForTesting().IsValid()); 84 EXPECT_FALSE(stream.GetFileForTesting().IsValid());
86 } 85 }
87 86
88 TEST_F(FileStreamTest, AsyncOpenExplicitCloseOrphaned) { 87 TEST_F(FileStreamTest, AsyncOpenExplicitCloseOrphaned) {
89 TestCompletionCallback callback; 88 TestCompletionCallback callback;
90 scoped_ptr<FileStream> stream(new FileStream( 89 scoped_ptr<FileStream> stream(
91 base::MessageLoopProxy::current())); 90 new FileStream(base::MessageLoopProxy::current()));
92 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ | 91 int flags =
93 base::File::FLAG_ASYNC; 92 base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_ASYNC;
94 int rv = stream->Open(temp_file_path(), flags, callback.callback()); 93 int rv = stream->Open(temp_file_path(), flags, callback.callback());
95 EXPECT_EQ(ERR_IO_PENDING, rv); 94 EXPECT_EQ(ERR_IO_PENDING, rv);
96 EXPECT_EQ(OK, callback.WaitForResult()); 95 EXPECT_EQ(OK, callback.WaitForResult());
97 EXPECT_TRUE(stream->IsOpen()); 96 EXPECT_TRUE(stream->IsOpen());
98 EXPECT_TRUE(stream->GetFileForTesting().IsValid()); 97 EXPECT_TRUE(stream->GetFileForTesting().IsValid());
99 EXPECT_EQ(ERR_IO_PENDING, stream->Close(callback.callback())); 98 EXPECT_EQ(ERR_IO_PENDING, stream->Close(callback.callback()));
100 stream.reset(); 99 stream.reset();
101 // File isn't actually closed yet. 100 // File isn't actually closed yet.
102 base::RunLoop runloop; 101 base::RunLoop runloop;
103 runloop.RunUntilIdle(); 102 runloop.RunUntilIdle();
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 flags = base::File::FLAG_OPEN_ALWAYS | base::File::FLAG_WRITE | 134 flags = base::File::FLAG_OPEN_ALWAYS | base::File::FLAG_WRITE |
136 base::File::FLAG_ASYNC; 135 base::File::FLAG_ASYNC;
137 file.Initialize(temp_file_path(), flags); 136 file.Initialize(temp_file_path(), flags);
138 137
139 scoped_ptr<FileStream> write_stream( 138 scoped_ptr<FileStream> write_stream(
140 new FileStream(file.Pass(), base::MessageLoopProxy::current())); 139 new FileStream(file.Pass(), base::MessageLoopProxy::current()));
141 ASSERT_EQ(ERR_IO_PENDING, 140 ASSERT_EQ(ERR_IO_PENDING,
142 write_stream->Seek(FROM_BEGIN, 0, callback64.callback())); 141 write_stream->Seek(FROM_BEGIN, 0, callback64.callback()));
143 ASSERT_EQ(0, callback64.WaitForResult()); 142 ASSERT_EQ(0, callback64.WaitForResult());
144 scoped_refptr<IOBufferWithSize> write_buffer = CreateTestDataBuffer(); 143 scoped_refptr<IOBufferWithSize> write_buffer = CreateTestDataBuffer();
145 rv = write_stream->Write(write_buffer.get(), kTestDataSize, 144 rv = write_stream->Write(
146 callback.callback()); 145 write_buffer.get(), kTestDataSize, callback.callback());
147 ASSERT_EQ(kTestDataSize, callback.GetResult(rv)); 146 ASSERT_EQ(kTestDataSize, callback.GetResult(rv));
148 write_stream.reset(); 147 write_stream.reset();
149 148
150 // Read into buffer and compare to make sure the handle worked fine. 149 // Read into buffer and compare to make sure the handle worked fine.
151 ASSERT_EQ(kTestDataSize, 150 ASSERT_EQ(
152 base::ReadFile(temp_file_path(), read_buffer->data(), 151 kTestDataSize,
153 kTestDataSize)); 152 base::ReadFile(temp_file_path(), read_buffer->data(), kTestDataSize));
154 ASSERT_EQ(0, memcmp(kTestData, read_buffer->data(), kTestDataSize)); 153 ASSERT_EQ(0, memcmp(kTestData, read_buffer->data(), kTestDataSize));
155 } 154 }
156 155
157 TEST_F(FileStreamTest, UseClosedStream) { 156 TEST_F(FileStreamTest, UseClosedStream) {
158 int rv = 0; 157 int rv = 0;
159 TestCompletionCallback callback; 158 TestCompletionCallback callback;
160 TestInt64CompletionCallback callback64; 159 TestInt64CompletionCallback callback64;
161 160
162 FileStream stream(base::MessageLoopProxy::current()); 161 FileStream stream(base::MessageLoopProxy::current());
163 162
164 EXPECT_FALSE(stream.IsOpen()); 163 EXPECT_FALSE(stream.IsOpen());
165 164
166 // Try seeking... 165 // Try seeking...
167 rv = stream.Seek(FROM_BEGIN, 5, callback64.callback()); 166 rv = stream.Seek(FROM_BEGIN, 5, callback64.callback());
168 EXPECT_EQ(ERR_UNEXPECTED, callback64.GetResult(rv)); 167 EXPECT_EQ(ERR_UNEXPECTED, callback64.GetResult(rv));
169 168
170 // Try reading... 169 // Try reading...
171 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(10); 170 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(10);
172 rv = stream.Read(buf, buf->size(), callback.callback()); 171 rv = stream.Read(buf, buf->size(), callback.callback());
173 EXPECT_EQ(ERR_UNEXPECTED, callback.GetResult(rv)); 172 EXPECT_EQ(ERR_UNEXPECTED, callback.GetResult(rv));
174 } 173 }
175 174
176 TEST_F(FileStreamTest, AsyncRead) { 175 TEST_F(FileStreamTest, AsyncRead) {
177 int64 file_size; 176 int64 file_size;
178 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size)); 177 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size));
179 178
180 FileStream stream(base::MessageLoopProxy::current()); 179 FileStream stream(base::MessageLoopProxy::current());
181 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ | 180 int flags =
182 base::File::FLAG_ASYNC; 181 base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_ASYNC;
183 TestCompletionCallback callback; 182 TestCompletionCallback callback;
184 int rv = stream.Open(temp_file_path(), flags, callback.callback()); 183 int rv = stream.Open(temp_file_path(), flags, callback.callback());
185 EXPECT_EQ(ERR_IO_PENDING, rv); 184 EXPECT_EQ(ERR_IO_PENDING, rv);
186 EXPECT_EQ(OK, callback.WaitForResult()); 185 EXPECT_EQ(OK, callback.WaitForResult());
187 186
188 int total_bytes_read = 0; 187 int total_bytes_read = 0;
189 188
190 std::string data_read; 189 std::string data_read;
191 for (;;) { 190 for (;;) {
192 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4); 191 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4);
193 rv = stream.Read(buf.get(), buf->size(), callback.callback()); 192 rv = stream.Read(buf.get(), buf->size(), callback.callback());
194 if (rv == ERR_IO_PENDING) 193 if (rv == ERR_IO_PENDING)
195 rv = callback.WaitForResult(); 194 rv = callback.WaitForResult();
196 EXPECT_LE(0, rv); 195 EXPECT_LE(0, rv);
197 if (rv <= 0) 196 if (rv <= 0)
198 break; 197 break;
199 total_bytes_read += rv; 198 total_bytes_read += rv;
200 data_read.append(buf->data(), rv); 199 data_read.append(buf->data(), rv);
201 } 200 }
202 EXPECT_EQ(file_size, total_bytes_read); 201 EXPECT_EQ(file_size, total_bytes_read);
203 EXPECT_EQ(kTestData, data_read); 202 EXPECT_EQ(kTestData, data_read);
204 } 203 }
205 204
206 TEST_F(FileStreamTest, AsyncRead_EarlyDelete) { 205 TEST_F(FileStreamTest, AsyncRead_EarlyDelete) {
207 int64 file_size; 206 int64 file_size;
208 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size)); 207 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size));
209 208
210 scoped_ptr<FileStream> stream( 209 scoped_ptr<FileStream> stream(
211 new FileStream(base::MessageLoopProxy::current())); 210 new FileStream(base::MessageLoopProxy::current()));
212 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ | 211 int flags =
213 base::File::FLAG_ASYNC; 212 base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_ASYNC;
214 TestCompletionCallback callback; 213 TestCompletionCallback callback;
215 int rv = stream->Open(temp_file_path(), flags, callback.callback()); 214 int rv = stream->Open(temp_file_path(), flags, callback.callback());
216 EXPECT_EQ(ERR_IO_PENDING, rv); 215 EXPECT_EQ(ERR_IO_PENDING, rv);
217 EXPECT_EQ(OK, callback.WaitForResult()); 216 EXPECT_EQ(OK, callback.WaitForResult());
218 217
219 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4); 218 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4);
220 rv = stream->Read(buf.get(), buf->size(), callback.callback()); 219 rv = stream->Read(buf.get(), buf->size(), callback.callback());
221 stream.reset(); // Delete instead of closing it. 220 stream.reset(); // Delete instead of closing it.
222 if (rv < 0) { 221 if (rv < 0) {
223 EXPECT_EQ(ERR_IO_PENDING, rv); 222 EXPECT_EQ(ERR_IO_PENDING, rv);
224 // The callback should not be called if the request is cancelled. 223 // The callback should not be called if the request is cancelled.
225 base::RunLoop().RunUntilIdle(); 224 base::RunLoop().RunUntilIdle();
226 EXPECT_FALSE(callback.have_result()); 225 EXPECT_FALSE(callback.have_result());
227 } else { 226 } else {
228 EXPECT_EQ(std::string(kTestData, rv), std::string(buf->data(), rv)); 227 EXPECT_EQ(std::string(kTestData, rv), std::string(buf->data(), rv));
229 } 228 }
230 } 229 }
231 230
232 TEST_F(FileStreamTest, AsyncRead_FromOffset) { 231 TEST_F(FileStreamTest, AsyncRead_FromOffset) {
233 int64 file_size; 232 int64 file_size;
234 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size)); 233 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size));
235 234
236 FileStream stream(base::MessageLoopProxy::current()); 235 FileStream stream(base::MessageLoopProxy::current());
237 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ | 236 int flags =
238 base::File::FLAG_ASYNC; 237 base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_ASYNC;
239 TestCompletionCallback callback; 238 TestCompletionCallback callback;
240 int rv = stream.Open(temp_file_path(), flags, callback.callback()); 239 int rv = stream.Open(temp_file_path(), flags, callback.callback());
241 EXPECT_EQ(ERR_IO_PENDING, rv); 240 EXPECT_EQ(ERR_IO_PENDING, rv);
242 EXPECT_EQ(OK, callback.WaitForResult()); 241 EXPECT_EQ(OK, callback.WaitForResult());
243 242
244 TestInt64CompletionCallback callback64; 243 TestInt64CompletionCallback callback64;
245 const int64 kOffset = 3; 244 const int64 kOffset = 3;
246 rv = stream.Seek(FROM_BEGIN, kOffset, callback64.callback()); 245 rv = stream.Seek(FROM_BEGIN, kOffset, callback64.callback());
247 ASSERT_EQ(ERR_IO_PENDING, rv); 246 ASSERT_EQ(ERR_IO_PENDING, rv);
248 int64 new_offset = callback64.WaitForResult(); 247 int64 new_offset = callback64.WaitForResult();
(...skipping 12 matching lines...) Expand all
261 break; 260 break;
262 total_bytes_read += rv; 261 total_bytes_read += rv;
263 data_read.append(buf->data(), rv); 262 data_read.append(buf->data(), rv);
264 } 263 }
265 EXPECT_EQ(file_size - kOffset, total_bytes_read); 264 EXPECT_EQ(file_size - kOffset, total_bytes_read);
266 EXPECT_EQ(kTestData + kOffset, data_read); 265 EXPECT_EQ(kTestData + kOffset, data_read);
267 } 266 }
268 267
269 TEST_F(FileStreamTest, AsyncSeekAround) { 268 TEST_F(FileStreamTest, AsyncSeekAround) {
270 FileStream stream(base::MessageLoopProxy::current()); 269 FileStream stream(base::MessageLoopProxy::current());
271 int flags = base::File::FLAG_OPEN | base::File::FLAG_ASYNC | 270 int flags =
272 base::File::FLAG_READ; 271 base::File::FLAG_OPEN | base::File::FLAG_ASYNC | base::File::FLAG_READ;
273 TestCompletionCallback callback; 272 TestCompletionCallback callback;
274 int rv = stream.Open(temp_file_path(), flags, callback.callback()); 273 int rv = stream.Open(temp_file_path(), flags, callback.callback());
275 EXPECT_EQ(ERR_IO_PENDING, rv); 274 EXPECT_EQ(ERR_IO_PENDING, rv);
276 EXPECT_EQ(OK, callback.WaitForResult()); 275 EXPECT_EQ(OK, callback.WaitForResult());
277 276
278 TestInt64CompletionCallback callback64; 277 TestInt64CompletionCallback callback64;
279 278
280 const int64 kOffset = 3; 279 const int64 kOffset = 3;
281 rv = stream.Seek(FROM_BEGIN, kOffset, callback64.callback()); 280 rv = stream.Seek(FROM_BEGIN, kOffset, callback64.callback());
282 ASSERT_EQ(ERR_IO_PENDING, rv); 281 ASSERT_EQ(ERR_IO_PENDING, rv);
(...skipping 30 matching lines...) Expand all
313 int64 file_size; 312 int64 file_size;
314 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size)); 313 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size));
315 EXPECT_EQ(0, file_size); 314 EXPECT_EQ(0, file_size);
316 315
317 int total_bytes_written = 0; 316 int total_bytes_written = 0;
318 317
319 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); 318 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer();
320 scoped_refptr<DrainableIOBuffer> drainable = 319 scoped_refptr<DrainableIOBuffer> drainable =
321 new DrainableIOBuffer(buf.get(), buf->size()); 320 new DrainableIOBuffer(buf.get(), buf->size());
322 while (total_bytes_written != kTestDataSize) { 321 while (total_bytes_written != kTestDataSize) {
323 rv = stream.Write(drainable.get(), drainable->BytesRemaining(), 322 rv = stream.Write(
324 callback.callback()); 323 drainable.get(), drainable->BytesRemaining(), callback.callback());
325 if (rv == ERR_IO_PENDING) 324 if (rv == ERR_IO_PENDING)
326 rv = callback.WaitForResult(); 325 rv = callback.WaitForResult();
327 EXPECT_LT(0, rv); 326 EXPECT_LT(0, rv);
328 if (rv <= 0) 327 if (rv <= 0)
329 break; 328 break;
330 drainable->DidConsume(rv); 329 drainable->DidConsume(rv);
331 total_bytes_written += rv; 330 total_bytes_written += rv;
332 } 331 }
333 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size)); 332 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size));
334 EXPECT_EQ(file_size, total_bytes_written); 333 EXPECT_EQ(file_size, total_bytes_written);
(...skipping 25 matching lines...) Expand all
360 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size)); 359 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size));
361 EXPECT_EQ(file_size, rv); 360 EXPECT_EQ(file_size, rv);
362 } 361 }
363 } 362 }
364 363
365 TEST_F(FileStreamTest, AsyncWrite_FromOffset) { 364 TEST_F(FileStreamTest, AsyncWrite_FromOffset) {
366 int64 file_size; 365 int64 file_size;
367 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size)); 366 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size));
368 367
369 FileStream stream(base::MessageLoopProxy::current()); 368 FileStream stream(base::MessageLoopProxy::current());
370 int flags = base::File::FLAG_OPEN | base::File::FLAG_WRITE | 369 int flags =
371 base::File::FLAG_ASYNC; 370 base::File::FLAG_OPEN | base::File::FLAG_WRITE | base::File::FLAG_ASYNC;
372 TestCompletionCallback callback; 371 TestCompletionCallback callback;
373 int rv = stream.Open(temp_file_path(), flags, callback.callback()); 372 int rv = stream.Open(temp_file_path(), flags, callback.callback());
374 EXPECT_EQ(ERR_IO_PENDING, rv); 373 EXPECT_EQ(ERR_IO_PENDING, rv);
375 EXPECT_EQ(OK, callback.WaitForResult()); 374 EXPECT_EQ(OK, callback.WaitForResult());
376 375
377 TestInt64CompletionCallback callback64; 376 TestInt64CompletionCallback callback64;
378 const int64 kOffset = 0; 377 const int64 kOffset = 0;
379 rv = stream.Seek(FROM_END, kOffset, callback64.callback()); 378 rv = stream.Seek(FROM_END, kOffset, callback64.callback());
380 ASSERT_EQ(ERR_IO_PENDING, rv); 379 ASSERT_EQ(ERR_IO_PENDING, rv);
381 int64 new_offset = callback64.WaitForResult(); 380 int64 new_offset = callback64.WaitForResult();
382 EXPECT_EQ(kTestDataSize, new_offset); 381 EXPECT_EQ(kTestDataSize, new_offset);
383 382
384 int total_bytes_written = 0; 383 int total_bytes_written = 0;
385 384
386 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); 385 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer();
387 scoped_refptr<DrainableIOBuffer> drainable = 386 scoped_refptr<DrainableIOBuffer> drainable =
388 new DrainableIOBuffer(buf.get(), buf->size()); 387 new DrainableIOBuffer(buf.get(), buf->size());
389 while (total_bytes_written != kTestDataSize) { 388 while (total_bytes_written != kTestDataSize) {
390 rv = stream.Write(drainable.get(), drainable->BytesRemaining(), 389 rv = stream.Write(
391 callback.callback()); 390 drainable.get(), drainable->BytesRemaining(), callback.callback());
392 if (rv == ERR_IO_PENDING) 391 if (rv == ERR_IO_PENDING)
393 rv = callback.WaitForResult(); 392 rv = callback.WaitForResult();
394 EXPECT_LT(0, rv); 393 EXPECT_LT(0, rv);
395 if (rv <= 0) 394 if (rv <= 0)
396 break; 395 break;
397 drainable->DidConsume(rv); 396 drainable->DidConsume(rv);
398 total_bytes_written += rv; 397 total_bytes_written += rv;
399 } 398 }
400 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size)); 399 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size));
401 EXPECT_EQ(file_size, kTestDataSize * 2); 400 EXPECT_EQ(file_size, kTestDataSize * 2);
(...skipping 28 matching lines...) Expand all
430 } 429 }
431 EXPECT_EQ(file_size, total_bytes_read); 430 EXPECT_EQ(file_size, total_bytes_read);
432 EXPECT_TRUE(data_read == kTestData); 431 EXPECT_TRUE(data_read == kTestData);
433 432
434 int total_bytes_written = 0; 433 int total_bytes_written = 0;
435 434
436 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); 435 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer();
437 scoped_refptr<DrainableIOBuffer> drainable = 436 scoped_refptr<DrainableIOBuffer> drainable =
438 new DrainableIOBuffer(buf.get(), buf->size()); 437 new DrainableIOBuffer(buf.get(), buf->size());
439 while (total_bytes_written != kTestDataSize) { 438 while (total_bytes_written != kTestDataSize) {
440 rv = stream->Write(drainable.get(), drainable->BytesRemaining(), 439 rv = stream->Write(
441 callback.callback()); 440 drainable.get(), drainable->BytesRemaining(), callback.callback());
442 if (rv == ERR_IO_PENDING) 441 if (rv == ERR_IO_PENDING)
443 rv = callback.WaitForResult(); 442 rv = callback.WaitForResult();
444 EXPECT_LT(0, rv); 443 EXPECT_LT(0, rv);
445 if (rv <= 0) 444 if (rv <= 0)
446 break; 445 break;
447 drainable->DidConsume(rv); 446 drainable->DidConsume(rv);
448 total_bytes_written += rv; 447 total_bytes_written += rv;
449 } 448 }
450 449
451 stream.reset(); 450 stream.reset();
(...skipping 20 matching lines...) Expand all
472 ASSERT_EQ(ERR_IO_PENDING, rv); 471 ASSERT_EQ(ERR_IO_PENDING, rv);
473 int64 offset = callback64.WaitForResult(); 472 int64 offset = callback64.WaitForResult();
474 EXPECT_EQ(offset, file_size); 473 EXPECT_EQ(offset, file_size);
475 474
476 int total_bytes_written = 0; 475 int total_bytes_written = 0;
477 476
478 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); 477 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer();
479 scoped_refptr<DrainableIOBuffer> drainable = 478 scoped_refptr<DrainableIOBuffer> drainable =
480 new DrainableIOBuffer(buf.get(), buf->size()); 479 new DrainableIOBuffer(buf.get(), buf->size());
481 while (total_bytes_written != kTestDataSize) { 480 while (total_bytes_written != kTestDataSize) {
482 rv = stream->Write(drainable.get(), drainable->BytesRemaining(), 481 rv = stream->Write(
483 callback.callback()); 482 drainable.get(), drainable->BytesRemaining(), callback.callback());
484 if (rv == ERR_IO_PENDING) 483 if (rv == ERR_IO_PENDING)
485 rv = callback.WaitForResult(); 484 rv = callback.WaitForResult();
486 EXPECT_LT(0, rv); 485 EXPECT_LT(0, rv);
487 if (rv <= 0) 486 if (rv <= 0)
488 break; 487 break;
489 drainable->DidConsume(rv); 488 drainable->DidConsume(rv);
490 total_bytes_written += rv; 489 total_bytes_written += rv;
491 } 490 }
492 491
493 EXPECT_EQ(kTestDataSize, total_bytes_written); 492 EXPECT_EQ(kTestDataSize, total_bytes_written);
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after
634 EXPECT_EQ(ERR_IO_PENDING, rv); 633 EXPECT_EQ(ERR_IO_PENDING, rv);
635 EXPECT_EQ(OK, open_callback.WaitForResult()); 634 EXPECT_EQ(OK, open_callback.WaitForResult());
636 635
637 TestInt64CompletionCallback callback64; 636 TestInt64CompletionCallback callback64;
638 EXPECT_EQ(ERR_IO_PENDING, stream->Seek(FROM_END, 0, callback64.callback())); 637 EXPECT_EQ(ERR_IO_PENDING, stream->Seek(FROM_END, 0, callback64.callback()));
639 EXPECT_EQ(file_size, callback64.WaitForResult()); 638 EXPECT_EQ(file_size, callback64.WaitForResult());
640 639
641 int total_bytes_written = 0; 640 int total_bytes_written = 0;
642 int total_bytes_read = 0; 641 int total_bytes_read = 0;
643 std::string data_read; 642 std::string data_read;
644 TestWriteReadCompletionCallback callback(stream.get(), &total_bytes_written, 643 TestWriteReadCompletionCallback callback(
645 &total_bytes_read, &data_read); 644 stream.get(), &total_bytes_written, &total_bytes_read, &data_read);
646 645
647 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); 646 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer();
648 rv = stream->Write(buf.get(), buf->size(), callback.callback()); 647 rv = stream->Write(buf.get(), buf->size(), callback.callback());
649 if (rv == ERR_IO_PENDING) 648 if (rv == ERR_IO_PENDING)
650 rv = callback.WaitForResult(); 649 rv = callback.WaitForResult();
651 EXPECT_LT(0, rv); 650 EXPECT_LT(0, rv);
652 EXPECT_EQ(kTestDataSize, total_bytes_written); 651 EXPECT_EQ(kTestDataSize, total_bytes_written);
653 652
654 stream.reset(); 653 stream.reset();
655 654
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
757 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size)); 756 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size));
758 EXPECT_EQ(kTestDataSize * 2, file_size); 757 EXPECT_EQ(kTestDataSize * 2, file_size);
759 } 758 }
760 759
761 TEST_F(FileStreamTest, AsyncOpenAndDelete) { 760 TEST_F(FileStreamTest, AsyncOpenAndDelete) {
762 scoped_refptr<base::SequencedWorkerPool> pool( 761 scoped_refptr<base::SequencedWorkerPool> pool(
763 new base::SequencedWorkerPool(1, "StreamTest")); 762 new base::SequencedWorkerPool(1, "StreamTest"));
764 763
765 bool prev = base::ThreadRestrictions::SetIOAllowed(false); 764 bool prev = base::ThreadRestrictions::SetIOAllowed(false);
766 scoped_ptr<FileStream> stream(new FileStream(pool.get())); 765 scoped_ptr<FileStream> stream(new FileStream(pool.get()));
767 int flags = base::File::FLAG_OPEN | base::File::FLAG_WRITE | 766 int flags =
768 base::File::FLAG_ASYNC; 767 base::File::FLAG_OPEN | base::File::FLAG_WRITE | base::File::FLAG_ASYNC;
769 TestCompletionCallback open_callback; 768 TestCompletionCallback open_callback;
770 int rv = stream->Open(temp_file_path(), flags, open_callback.callback()); 769 int rv = stream->Open(temp_file_path(), flags, open_callback.callback());
771 EXPECT_EQ(ERR_IO_PENDING, rv); 770 EXPECT_EQ(ERR_IO_PENDING, rv);
772 771
773 // Delete the stream without waiting for the open operation to be 772 // Delete the stream without waiting for the open operation to be
774 // complete. Should be safe. 773 // complete. Should be safe.
775 stream.reset(); 774 stream.reset();
776 775
777 // Force an operation through the pool. 776 // Force an operation through the pool.
778 scoped_ptr<FileStream> stream2(new FileStream(pool.get())); 777 scoped_ptr<FileStream> stream2(new FileStream(pool.get()));
779 TestCompletionCallback open_callback2; 778 TestCompletionCallback open_callback2;
780 rv = stream2->Open(temp_file_path(), flags, open_callback2.callback()); 779 rv = stream2->Open(temp_file_path(), flags, open_callback2.callback());
781 EXPECT_EQ(OK, open_callback2.GetResult(rv)); 780 EXPECT_EQ(OK, open_callback2.GetResult(rv));
782 stream2.reset(); 781 stream2.reset();
783 782
784 pool->Shutdown(); 783 pool->Shutdown();
785 784
786 // open_callback won't be called. 785 // open_callback won't be called.
787 base::RunLoop().RunUntilIdle(); 786 base::RunLoop().RunUntilIdle();
788 EXPECT_FALSE(open_callback.have_result()); 787 EXPECT_FALSE(open_callback.have_result());
789 base::ThreadRestrictions::SetIOAllowed(prev); 788 base::ThreadRestrictions::SetIOAllowed(prev);
790 } 789 }
791 790
792 // Verify that async Write() errors are mapped correctly. 791 // Verify that async Write() errors are mapped correctly.
793 TEST_F(FileStreamTest, AsyncWriteError) { 792 TEST_F(FileStreamTest, AsyncWriteError) {
794 // Try opening file as read-only and then writing to it using FileStream. 793 // Try opening file as read-only and then writing to it using FileStream.
795 uint32 flags = base::File::FLAG_OPEN | base::File::FLAG_READ | 794 uint32 flags =
796 base::File::FLAG_ASYNC; 795 base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_ASYNC;
797 796
798 base::File file(temp_file_path(), flags); 797 base::File file(temp_file_path(), flags);
799 ASSERT_TRUE(file.IsValid()); 798 ASSERT_TRUE(file.IsValid());
800 799
801 scoped_ptr<FileStream> stream( 800 scoped_ptr<FileStream> stream(
802 new FileStream(file.Pass(), base::MessageLoopProxy::current())); 801 new FileStream(file.Pass(), base::MessageLoopProxy::current()));
803 802
804 scoped_refptr<IOBuffer> buf = new IOBuffer(1); 803 scoped_refptr<IOBuffer> buf = new IOBuffer(1);
805 buf->data()[0] = 0; 804 buf->data()[0] = 0;
806 805
807 TestCompletionCallback callback; 806 TestCompletionCallback callback;
808 int rv = stream->Write(buf.get(), 1, callback.callback()); 807 int rv = stream->Write(buf.get(), 1, callback.callback());
809 if (rv == ERR_IO_PENDING) 808 if (rv == ERR_IO_PENDING)
810 rv = callback.WaitForResult(); 809 rv = callback.WaitForResult();
811 EXPECT_LT(rv, 0); 810 EXPECT_LT(rv, 0);
812 811
813 stream.reset(); 812 stream.reset();
814 base::RunLoop().RunUntilIdle(); 813 base::RunLoop().RunUntilIdle();
815 } 814 }
816 815
817 // Verify that async Read() errors are mapped correctly. 816 // Verify that async Read() errors are mapped correctly.
818 TEST_F(FileStreamTest, AsyncReadError) { 817 TEST_F(FileStreamTest, AsyncReadError) {
819 // Try opening file for write and then reading from it using FileStream. 818 // Try opening file for write and then reading from it using FileStream.
820 uint32 flags = base::File::FLAG_OPEN | base::File::FLAG_WRITE | 819 uint32 flags =
821 base::File::FLAG_ASYNC; 820 base::File::FLAG_OPEN | base::File::FLAG_WRITE | base::File::FLAG_ASYNC;
822 821
823 base::File file(temp_file_path(), flags); 822 base::File file(temp_file_path(), flags);
824 ASSERT_TRUE(file.IsValid()); 823 ASSERT_TRUE(file.IsValid());
825 824
826 scoped_ptr<FileStream> stream( 825 scoped_ptr<FileStream> stream(
827 new FileStream(file.Pass(), base::MessageLoopProxy::current())); 826 new FileStream(file.Pass(), base::MessageLoopProxy::current()));
828 827
829 scoped_refptr<IOBuffer> buf = new IOBuffer(1); 828 scoped_refptr<IOBuffer> buf = new IOBuffer(1);
830 TestCompletionCallback callback; 829 TestCompletionCallback callback;
831 int rv = stream->Read(buf.get(), 1, callback.callback()); 830 int rv = stream->Read(buf.get(), 1, callback.callback());
832 if (rv == ERR_IO_PENDING) 831 if (rv == ERR_IO_PENDING)
833 rv = callback.WaitForResult(); 832 rv = callback.WaitForResult();
834 EXPECT_LT(rv, 0); 833 EXPECT_LT(rv, 0);
835 834
836 stream.reset(); 835 stream.reset();
837 base::RunLoop().RunUntilIdle(); 836 base::RunLoop().RunUntilIdle();
(...skipping 12 matching lines...) Expand all
850 // Insert the image into MediaStore. MediaStore will do some conversions, and 849 // Insert the image into MediaStore. MediaStore will do some conversions, and
851 // return the content URI. 850 // return the content URI.
852 base::FilePath path = file_util::InsertImageIntoMediaStore(image_file); 851 base::FilePath path = file_util::InsertImageIntoMediaStore(image_file);
853 EXPECT_TRUE(path.IsContentUri()); 852 EXPECT_TRUE(path.IsContentUri());
854 EXPECT_TRUE(base::PathExists(path)); 853 EXPECT_TRUE(base::PathExists(path));
855 int64 file_size; 854 int64 file_size;
856 EXPECT_TRUE(base::GetFileSize(path, &file_size)); 855 EXPECT_TRUE(base::GetFileSize(path, &file_size));
857 EXPECT_LT(0, file_size); 856 EXPECT_LT(0, file_size);
858 857
859 FileStream stream(base::MessageLoopProxy::current()); 858 FileStream stream(base::MessageLoopProxy::current());
860 int flags = base::File::FLAG_OPEN | base::File::FLAG_READ | 859 int flags =
861 base::File::FLAG_ASYNC; 860 base::File::FLAG_OPEN | base::File::FLAG_READ | base::File::FLAG_ASYNC;
862 TestCompletionCallback callback; 861 TestCompletionCallback callback;
863 int rv = stream.Open(path, flags, callback.callback()); 862 int rv = stream.Open(path, flags, callback.callback());
864 EXPECT_EQ(ERR_IO_PENDING, rv); 863 EXPECT_EQ(ERR_IO_PENDING, rv);
865 EXPECT_EQ(OK, callback.WaitForResult()); 864 EXPECT_EQ(OK, callback.WaitForResult());
866 865
867 int total_bytes_read = 0; 866 int total_bytes_read = 0;
868 867
869 std::string data_read; 868 std::string data_read;
870 for (;;) { 869 for (;;) {
871 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4); 870 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4);
872 rv = stream.Read(buf.get(), buf->size(), callback.callback()); 871 rv = stream.Read(buf.get(), buf->size(), callback.callback());
873 if (rv == ERR_IO_PENDING) 872 if (rv == ERR_IO_PENDING)
874 rv = callback.WaitForResult(); 873 rv = callback.WaitForResult();
875 EXPECT_LE(0, rv); 874 EXPECT_LE(0, rv);
876 if (rv <= 0) 875 if (rv <= 0)
877 break; 876 break;
878 total_bytes_read += rv; 877 total_bytes_read += rv;
879 data_read.append(buf->data(), rv); 878 data_read.append(buf->data(), rv);
880 } 879 }
881 EXPECT_EQ(file_size, total_bytes_read); 880 EXPECT_EQ(file_size, total_bytes_read);
882 } 881 }
883 #endif 882 #endif
884 883
885 } // namespace 884 } // namespace
886 885
887 } // namespace net 886 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698