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

Side by Side 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « net/base/file_stream_posix.cc ('k') | net/base/file_stream_win.h » ('j') | 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.h" 10 #include "base/message_loop.h"
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
148 148
149 // 1. Test reading with a file handle. 149 // 1. Test reading with a file handle.
150 ASSERT_EQ(kTestDataSize, 150 ASSERT_EQ(kTestDataSize,
151 file_util::WriteFile(temp_file_path(), kTestData, kTestDataSize)); 151 file_util::WriteFile(temp_file_path(), kTestData, kTestDataSize));
152 int flags = base::PLATFORM_FILE_OPEN_ALWAYS | base::PLATFORM_FILE_READ; 152 int flags = base::PLATFORM_FILE_OPEN_ALWAYS | base::PLATFORM_FILE_READ;
153 base::PlatformFile file = base::CreatePlatformFile( 153 base::PlatformFile file = base::CreatePlatformFile(
154 temp_file_path(), flags, &created, NULL); 154 temp_file_path(), flags, &created, NULL);
155 155
156 // Seek to the beginning of the file and read. 156 // Seek to the beginning of the file and read.
157 FileStream read_stream(file, flags, NULL); 157 FileStream read_stream(file, flags, NULL);
158 ASSERT_EQ(0, read_stream.Seek(FROM_BEGIN, 0)); 158 ASSERT_EQ(0, read_stream.SeekSync(FROM_BEGIN, 0));
159 ASSERT_EQ(kTestDataSize, read_stream.Available()); 159 ASSERT_EQ(kTestDataSize, read_stream.Available());
160 // Read into buffer and compare. 160 // Read into buffer and compare.
161 char buffer[kTestDataSize]; 161 char buffer[kTestDataSize];
162 ASSERT_EQ(kTestDataSize, 162 ASSERT_EQ(kTestDataSize,
163 read_stream.ReadSync(buffer, kTestDataSize)); 163 read_stream.ReadSync(buffer, kTestDataSize));
164 ASSERT_EQ(0, memcmp(kTestData, buffer, kTestDataSize)); 164 ASSERT_EQ(0, memcmp(kTestData, buffer, kTestDataSize));
165 read_stream.CloseSync(); 165 read_stream.CloseSync();
166 166
167 // 2. Test writing with a file handle. 167 // 2. Test writing with a file handle.
168 file_util::Delete(temp_file_path(), false); 168 file_util::Delete(temp_file_path(), false);
169 flags = base::PLATFORM_FILE_OPEN_ALWAYS | base::PLATFORM_FILE_WRITE; 169 flags = base::PLATFORM_FILE_OPEN_ALWAYS | base::PLATFORM_FILE_WRITE;
170 file = base::CreatePlatformFile(temp_file_path(), flags, &created, NULL); 170 file = base::CreatePlatformFile(temp_file_path(), flags, &created, NULL);
171 171
172 FileStream write_stream(file, flags, NULL); 172 FileStream write_stream(file, flags, NULL);
173 ASSERT_EQ(0, write_stream.Seek(FROM_BEGIN, 0)); 173 ASSERT_EQ(0, write_stream.SeekSync(FROM_BEGIN, 0));
174 ASSERT_EQ(kTestDataSize, 174 ASSERT_EQ(kTestDataSize,
175 write_stream.WriteSync(kTestData, kTestDataSize)); 175 write_stream.WriteSync(kTestData, kTestDataSize));
176 write_stream.CloseSync(); 176 write_stream.CloseSync();
177 177
178 // Read into buffer and compare to make sure the handle worked fine. 178 // Read into buffer and compare to make sure the handle worked fine.
179 ASSERT_EQ(kTestDataSize, 179 ASSERT_EQ(kTestDataSize,
180 file_util::ReadFile(temp_file_path(), buffer, kTestDataSize)); 180 file_util::ReadFile(temp_file_path(), buffer, kTestDataSize));
181 ASSERT_EQ(0, memcmp(kTestData, buffer, kTestDataSize)); 181 ASSERT_EQ(0, memcmp(kTestData, buffer, kTestDataSize));
182 } 182 }
183 183
184 TEST_F(FileStreamTest, UseClosedStream) { 184 TEST_F(FileStreamTest, UseClosedStream) {
185 FileStream stream(NULL); 185 FileStream stream(NULL);
186 186
187 EXPECT_FALSE(stream.IsOpen()); 187 EXPECT_FALSE(stream.IsOpen());
188 188
189 // Try seeking... 189 // Try seeking...
190 int64 new_offset = stream.Seek(FROM_BEGIN, 5); 190 int64 new_offset = stream.SeekSync(FROM_BEGIN, 5);
191 EXPECT_EQ(ERR_UNEXPECTED, new_offset); 191 EXPECT_EQ(ERR_UNEXPECTED, new_offset);
192 192
193 // Try available... 193 // Try available...
194 int64 avail = stream.Available(); 194 int64 avail = stream.Available();
195 EXPECT_EQ(ERR_UNEXPECTED, avail); 195 EXPECT_EQ(ERR_UNEXPECTED, avail);
196 196
197 // Try reading... 197 // Try reading...
198 char buf[10]; 198 char buf[10];
199 int rv = stream.ReadSync(buf, arraysize(buf)); 199 int rv = stream.ReadSync(buf, arraysize(buf));
200 EXPECT_EQ(ERR_UNEXPECTED, rv); 200 EXPECT_EQ(ERR_UNEXPECTED, rv);
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
373 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 373 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
374 EXPECT_TRUE(ok); 374 EXPECT_TRUE(ok);
375 375
376 FileStream stream(NULL); 376 FileStream stream(NULL);
377 int flags = base::PLATFORM_FILE_OPEN | 377 int flags = base::PLATFORM_FILE_OPEN |
378 base::PLATFORM_FILE_READ; 378 base::PLATFORM_FILE_READ;
379 int rv = stream.OpenSync(temp_file_path(), flags); 379 int rv = stream.OpenSync(temp_file_path(), flags);
380 EXPECT_EQ(OK, rv); 380 EXPECT_EQ(OK, rv);
381 381
382 const int64 kOffset = 3; 382 const int64 kOffset = 3;
383 int64 new_offset = stream.Seek(FROM_BEGIN, kOffset); 383 int64 new_offset = stream.SeekSync(FROM_BEGIN, kOffset);
384 EXPECT_EQ(kOffset, new_offset); 384 EXPECT_EQ(kOffset, new_offset);
385 385
386 int64 total_bytes_avail = stream.Available(); 386 int64 total_bytes_avail = stream.Available();
387 EXPECT_EQ(file_size - kOffset, total_bytes_avail); 387 EXPECT_EQ(file_size - kOffset, total_bytes_avail);
388 388
389 int64 total_bytes_read = 0; 389 int64 total_bytes_read = 0;
390 390
391 std::string data_read; 391 std::string data_read;
392 for (;;) { 392 for (;;) {
393 char buf[4]; 393 char buf[4];
(...skipping 14 matching lines...) Expand all
408 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 408 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
409 EXPECT_TRUE(ok); 409 EXPECT_TRUE(ok);
410 410
411 FileStream stream(NULL); 411 FileStream stream(NULL);
412 int flags = base::PLATFORM_FILE_OPEN | 412 int flags = base::PLATFORM_FILE_OPEN |
413 base::PLATFORM_FILE_READ | 413 base::PLATFORM_FILE_READ |
414 base::PLATFORM_FILE_ASYNC; 414 base::PLATFORM_FILE_ASYNC;
415 int rv = stream.OpenSync(temp_file_path(), flags); 415 int rv = stream.OpenSync(temp_file_path(), flags);
416 EXPECT_EQ(OK, rv); 416 EXPECT_EQ(OK, rv);
417 417
418 TestInt64CompletionCallback callback64;
418 const int64 kOffset = 3; 419 const int64 kOffset = 3;
419 int64 new_offset = stream.Seek(FROM_BEGIN, kOffset); 420 rv = stream.Seek(FROM_BEGIN, kOffset, callback64.callback());
421 ASSERT_EQ(ERR_IO_PENDING, rv);
422 int64 new_offset = callback64.WaitForResult();
420 EXPECT_EQ(kOffset, new_offset); 423 EXPECT_EQ(kOffset, new_offset);
421 424
422 int64 total_bytes_avail = stream.Available(); 425 int64 total_bytes_avail = stream.Available();
423 EXPECT_EQ(file_size - kOffset, total_bytes_avail); 426 EXPECT_EQ(file_size - kOffset, total_bytes_avail);
424 427
425 TestCompletionCallback callback; 428 TestCompletionCallback callback;
426 429
427 int total_bytes_read = 0; 430 int total_bytes_read = 0;
428 431
429 std::string data_read; 432 std::string data_read;
(...skipping 13 matching lines...) Expand all
443 } 446 }
444 447
445 TEST_F(FileStreamTest, SeekAround) { 448 TEST_F(FileStreamTest, SeekAround) {
446 FileStream stream(NULL); 449 FileStream stream(NULL);
447 int flags = base::PLATFORM_FILE_OPEN | 450 int flags = base::PLATFORM_FILE_OPEN |
448 base::PLATFORM_FILE_READ; 451 base::PLATFORM_FILE_READ;
449 int rv = stream.OpenSync(temp_file_path(), flags); 452 int rv = stream.OpenSync(temp_file_path(), flags);
450 EXPECT_EQ(OK, rv); 453 EXPECT_EQ(OK, rv);
451 454
452 const int64 kOffset = 3; 455 const int64 kOffset = 3;
453 int64 new_offset = stream.Seek(FROM_BEGIN, kOffset); 456 int64 new_offset = stream.SeekSync(FROM_BEGIN, kOffset);
454 EXPECT_EQ(kOffset, new_offset); 457 EXPECT_EQ(kOffset, new_offset);
455 458
456 new_offset = stream.Seek(FROM_CURRENT, kOffset); 459 new_offset = stream.SeekSync(FROM_CURRENT, kOffset);
457 EXPECT_EQ(2 * kOffset, new_offset); 460 EXPECT_EQ(2 * kOffset, new_offset);
458 461
459 new_offset = stream.Seek(FROM_CURRENT, -kOffset); 462 new_offset = stream.SeekSync(FROM_CURRENT, -kOffset);
460 EXPECT_EQ(kOffset, new_offset); 463 EXPECT_EQ(kOffset, new_offset);
461 464
462 const int kTestDataLen = arraysize(kTestData) - 1; 465 const int kTestDataLen = arraysize(kTestData) - 1;
463 466
464 new_offset = stream.Seek(FROM_END, -kTestDataLen); 467 new_offset = stream.SeekSync(FROM_END, -kTestDataLen);
465 EXPECT_EQ(0, new_offset); 468 EXPECT_EQ(0, new_offset);
466 } 469 }
467 470
471 TEST_F(FileStreamTest, AsyncSeekAround) {
472 FileStream stream(NULL);
473 int flags = base::PLATFORM_FILE_OPEN |
474 base::PLATFORM_FILE_ASYNC |
475 base::PLATFORM_FILE_READ;
476 int rv = stream.OpenSync(temp_file_path(), flags);
477 EXPECT_EQ(OK, rv);
478
479 TestInt64CompletionCallback callback;
480
481 const int64 kOffset = 3;
482 rv = stream.Seek(FROM_BEGIN, kOffset, callback.callback());
483 ASSERT_EQ(ERR_IO_PENDING, rv);
484 int64 new_offset = callback.WaitForResult();
485 EXPECT_EQ(kOffset, new_offset);
486
487 rv = stream.Seek(FROM_CURRENT, kOffset, callback.callback());
488 ASSERT_EQ(ERR_IO_PENDING, rv);
489 new_offset = callback.WaitForResult();
490 EXPECT_EQ(2 * kOffset, new_offset);
491
492 rv = stream.Seek(FROM_CURRENT, -kOffset, callback.callback());
493 ASSERT_EQ(ERR_IO_PENDING, rv);
494 new_offset = callback.WaitForResult();
495 EXPECT_EQ(kOffset, new_offset);
496
497 const int kTestDataLen = arraysize(kTestData) - 1;
498
499 rv = stream.Seek(FROM_END, -kTestDataLen, callback.callback());
500 ASSERT_EQ(ERR_IO_PENDING, rv);
501 new_offset = callback.WaitForResult();
502 EXPECT_EQ(0, new_offset);
503 }
504
468 TEST_F(FileStreamTest, BasicWrite) { 505 TEST_F(FileStreamTest, BasicWrite) {
469 FileStream stream(NULL); 506 FileStream stream(NULL);
470 int flags = base::PLATFORM_FILE_CREATE_ALWAYS | 507 int flags = base::PLATFORM_FILE_CREATE_ALWAYS |
471 base::PLATFORM_FILE_WRITE; 508 base::PLATFORM_FILE_WRITE;
472 int rv = stream.OpenSync(temp_file_path(), flags); 509 int rv = stream.OpenSync(temp_file_path(), flags);
473 EXPECT_EQ(OK, rv); 510 EXPECT_EQ(OK, rv);
474 511
475 int64 file_size; 512 int64 file_size;
476 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 513 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
477 EXPECT_TRUE(ok); 514 EXPECT_TRUE(ok);
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after
557 base::PLATFORM_FILE_WRITE; 594 base::PLATFORM_FILE_WRITE;
558 int rv = stream.OpenSync(temp_file_path(), flags); 595 int rv = stream.OpenSync(temp_file_path(), flags);
559 EXPECT_EQ(OK, rv); 596 EXPECT_EQ(OK, rv);
560 597
561 int64 file_size; 598 int64 file_size;
562 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 599 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
563 EXPECT_TRUE(ok); 600 EXPECT_TRUE(ok);
564 EXPECT_EQ(kTestDataSize, file_size); 601 EXPECT_EQ(kTestDataSize, file_size);
565 602
566 const int64 kOffset = 0; 603 const int64 kOffset = 0;
567 int64 new_offset = stream.Seek(FROM_END, kOffset); 604 int64 new_offset = stream.SeekSync(FROM_END, kOffset);
568 EXPECT_EQ(kTestDataSize, new_offset); 605 EXPECT_EQ(kTestDataSize, new_offset);
569 606
570 rv = stream.WriteSync(kTestData, kTestDataSize); 607 rv = stream.WriteSync(kTestData, kTestDataSize);
571 EXPECT_EQ(kTestDataSize, rv); 608 EXPECT_EQ(kTestDataSize, rv);
572 stream.CloseSync(); 609 stream.CloseSync();
573 610
574 ok = file_util::GetFileSize(temp_file_path(), &file_size); 611 ok = file_util::GetFileSize(temp_file_path(), &file_size);
575 EXPECT_TRUE(ok); 612 EXPECT_TRUE(ok);
576 EXPECT_EQ(kTestDataSize * 2, file_size); 613 EXPECT_EQ(kTestDataSize * 2, file_size);
577 } 614 }
578 615
579 TEST_F(FileStreamTest, AsyncWrite_FromOffset) { 616 TEST_F(FileStreamTest, AsyncWrite_FromOffset) {
580 int64 file_size; 617 int64 file_size;
581 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); 618 bool ok = file_util::GetFileSize(temp_file_path(), &file_size);
582 EXPECT_TRUE(ok); 619 EXPECT_TRUE(ok);
583 620
584 FileStream stream(NULL); 621 FileStream stream(NULL);
585 int flags = base::PLATFORM_FILE_OPEN | 622 int flags = base::PLATFORM_FILE_OPEN |
586 base::PLATFORM_FILE_WRITE | 623 base::PLATFORM_FILE_WRITE |
587 base::PLATFORM_FILE_ASYNC; 624 base::PLATFORM_FILE_ASYNC;
588 int rv = stream.OpenSync(temp_file_path(), flags); 625 int rv = stream.OpenSync(temp_file_path(), flags);
589 EXPECT_EQ(OK, rv); 626 EXPECT_EQ(OK, rv);
590 627
628 TestInt64CompletionCallback callback64;
591 const int64 kOffset = 0; 629 const int64 kOffset = 0;
592 int64 new_offset = stream.Seek(FROM_END, kOffset); 630 rv = stream.Seek(FROM_END, kOffset, callback64.callback());
631 ASSERT_EQ(ERR_IO_PENDING, rv);
632 int64 new_offset = callback64.WaitForResult();
593 EXPECT_EQ(kTestDataSize, new_offset); 633 EXPECT_EQ(kTestDataSize, new_offset);
594 634
595 TestCompletionCallback callback; 635 TestCompletionCallback callback;
596 int total_bytes_written = 0; 636 int total_bytes_written = 0;
597 637
598 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); 638 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer();
599 scoped_refptr<DrainableIOBuffer> drainable = 639 scoped_refptr<DrainableIOBuffer> drainable =
600 new DrainableIOBuffer(buf, buf->size()); 640 new DrainableIOBuffer(buf, buf->size());
601 while (total_bytes_written != kTestDataSize) { 641 while (total_bytes_written != kTestDataSize) {
602 rv = stream.Write(drainable, drainable->BytesRemaining(), 642 rv = stream.Write(drainable, drainable->BytesRemaining(),
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
661 FileStream stream(NULL); 701 FileStream stream(NULL);
662 int flags = base::PLATFORM_FILE_OPEN | 702 int flags = base::PLATFORM_FILE_OPEN |
663 base::PLATFORM_FILE_READ | 703 base::PLATFORM_FILE_READ |
664 base::PLATFORM_FILE_WRITE; 704 base::PLATFORM_FILE_WRITE;
665 int rv = stream.OpenSync(temp_file_path(), flags); 705 int rv = stream.OpenSync(temp_file_path(), flags);
666 EXPECT_EQ(OK, rv); 706 EXPECT_EQ(OK, rv);
667 707
668 int64 total_bytes_avail = stream.Available(); 708 int64 total_bytes_avail = stream.Available();
669 EXPECT_EQ(file_size, total_bytes_avail); 709 EXPECT_EQ(file_size, total_bytes_avail);
670 710
671 int64 offset = stream.Seek(FROM_END, 0); 711 int64 offset = stream.SeekSync(FROM_END, 0);
672 EXPECT_EQ(offset, file_size); 712 EXPECT_EQ(offset, file_size);
673 713
674 rv = stream.WriteSync(kTestData, kTestDataSize); 714 rv = stream.WriteSync(kTestData, kTestDataSize);
675 EXPECT_EQ(kTestDataSize, rv); 715 EXPECT_EQ(kTestDataSize, rv);
676 716
677 offset = stream.Seek(FROM_BEGIN, 0); 717 offset = stream.SeekSync(FROM_BEGIN, 0);
678 EXPECT_EQ(0, offset); 718 EXPECT_EQ(0, offset);
679 719
680 int64 total_bytes_read = 0; 720 int64 total_bytes_read = 0;
681 721
682 std::string data_read; 722 std::string data_read;
683 for (;;) { 723 for (;;) {
684 char buf[4]; 724 char buf[4];
685 rv = stream.ReadSync(buf, arraysize(buf)); 725 rv = stream.ReadSync(buf, arraysize(buf));
686 EXPECT_LE(0, rv); 726 EXPECT_LE(0, rv);
687 if (rv <= 0) 727 if (rv <= 0)
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
768 int flags = base::PLATFORM_FILE_OPEN | 808 int flags = base::PLATFORM_FILE_OPEN |
769 base::PLATFORM_FILE_READ | 809 base::PLATFORM_FILE_READ |
770 base::PLATFORM_FILE_WRITE | 810 base::PLATFORM_FILE_WRITE |
771 base::PLATFORM_FILE_ASYNC; 811 base::PLATFORM_FILE_ASYNC;
772 int rv = stream.OpenSync(temp_file_path(), flags); 812 int rv = stream.OpenSync(temp_file_path(), flags);
773 EXPECT_EQ(OK, rv); 813 EXPECT_EQ(OK, rv);
774 814
775 int64 total_bytes_avail = stream.Available(); 815 int64 total_bytes_avail = stream.Available();
776 EXPECT_EQ(file_size, total_bytes_avail); 816 EXPECT_EQ(file_size, total_bytes_avail);
777 817
778 int64 offset = stream.Seek(FROM_END, 0); 818 TestInt64CompletionCallback callback64;
819 rv = stream.Seek(FROM_END, 0, callback64.callback());
820 ASSERT_EQ(ERR_IO_PENDING, rv);
821 int64 offset = callback64.WaitForResult();
779 EXPECT_EQ(offset, file_size); 822 EXPECT_EQ(offset, file_size);
780 823
781 TestCompletionCallback callback; 824 TestCompletionCallback callback;
782 int total_bytes_written = 0; 825 int total_bytes_written = 0;
783 826
784 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); 827 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer();
785 scoped_refptr<DrainableIOBuffer> drainable = 828 scoped_refptr<DrainableIOBuffer> drainable =
786 new DrainableIOBuffer(buf, buf->size()); 829 new DrainableIOBuffer(buf, buf->size());
787 while (total_bytes_written != kTestDataSize) { 830 while (total_bytes_written != kTestDataSize) {
788 rv = stream.Write(drainable, drainable->BytesRemaining(), 831 rv = stream.Write(drainable, drainable->BytesRemaining(),
789 callback.callback()); 832 callback.callback());
790 if (rv == ERR_IO_PENDING) 833 if (rv == ERR_IO_PENDING)
791 rv = callback.WaitForResult(); 834 rv = callback.WaitForResult();
792 EXPECT_LT(0, rv); 835 EXPECT_LT(0, rv);
793 if (rv <= 0) 836 if (rv <= 0)
794 break; 837 break;
795 drainable->DidConsume(rv); 838 drainable->DidConsume(rv);
796 total_bytes_written += rv; 839 total_bytes_written += rv;
797 } 840 }
798 841
799 EXPECT_EQ(kTestDataSize, total_bytes_written); 842 EXPECT_EQ(kTestDataSize, total_bytes_written);
800 843
801 offset = stream.Seek(FROM_BEGIN, 0); 844 rv = stream.Seek(FROM_BEGIN, 0, callback64.callback());
845 ASSERT_EQ(ERR_IO_PENDING, rv);
846 offset = callback64.WaitForResult();
802 EXPECT_EQ(0, offset); 847 EXPECT_EQ(0, offset);
803 848
804 int total_bytes_read = 0; 849 int total_bytes_read = 0;
805 850
806 std::string data_read; 851 std::string data_read;
807 for (;;) { 852 for (;;) {
808 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4); 853 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4);
809 rv = stream.Read(buf, buf->size(), callback.callback()); 854 rv = stream.Read(buf, buf->size(), callback.callback());
810 if (rv == ERR_IO_PENDING) 855 if (rv == ERR_IO_PENDING)
811 rv = callback.WaitForResult(); 856 rv = callback.WaitForResult();
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after
875 stream_, &total_bytes_written, &total_bytes_read, &data_read); 920 stream_, &total_bytes_written, &total_bytes_read, &data_read);
876 rv = stream_->Write(drainable_, drainable_->BytesRemaining(), 921 rv = stream_->Write(drainable_, drainable_->BytesRemaining(),
877 callback.callback()); 922 callback.callback());
878 DCHECK_EQ(ERR_IO_PENDING, rv); 923 DCHECK_EQ(ERR_IO_PENDING, rv);
879 rv = callback.WaitForResult(); 924 rv = callback.WaitForResult();
880 drainable_->DidConsume(total_bytes_written); 925 drainable_->DidConsume(total_bytes_written);
881 *total_bytes_written_ += total_bytes_written; 926 *total_bytes_written_ += total_bytes_written;
882 *total_bytes_read_ += total_bytes_read; 927 *total_bytes_read_ += total_bytes_read;
883 *data_read_ += data_read; 928 *data_read_ += data_read;
884 } else { // We're done writing all data. Start reading the data. 929 } else { // We're done writing all data. Start reading the data.
885 stream_->Seek(FROM_BEGIN, 0); 930 stream_->SeekSync(FROM_BEGIN, 0);
886 931
887 TestCompletionCallback callback; 932 TestCompletionCallback callback;
888 for (;;) { 933 for (;;) {
889 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4); 934 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4);
890 rv = stream_->Read(buf, buf->size(), callback.callback()); 935 rv = stream_->Read(buf, buf->size(), callback.callback());
891 if (rv == ERR_IO_PENDING) { 936 if (rv == ERR_IO_PENDING) {
892 MessageLoop::ScopedNestableTaskAllower allow(MessageLoop::current()); 937 MessageLoop::ScopedNestableTaskAllower allow(MessageLoop::current());
893 rv = callback.WaitForResult(); 938 rv = callback.WaitForResult();
894 } 939 }
895 EXPECT_LE(0, rv); 940 EXPECT_LE(0, rv);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
929 int flags = base::PLATFORM_FILE_OPEN | 974 int flags = base::PLATFORM_FILE_OPEN |
930 base::PLATFORM_FILE_READ | 975 base::PLATFORM_FILE_READ |
931 base::PLATFORM_FILE_WRITE | 976 base::PLATFORM_FILE_WRITE |
932 base::PLATFORM_FILE_ASYNC; 977 base::PLATFORM_FILE_ASYNC;
933 int rv = stream.OpenSync(temp_file_path(), flags); 978 int rv = stream.OpenSync(temp_file_path(), flags);
934 EXPECT_EQ(OK, rv); 979 EXPECT_EQ(OK, rv);
935 980
936 int64 total_bytes_avail = stream.Available(); 981 int64 total_bytes_avail = stream.Available();
937 EXPECT_EQ(file_size, total_bytes_avail); 982 EXPECT_EQ(file_size, total_bytes_avail);
938 983
939 int64 offset = stream.Seek(FROM_END, 0); 984 int64 offset = stream.SeekSync(FROM_END, 0);
940 EXPECT_EQ(offset, file_size); 985 EXPECT_EQ(offset, file_size);
941 986
942 int total_bytes_written = 0; 987 int total_bytes_written = 0;
943 int total_bytes_read = 0; 988 int total_bytes_read = 0;
944 std::string data_read; 989 std::string data_read;
945 TestWriteReadCompletionCallback callback(&stream, &total_bytes_written, 990 TestWriteReadCompletionCallback callback(&stream, &total_bytes_written,
946 &total_bytes_read, &data_read); 991 &total_bytes_read, &data_read);
947 992
948 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); 993 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer();
949 rv = stream.Write(buf, buf->size(), callback.callback()); 994 rv = stream.Write(buf, buf->size(), callback.callback());
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after
1039 int flags = base::PLATFORM_FILE_OPEN | 1084 int flags = base::PLATFORM_FILE_OPEN |
1040 base::PLATFORM_FILE_READ | 1085 base::PLATFORM_FILE_READ |
1041 base::PLATFORM_FILE_WRITE | 1086 base::PLATFORM_FILE_WRITE |
1042 base::PLATFORM_FILE_ASYNC; 1087 base::PLATFORM_FILE_ASYNC;
1043 int rv = stream.OpenSync(temp_file_path(), flags); 1088 int rv = stream.OpenSync(temp_file_path(), flags);
1044 EXPECT_EQ(OK, rv); 1089 EXPECT_EQ(OK, rv);
1045 1090
1046 int64 total_bytes_avail = stream.Available(); 1091 int64 total_bytes_avail = stream.Available();
1047 EXPECT_EQ(file_size, total_bytes_avail); 1092 EXPECT_EQ(file_size, total_bytes_avail);
1048 1093
1049 int64 offset = stream.Seek(FROM_END, 0); 1094 int64 offset = stream.SeekSync(FROM_END, 0);
1050 EXPECT_EQ(offset, file_size); 1095 EXPECT_EQ(offset, file_size);
1051 1096
1052 int total_bytes_written = 0; 1097 int total_bytes_written = 0;
1053 TestWriteCloseCompletionCallback callback(&stream, &total_bytes_written); 1098 TestWriteCloseCompletionCallback callback(&stream, &total_bytes_written);
1054 1099
1055 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); 1100 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer();
1056 rv = stream.Write(buf, buf->size(), callback.callback()); 1101 rv = stream.Write(buf, buf->size(), callback.callback());
1057 if (rv == ERR_IO_PENDING) 1102 if (rv == ERR_IO_PENDING)
1058 total_bytes_written = callback.WaitForResult(); 1103 total_bytes_written = callback.WaitForResult();
1059 EXPECT_LT(0, total_bytes_written); 1104 EXPECT_LT(0, total_bytes_written);
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after
1215 // Delete the stream without waiting for the close operation to be 1260 // Delete the stream without waiting for the close operation to be
1216 // complete. Should be safe. 1261 // complete. Should be safe.
1217 stream.reset(); 1262 stream.reset();
1218 // close_callback won't be called. 1263 // close_callback won't be called.
1219 EXPECT_FALSE(close_callback.have_result()); 1264 EXPECT_FALSE(close_callback.have_result());
1220 } 1265 }
1221 1266
1222 } // namespace 1267 } // namespace
1223 1268
1224 } // namespace net 1269 } // namespace net
OLDNEW
« 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