| OLD | NEW | 
|---|
| 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/upload_data_stream.h" | 5 #include "net/base/upload_data_stream.h" | 
| 6 | 6 | 
| 7 #include <algorithm> | 7 #include <algorithm> | 
| 8 #include <vector> | 8 #include <vector> | 
| 9 | 9 | 
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" | 
| (...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 167   } | 167   } | 
| 168   EXPECT_EQ(kTestDataSize, stream.position()); | 168   EXPECT_EQ(kTestDataSize, stream.position()); | 
| 169   ASSERT_TRUE(stream.IsEOF()); | 169   ASSERT_TRUE(stream.IsEOF()); | 
| 170 } | 170 } | 
| 171 | 171 | 
| 172 TEST_F(UploadDataStreamTest, File) { | 172 TEST_F(UploadDataStreamTest, File) { | 
| 173   base::FilePath temp_file_path; | 173   base::FilePath temp_file_path; | 
| 174   ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 174   ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 
| 175                                              &temp_file_path)); | 175                                              &temp_file_path)); | 
| 176   ASSERT_EQ(static_cast<int>(kTestDataSize), | 176   ASSERT_EQ(static_cast<int>(kTestDataSize), | 
| 177             file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 177             base::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 
| 178 | 178 | 
| 179   element_readers_.push_back( | 179   element_readers_.push_back( | 
| 180       new UploadFileElementReader(base::MessageLoopProxy::current().get(), | 180       new UploadFileElementReader(base::MessageLoopProxy::current().get(), | 
| 181                                   temp_file_path, | 181                                   temp_file_path, | 
| 182                                   0, | 182                                   0, | 
| 183                                   kuint64max, | 183                                   kuint64max, | 
| 184                                   base::Time())); | 184                                   base::Time())); | 
| 185 | 185 | 
| 186   TestCompletionCallback init_callback; | 186   TestCompletionCallback init_callback; | 
| 187   UploadDataStream stream(element_readers_.Pass(), 0); | 187   UploadDataStream stream(element_readers_.Pass(), 0); | 
| (...skipping 13 matching lines...) Expand all  Loading... | 
| 201   } | 201   } | 
| 202   EXPECT_EQ(kTestDataSize, stream.position()); | 202   EXPECT_EQ(kTestDataSize, stream.position()); | 
| 203   ASSERT_TRUE(stream.IsEOF()); | 203   ASSERT_TRUE(stream.IsEOF()); | 
| 204 } | 204 } | 
| 205 | 205 | 
| 206 TEST_F(UploadDataStreamTest, FileSmallerThanLength) { | 206 TEST_F(UploadDataStreamTest, FileSmallerThanLength) { | 
| 207   base::FilePath temp_file_path; | 207   base::FilePath temp_file_path; | 
| 208   ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 208   ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 
| 209                                              &temp_file_path)); | 209                                              &temp_file_path)); | 
| 210   ASSERT_EQ(static_cast<int>(kTestDataSize), | 210   ASSERT_EQ(static_cast<int>(kTestDataSize), | 
| 211             file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 211             base::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 
| 212   const uint64 kFakeSize = kTestDataSize*2; | 212   const uint64 kFakeSize = kTestDataSize*2; | 
| 213 | 213 | 
| 214   UploadFileElementReader::ScopedOverridingContentLengthForTests | 214   UploadFileElementReader::ScopedOverridingContentLengthForTests | 
| 215       overriding_content_length(kFakeSize); | 215       overriding_content_length(kFakeSize); | 
| 216 | 216 | 
| 217   element_readers_.push_back( | 217   element_readers_.push_back( | 
| 218       new UploadFileElementReader(base::MessageLoopProxy::current().get(), | 218       new UploadFileElementReader(base::MessageLoopProxy::current().get(), | 
| 219                                   temp_file_path, | 219                                   temp_file_path, | 
| 220                                   0, | 220                                   0, | 
| 221                                   kuint64max, | 221                                   kuint64max, | 
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 319   // The buffer is filled with zero. | 319   // The buffer is filled with zero. | 
| 320   EXPECT_EQ(static_cast<int>(kTestDataSize*2), | 320   EXPECT_EQ(static_cast<int>(kTestDataSize*2), | 
| 321             std::count(buf->data(), buf->data() + kTestBufferSize, 0)); | 321             std::count(buf->data(), buf->data() + kTestBufferSize, 0)); | 
| 322 } | 322 } | 
| 323 | 323 | 
| 324 TEST_F(UploadDataStreamTest, FileAndBytes) { | 324 TEST_F(UploadDataStreamTest, FileAndBytes) { | 
| 325   base::FilePath temp_file_path; | 325   base::FilePath temp_file_path; | 
| 326   ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 326   ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 
| 327                                              &temp_file_path)); | 327                                              &temp_file_path)); | 
| 328   ASSERT_EQ(static_cast<int>(kTestDataSize), | 328   ASSERT_EQ(static_cast<int>(kTestDataSize), | 
| 329             file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 329             base::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 
| 330 | 330 | 
| 331   const uint64 kFileRangeOffset = 1; | 331   const uint64 kFileRangeOffset = 1; | 
| 332   const uint64 kFileRangeLength = 4; | 332   const uint64 kFileRangeLength = 4; | 
| 333   element_readers_.push_back( | 333   element_readers_.push_back( | 
| 334       new UploadFileElementReader(base::MessageLoopProxy::current().get(), | 334       new UploadFileElementReader(base::MessageLoopProxy::current().get(), | 
| 335                                   temp_file_path, | 335                                   temp_file_path, | 
| 336                                   kFileRangeOffset, | 336                                   kFileRangeOffset, | 
| 337                                   kFileRangeLength, | 337                                   kFileRangeLength, | 
| 338                                   base::Time())); | 338                                   base::Time())); | 
| 339 | 339 | 
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 545     ASSERT_EQ(ERR_UPLOAD_FILE_CHANGED, error_code); | 545     ASSERT_EQ(ERR_UPLOAD_FILE_CHANGED, error_code); | 
| 546   else | 546   else | 
| 547     ASSERT_EQ(OK, error_code); | 547     ASSERT_EQ(OK, error_code); | 
| 548 } | 548 } | 
| 549 | 549 | 
| 550 TEST_F(UploadDataStreamTest, FileChanged) { | 550 TEST_F(UploadDataStreamTest, FileChanged) { | 
| 551   base::FilePath temp_file_path; | 551   base::FilePath temp_file_path; | 
| 552   ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 552   ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 
| 553                                              &temp_file_path)); | 553                                              &temp_file_path)); | 
| 554   ASSERT_EQ(static_cast<int>(kTestDataSize), | 554   ASSERT_EQ(static_cast<int>(kTestDataSize), | 
| 555             file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 555             base::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 
| 556 | 556 | 
| 557   base::File::Info file_info; | 557   base::File::Info file_info; | 
| 558   ASSERT_TRUE(base::GetFileInfo(temp_file_path, &file_info)); | 558   ASSERT_TRUE(base::GetFileInfo(temp_file_path, &file_info)); | 
| 559 | 559 | 
| 560   // Test file not changed. | 560   // Test file not changed. | 
| 561   FileChangedHelper(temp_file_path, file_info.last_modified, false); | 561   FileChangedHelper(temp_file_path, file_info.last_modified, false); | 
| 562 | 562 | 
| 563   // Test file changed. | 563   // Test file changed. | 
| 564   FileChangedHelper(temp_file_path, | 564   FileChangedHelper(temp_file_path, | 
| 565                     file_info.last_modified - base::TimeDelta::FromSeconds(1), | 565                     file_info.last_modified - base::TimeDelta::FromSeconds(1), | 
| 566                     true); | 566                     true); | 
| 567 } | 567 } | 
| 568 | 568 | 
| 569 TEST_F(UploadDataStreamTest, MultipleInit) { | 569 TEST_F(UploadDataStreamTest, MultipleInit) { | 
| 570   base::FilePath temp_file_path; | 570   base::FilePath temp_file_path; | 
| 571   ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 571   ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 
| 572                                              &temp_file_path)); | 572                                              &temp_file_path)); | 
| 573   ASSERT_EQ(static_cast<int>(kTestDataSize), | 573   ASSERT_EQ(static_cast<int>(kTestDataSize), | 
| 574             file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 574             base::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 
| 575 | 575 | 
| 576   // Prepare data. | 576   // Prepare data. | 
| 577   element_readers_.push_back(new UploadBytesElementReader( | 577   element_readers_.push_back(new UploadBytesElementReader( | 
| 578       kTestData, kTestDataSize)); | 578       kTestData, kTestDataSize)); | 
| 579   element_readers_.push_back( | 579   element_readers_.push_back( | 
| 580       new UploadFileElementReader(base::MessageLoopProxy::current().get(), | 580       new UploadFileElementReader(base::MessageLoopProxy::current().get(), | 
| 581                                   temp_file_path, | 581                                   temp_file_path, | 
| 582                                   0, | 582                                   0, | 
| 583                                   kuint64max, | 583                                   kuint64max, | 
| 584                                   base::Time())); | 584                                   base::Time())); | 
| (...skipping 23 matching lines...) Expand all  Loading... | 
| 608   // Read again. | 608   // Read again. | 
| 609   EXPECT_EQ(expected_data, ReadFromUploadDataStream(&stream)); | 609   EXPECT_EQ(expected_data, ReadFromUploadDataStream(&stream)); | 
| 610   EXPECT_TRUE(stream.IsEOF()); | 610   EXPECT_TRUE(stream.IsEOF()); | 
| 611 } | 611 } | 
| 612 | 612 | 
| 613 TEST_F(UploadDataStreamTest, MultipleInitAsync) { | 613 TEST_F(UploadDataStreamTest, MultipleInitAsync) { | 
| 614   base::FilePath temp_file_path; | 614   base::FilePath temp_file_path; | 
| 615   ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 615   ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 
| 616                                              &temp_file_path)); | 616                                              &temp_file_path)); | 
| 617   ASSERT_EQ(static_cast<int>(kTestDataSize), | 617   ASSERT_EQ(static_cast<int>(kTestDataSize), | 
| 618             file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 618             base::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 
| 619   TestCompletionCallback test_callback; | 619   TestCompletionCallback test_callback; | 
| 620 | 620 | 
| 621   // Prepare data. | 621   // Prepare data. | 
| 622   element_readers_.push_back(new UploadBytesElementReader( | 622   element_readers_.push_back(new UploadBytesElementReader( | 
| 623       kTestData, kTestDataSize)); | 623       kTestData, kTestDataSize)); | 
| 624   element_readers_.push_back( | 624   element_readers_.push_back( | 
| 625       new UploadFileElementReader(base::MessageLoopProxy::current().get(), | 625       new UploadFileElementReader(base::MessageLoopProxy::current().get(), | 
| 626                                   temp_file_path, | 626                                   temp_file_path, | 
| 627                                   0, | 627                                   0, | 
| 628                                   kuint64max, | 628                                   kuint64max, | 
| (...skipping 22 matching lines...) Expand all  Loading... | 
| 651   // Read again. | 651   // Read again. | 
| 652   EXPECT_EQ(expected_data, ReadFromUploadDataStream(&stream)); | 652   EXPECT_EQ(expected_data, ReadFromUploadDataStream(&stream)); | 
| 653   EXPECT_TRUE(stream.IsEOF()); | 653   EXPECT_TRUE(stream.IsEOF()); | 
| 654 } | 654 } | 
| 655 | 655 | 
| 656 TEST_F(UploadDataStreamTest, InitToReset) { | 656 TEST_F(UploadDataStreamTest, InitToReset) { | 
| 657   base::FilePath temp_file_path; | 657   base::FilePath temp_file_path; | 
| 658   ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 658   ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 
| 659                                              &temp_file_path)); | 659                                              &temp_file_path)); | 
| 660   ASSERT_EQ(static_cast<int>(kTestDataSize), | 660   ASSERT_EQ(static_cast<int>(kTestDataSize), | 
| 661             file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 661             base::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 
| 662 | 662 | 
| 663   // Prepare data. | 663   // Prepare data. | 
| 664   element_readers_.push_back(new UploadBytesElementReader( | 664   element_readers_.push_back(new UploadBytesElementReader( | 
| 665       kTestData, kTestDataSize)); | 665       kTestData, kTestDataSize)); | 
| 666   element_readers_.push_back( | 666   element_readers_.push_back( | 
| 667       new UploadFileElementReader(base::MessageLoopProxy::current().get(), | 667       new UploadFileElementReader(base::MessageLoopProxy::current().get(), | 
| 668                                   temp_file_path, | 668                                   temp_file_path, | 
| 669                                   0, | 669                                   0, | 
| 670                                   kuint64max, | 670                                   kuint64max, | 
| 671                                   base::Time())); | 671                                   base::Time())); | 
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 708                 wrapped_buffer2.get(), buf2.size(), read_callback2.callback())); | 708                 wrapped_buffer2.get(), buf2.size(), read_callback2.callback())); | 
| 709   EXPECT_EQ(static_cast<int>(buf2.size()), read_callback2.WaitForResult()); | 709   EXPECT_EQ(static_cast<int>(buf2.size()), read_callback2.WaitForResult()); | 
| 710   EXPECT_EQ(expected_data, buf2); | 710   EXPECT_EQ(expected_data, buf2); | 
| 711 } | 711 } | 
| 712 | 712 | 
| 713 TEST_F(UploadDataStreamTest, InitDuringAsyncInit) { | 713 TEST_F(UploadDataStreamTest, InitDuringAsyncInit) { | 
| 714   base::FilePath temp_file_path; | 714   base::FilePath temp_file_path; | 
| 715   ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 715   ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 
| 716                                              &temp_file_path)); | 716                                              &temp_file_path)); | 
| 717   ASSERT_EQ(static_cast<int>(kTestDataSize), | 717   ASSERT_EQ(static_cast<int>(kTestDataSize), | 
| 718             file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 718             base::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 
| 719 | 719 | 
| 720   // Prepare data. | 720   // Prepare data. | 
| 721   element_readers_.push_back(new UploadBytesElementReader( | 721   element_readers_.push_back(new UploadBytesElementReader( | 
| 722       kTestData, kTestDataSize)); | 722       kTestData, kTestDataSize)); | 
| 723   element_readers_.push_back( | 723   element_readers_.push_back( | 
| 724       new UploadFileElementReader(base::MessageLoopProxy::current().get(), | 724       new UploadFileElementReader(base::MessageLoopProxy::current().get(), | 
| 725                                   temp_file_path, | 725                                   temp_file_path, | 
| 726                                   0, | 726                                   0, | 
| 727                                   kuint64max, | 727                                   kuint64max, | 
| 728                                   base::Time())); | 728                                   base::Time())); | 
| (...skipping 27 matching lines...) Expand all  Loading... | 
| 756 | 756 | 
| 757   // Make sure callbacks are not called for cancelled operations. | 757   // Make sure callbacks are not called for cancelled operations. | 
| 758   EXPECT_FALSE(init_callback1.have_result()); | 758   EXPECT_FALSE(init_callback1.have_result()); | 
| 759 } | 759 } | 
| 760 | 760 | 
| 761 TEST_F(UploadDataStreamTest, InitDuringAsyncRead) { | 761 TEST_F(UploadDataStreamTest, InitDuringAsyncRead) { | 
| 762   base::FilePath temp_file_path; | 762   base::FilePath temp_file_path; | 
| 763   ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 763   ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 
| 764                                              &temp_file_path)); | 764                                              &temp_file_path)); | 
| 765   ASSERT_EQ(static_cast<int>(kTestDataSize), | 765   ASSERT_EQ(static_cast<int>(kTestDataSize), | 
| 766             file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 766             base::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 
| 767 | 767 | 
| 768   // Prepare data. | 768   // Prepare data. | 
| 769   element_readers_.push_back(new UploadBytesElementReader( | 769   element_readers_.push_back(new UploadBytesElementReader( | 
| 770       kTestData, kTestDataSize)); | 770       kTestData, kTestDataSize)); | 
| 771   element_readers_.push_back( | 771   element_readers_.push_back( | 
| 772       new UploadFileElementReader(base::MessageLoopProxy::current().get(), | 772       new UploadFileElementReader(base::MessageLoopProxy::current().get(), | 
| 773                                   temp_file_path, | 773                                   temp_file_path, | 
| 774                                   0, | 774                                   0, | 
| 775                                   kuint64max, | 775                                   kuint64max, | 
| 776                                   base::Time())); | 776                                   base::Time())); | 
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 811                 wrapped_buffer2.get(), buf2.size(), read_callback2.callback())); | 811                 wrapped_buffer2.get(), buf2.size(), read_callback2.callback())); | 
| 812   EXPECT_EQ(static_cast<int>(buf2.size()), read_callback2.WaitForResult()); | 812   EXPECT_EQ(static_cast<int>(buf2.size()), read_callback2.WaitForResult()); | 
| 813   EXPECT_EQ(expected_data, buf2); | 813   EXPECT_EQ(expected_data, buf2); | 
| 814   EXPECT_TRUE(stream.IsEOF()); | 814   EXPECT_TRUE(stream.IsEOF()); | 
| 815 | 815 | 
| 816   // Make sure callbacks are not called for cancelled operations. | 816   // Make sure callbacks are not called for cancelled operations. | 
| 817   EXPECT_FALSE(read_callback1.have_result()); | 817   EXPECT_FALSE(read_callback1.have_result()); | 
| 818 } | 818 } | 
| 819 | 819 | 
| 820 }  // namespace net | 820 }  // namespace net | 
| OLD | NEW | 
|---|