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

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

Issue 649763002: git cl format the second third of the net/base directory (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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
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/elements_upload_data_stream.h" 5 #include "net/base/elements_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 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
64 init_result_(OK), 64 init_result_(OK),
65 read_result_(OK) {} 65 read_result_(OK) {}
66 66
67 virtual ~MockUploadElementReader() {} 67 virtual ~MockUploadElementReader() {}
68 68
69 // UploadElementReader overrides. 69 // UploadElementReader overrides.
70 MOCK_METHOD1(Init, int(const CompletionCallback& callback)); 70 MOCK_METHOD1(Init, int(const CompletionCallback& callback));
71 virtual uint64 GetContentLength() const override { return content_length_; } 71 virtual uint64 GetContentLength() const override { return content_length_; }
72 virtual uint64 BytesRemaining() const override { return bytes_remaining_; } 72 virtual uint64 BytesRemaining() const override { return bytes_remaining_; }
73 virtual bool IsInMemory() const override { return is_in_memory_; } 73 virtual bool IsInMemory() const override { return is_in_memory_; }
74 MOCK_METHOD3(Read, int(IOBuffer* buf, 74 MOCK_METHOD3(Read,
75 int buf_length, 75 int(IOBuffer* buf,
76 const CompletionCallback& callback)); 76 int buf_length,
77 const CompletionCallback& callback));
77 78
78 // Sets expectation to return the specified result from Init() asynchronously. 79 // Sets expectation to return the specified result from Init() asynchronously.
79 void SetAsyncInitExpectation(int result) { 80 void SetAsyncInitExpectation(int result) {
80 init_result_ = result; 81 init_result_ = result;
81 EXPECT_CALL(*this, Init(_)) 82 EXPECT_CALL(*this, Init(_))
82 .WillOnce(DoAll(Invoke(this, &MockUploadElementReader::OnInit), 83 .WillOnce(DoAll(Invoke(this, &MockUploadElementReader::OnInit),
83 Return(ERR_IO_PENDING))); 84 Return(ERR_IO_PENDING)));
84 } 85 }
85 86
86 // Sets expectation to return the specified result from Read(). 87 // Sets expectation to return the specified result from Read().
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 scoped_ptr<UploadDataStream> stream( 147 scoped_ptr<UploadDataStream> stream(
147 new ElementsUploadDataStream(element_readers_.Pass(), 0)); 148 new ElementsUploadDataStream(element_readers_.Pass(), 0));
148 ASSERT_EQ(OK, stream->Init(CompletionCallback())); 149 ASSERT_EQ(OK, stream->Init(CompletionCallback()));
149 EXPECT_TRUE(stream->IsInMemory()); 150 EXPECT_TRUE(stream->IsInMemory());
150 EXPECT_EQ(0U, stream->size()); 151 EXPECT_EQ(0U, stream->size());
151 EXPECT_EQ(0U, stream->position()); 152 EXPECT_EQ(0U, stream->position());
152 EXPECT_TRUE(stream->IsEOF()); 153 EXPECT_TRUE(stream->IsEOF());
153 } 154 }
154 155
155 TEST_F(ElementsUploadDataStreamTest, ConsumeAllBytes) { 156 TEST_F(ElementsUploadDataStreamTest, ConsumeAllBytes) {
156 element_readers_.push_back(new UploadBytesElementReader( 157 element_readers_.push_back(
157 kTestData, kTestDataSize)); 158 new UploadBytesElementReader(kTestData, kTestDataSize));
158 scoped_ptr<UploadDataStream> stream( 159 scoped_ptr<UploadDataStream> stream(
159 new ElementsUploadDataStream(element_readers_.Pass(), 0)); 160 new ElementsUploadDataStream(element_readers_.Pass(), 0));
160 ASSERT_EQ(OK, stream->Init(CompletionCallback())); 161 ASSERT_EQ(OK, stream->Init(CompletionCallback()));
161 EXPECT_TRUE(stream->IsInMemory()); 162 EXPECT_TRUE(stream->IsInMemory());
162 EXPECT_EQ(kTestDataSize, stream->size()); 163 EXPECT_EQ(kTestDataSize, stream->size());
163 EXPECT_EQ(0U, stream->position()); 164 EXPECT_EQ(0U, stream->position());
164 EXPECT_FALSE(stream->IsEOF()); 165 EXPECT_FALSE(stream->IsEOF());
165 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); 166 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize);
166 while (!stream->IsEOF()) { 167 while (!stream->IsEOF()) {
167 int bytes_read = 168 int bytes_read =
168 stream->Read(buf.get(), kTestBufferSize, CompletionCallback()); 169 stream->Read(buf.get(), kTestBufferSize, CompletionCallback());
169 ASSERT_LE(0, bytes_read); // Not an error. 170 ASSERT_LE(0, bytes_read); // Not an error.
170 } 171 }
171 EXPECT_EQ(kTestDataSize, stream->position()); 172 EXPECT_EQ(kTestDataSize, stream->position());
172 ASSERT_TRUE(stream->IsEOF()); 173 ASSERT_TRUE(stream->IsEOF());
173 } 174 }
174 175
175 TEST_F(ElementsUploadDataStreamTest, File) { 176 TEST_F(ElementsUploadDataStreamTest, File) {
176 base::FilePath temp_file_path; 177 base::FilePath temp_file_path;
177 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), 178 ASSERT_TRUE(
178 &temp_file_path)); 179 base::CreateTemporaryFileInDir(temp_dir_.path(), &temp_file_path));
179 ASSERT_EQ(static_cast<int>(kTestDataSize), 180 ASSERT_EQ(static_cast<int>(kTestDataSize),
180 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); 181 base::WriteFile(temp_file_path, kTestData, kTestDataSize));
181 182
182 element_readers_.push_back( 183 element_readers_.push_back(
183 new UploadFileElementReader(base::MessageLoopProxy::current().get(), 184 new UploadFileElementReader(base::MessageLoopProxy::current().get(),
184 temp_file_path, 185 temp_file_path,
185 0, 186 0,
186 kuint64max, 187 kuint64max,
187 base::Time())); 188 base::Time()));
188 189
(...skipping 13 matching lines...) Expand all
202 ERR_IO_PENDING, 203 ERR_IO_PENDING,
203 stream->Read(buf.get(), kTestBufferSize, read_callback.callback())); 204 stream->Read(buf.get(), kTestBufferSize, read_callback.callback()));
204 ASSERT_LE(0, read_callback.WaitForResult()); // Not an error. 205 ASSERT_LE(0, read_callback.WaitForResult()); // Not an error.
205 } 206 }
206 EXPECT_EQ(kTestDataSize, stream->position()); 207 EXPECT_EQ(kTestDataSize, stream->position());
207 ASSERT_TRUE(stream->IsEOF()); 208 ASSERT_TRUE(stream->IsEOF());
208 } 209 }
209 210
210 TEST_F(ElementsUploadDataStreamTest, FileSmallerThanLength) { 211 TEST_F(ElementsUploadDataStreamTest, FileSmallerThanLength) {
211 base::FilePath temp_file_path; 212 base::FilePath temp_file_path;
212 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), 213 ASSERT_TRUE(
213 &temp_file_path)); 214 base::CreateTemporaryFileInDir(temp_dir_.path(), &temp_file_path));
214 ASSERT_EQ(static_cast<int>(kTestDataSize), 215 ASSERT_EQ(static_cast<int>(kTestDataSize),
215 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); 216 base::WriteFile(temp_file_path, kTestData, kTestDataSize));
216 const uint64 kFakeSize = kTestDataSize*2; 217 const uint64 kFakeSize = kTestDataSize * 2;
217 218
218 UploadFileElementReader::ScopedOverridingContentLengthForTests 219 UploadFileElementReader::ScopedOverridingContentLengthForTests
219 overriding_content_length(kFakeSize); 220 overriding_content_length(kFakeSize);
220 221
221 element_readers_.push_back( 222 element_readers_.push_back(
222 new UploadFileElementReader(base::MessageLoopProxy::current().get(), 223 new UploadFileElementReader(base::MessageLoopProxy::current().get(),
223 temp_file_path, 224 temp_file_path,
224 0, 225 0,
225 kuint64max, 226 kuint64max,
226 base::Time())); 227 base::Time()));
(...skipping 27 matching lines...) Expand all
254 255
255 TEST_F(ElementsUploadDataStreamTest, ReadErrorSync) { 256 TEST_F(ElementsUploadDataStreamTest, ReadErrorSync) {
256 // This element cannot be read. 257 // This element cannot be read.
257 MockUploadElementReader* reader = 258 MockUploadElementReader* reader =
258 new MockUploadElementReader(kTestDataSize, true); 259 new MockUploadElementReader(kTestDataSize, true);
259 EXPECT_CALL(*reader, Init(_)).WillOnce(Return(OK)); 260 EXPECT_CALL(*reader, Init(_)).WillOnce(Return(OK));
260 reader->SetReadExpectation(ERR_FAILED); 261 reader->SetReadExpectation(ERR_FAILED);
261 element_readers_.push_back(reader); 262 element_readers_.push_back(reader);
262 263
263 // This element is ignored because of the error from the previous reader. 264 // This element is ignored because of the error from the previous reader.
264 element_readers_.push_back(new UploadBytesElementReader( 265 element_readers_.push_back(
265 kTestData, kTestDataSize)); 266 new UploadBytesElementReader(kTestData, kTestDataSize));
266 267
267 scoped_ptr<UploadDataStream> stream( 268 scoped_ptr<UploadDataStream> stream(
268 new ElementsUploadDataStream(element_readers_.Pass(), 0)); 269 new ElementsUploadDataStream(element_readers_.Pass(), 0));
269 270
270 // Run Init(). 271 // Run Init().
271 ASSERT_EQ(OK, stream->Init(CompletionCallback())); 272 ASSERT_EQ(OK, stream->Init(CompletionCallback()));
272 EXPECT_EQ(kTestDataSize*2, stream->size()); 273 EXPECT_EQ(kTestDataSize * 2, stream->size());
273 EXPECT_EQ(0U, stream->position()); 274 EXPECT_EQ(0U, stream->position());
274 EXPECT_FALSE(stream->IsEOF()); 275 EXPECT_FALSE(stream->IsEOF());
275 276
276 // Prepare a buffer filled with non-zero data. 277 // Prepare a buffer filled with non-zero data.
277 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); 278 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize);
278 std::fill_n(buf->data(), kTestBufferSize, -1); 279 std::fill_n(buf->data(), kTestBufferSize, -1);
279 280
280 // Read() results in success even when the reader returns error. 281 // Read() results in success even when the reader returns error.
281 EXPECT_EQ(static_cast<int>(kTestDataSize * 2), 282 EXPECT_EQ(static_cast<int>(kTestDataSize * 2),
282 stream->Read(buf.get(), kTestBufferSize, CompletionCallback())); 283 stream->Read(buf.get(), kTestBufferSize, CompletionCallback()));
283 EXPECT_EQ(kTestDataSize * 2, stream->position()); 284 EXPECT_EQ(kTestDataSize * 2, stream->position());
284 EXPECT_TRUE(stream->IsEOF()); 285 EXPECT_TRUE(stream->IsEOF());
285 286
286 // The buffer is filled with zero. 287 // The buffer is filled with zero.
287 EXPECT_EQ(static_cast<int>(kTestDataSize*2), 288 EXPECT_EQ(static_cast<int>(kTestDataSize * 2),
288 std::count(buf->data(), buf->data() + kTestBufferSize, 0)); 289 std::count(buf->data(), buf->data() + kTestBufferSize, 0));
289 } 290 }
290 291
291 TEST_F(ElementsUploadDataStreamTest, ReadErrorAsync) { 292 TEST_F(ElementsUploadDataStreamTest, ReadErrorAsync) {
292 // This element cannot be read. 293 // This element cannot be read.
293 MockUploadElementReader* reader = 294 MockUploadElementReader* reader =
294 new MockUploadElementReader(kTestDataSize, false); 295 new MockUploadElementReader(kTestDataSize, false);
295 reader->SetAsyncInitExpectation(OK); 296 reader->SetAsyncInitExpectation(OK);
296 reader->SetReadExpectation(ERR_FAILED); 297 reader->SetReadExpectation(ERR_FAILED);
297 element_readers_.push_back(reader); 298 element_readers_.push_back(reader);
298 299
299 // This element is ignored because of the error from the previous reader. 300 // This element is ignored because of the error from the previous reader.
300 element_readers_.push_back(new UploadBytesElementReader( 301 element_readers_.push_back(
301 kTestData, kTestDataSize)); 302 new UploadBytesElementReader(kTestData, kTestDataSize));
302 303
303 scoped_ptr<UploadDataStream> stream( 304 scoped_ptr<UploadDataStream> stream(
304 new ElementsUploadDataStream(element_readers_.Pass(), 0)); 305 new ElementsUploadDataStream(element_readers_.Pass(), 0));
305 306
306 // Run Init(). 307 // Run Init().
307 TestCompletionCallback init_callback; 308 TestCompletionCallback init_callback;
308 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback())); 309 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback()));
309 EXPECT_EQ(OK, init_callback.WaitForResult()); 310 EXPECT_EQ(OK, init_callback.WaitForResult());
310 EXPECT_EQ(kTestDataSize*2, stream->size()); 311 EXPECT_EQ(kTestDataSize * 2, stream->size());
311 EXPECT_EQ(0U, stream->position()); 312 EXPECT_EQ(0U, stream->position());
312 EXPECT_FALSE(stream->IsEOF()); 313 EXPECT_FALSE(stream->IsEOF());
313 314
314 // Prepare a buffer filled with non-zero data. 315 // Prepare a buffer filled with non-zero data.
315 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); 316 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize);
316 std::fill_n(buf->data(), kTestBufferSize, -1); 317 std::fill_n(buf->data(), kTestBufferSize, -1);
317 318
318 // Read() results in success even when the reader returns error. 319 // Read() results in success even when the reader returns error.
319 TestCompletionCallback read_callback; 320 TestCompletionCallback read_callback;
320 ASSERT_EQ(ERR_IO_PENDING, 321 ASSERT_EQ(ERR_IO_PENDING,
321 stream->Read(buf.get(), kTestBufferSize, read_callback.callback())); 322 stream->Read(buf.get(), kTestBufferSize, read_callback.callback()));
322 EXPECT_EQ(static_cast<int>(kTestDataSize * 2), read_callback.WaitForResult()); 323 EXPECT_EQ(static_cast<int>(kTestDataSize * 2), read_callback.WaitForResult());
323 EXPECT_EQ(kTestDataSize*2, stream->position()); 324 EXPECT_EQ(kTestDataSize * 2, stream->position());
324 EXPECT_TRUE(stream->IsEOF()); 325 EXPECT_TRUE(stream->IsEOF());
325 326
326 // The buffer is filled with zero. 327 // The buffer is filled with zero.
327 EXPECT_EQ(static_cast<int>(kTestDataSize*2), 328 EXPECT_EQ(static_cast<int>(kTestDataSize * 2),
328 std::count(buf->data(), buf->data() + kTestBufferSize, 0)); 329 std::count(buf->data(), buf->data() + kTestBufferSize, 0));
329 } 330 }
330 331
331 TEST_F(ElementsUploadDataStreamTest, FileAndBytes) { 332 TEST_F(ElementsUploadDataStreamTest, FileAndBytes) {
332 base::FilePath temp_file_path; 333 base::FilePath temp_file_path;
333 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), 334 ASSERT_TRUE(
334 &temp_file_path)); 335 base::CreateTemporaryFileInDir(temp_dir_.path(), &temp_file_path));
335 ASSERT_EQ(static_cast<int>(kTestDataSize), 336 ASSERT_EQ(static_cast<int>(kTestDataSize),
336 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); 337 base::WriteFile(temp_file_path, kTestData, kTestDataSize));
337 338
338 const uint64 kFileRangeOffset = 1; 339 const uint64 kFileRangeOffset = 1;
339 const uint64 kFileRangeLength = 4; 340 const uint64 kFileRangeLength = 4;
340 element_readers_.push_back( 341 element_readers_.push_back(
341 new UploadFileElementReader(base::MessageLoopProxy::current().get(), 342 new UploadFileElementReader(base::MessageLoopProxy::current().get(),
342 temp_file_path, 343 temp_file_path,
343 kFileRangeOffset, 344 kFileRangeOffset,
344 kFileRangeLength, 345 kFileRangeLength,
345 base::Time())); 346 base::Time()));
346 347
347 element_readers_.push_back(new UploadBytesElementReader( 348 element_readers_.push_back(
348 kTestData, kTestDataSize)); 349 new UploadBytesElementReader(kTestData, kTestDataSize));
349 350
350 const uint64 kStreamSize = kTestDataSize + kFileRangeLength; 351 const uint64 kStreamSize = kTestDataSize + kFileRangeLength;
351 TestCompletionCallback init_callback; 352 TestCompletionCallback init_callback;
352 scoped_ptr<UploadDataStream> stream( 353 scoped_ptr<UploadDataStream> stream(
353 new ElementsUploadDataStream(element_readers_.Pass(), 0)); 354 new ElementsUploadDataStream(element_readers_.Pass(), 0));
354 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback())); 355 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback()));
355 ASSERT_EQ(OK, init_callback.WaitForResult()); 356 ASSERT_EQ(OK, init_callback.WaitForResult());
356 EXPECT_FALSE(stream->IsInMemory()); 357 EXPECT_FALSE(stream->IsInMemory());
357 EXPECT_EQ(kStreamSize, stream->size()); 358 EXPECT_EQ(kStreamSize, stream->size());
358 EXPECT_EQ(0U, stream->position()); 359 EXPECT_EQ(0U, stream->position());
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
439 new ElementsUploadDataStream(element_readers_.Pass(), 0)); 440 new ElementsUploadDataStream(element_readers_.Pass(), 0));
440 441
441 // Run Init(). 442 // Run Init().
442 TestCompletionCallback callback; 443 TestCompletionCallback callback;
443 ASSERT_EQ(ERR_IO_PENDING, stream->Init(callback.callback())); 444 ASSERT_EQ(ERR_IO_PENDING, stream->Init(callback.callback()));
444 EXPECT_EQ(ERR_FAILED, callback.WaitForResult()); 445 EXPECT_EQ(ERR_FAILED, callback.WaitForResult());
445 } 446 }
446 447
447 // Read with a buffer whose size is same as the data. 448 // Read with a buffer whose size is same as the data.
448 TEST_F(ElementsUploadDataStreamTest, ReadAsyncWithExactSizeBuffer) { 449 TEST_F(ElementsUploadDataStreamTest, ReadAsyncWithExactSizeBuffer) {
449 element_readers_.push_back(new UploadBytesElementReader( 450 element_readers_.push_back(
450 kTestData, kTestDataSize)); 451 new UploadBytesElementReader(kTestData, kTestDataSize));
451 scoped_ptr<UploadDataStream> stream( 452 scoped_ptr<UploadDataStream> stream(
452 new ElementsUploadDataStream(element_readers_.Pass(), 0)); 453 new ElementsUploadDataStream(element_readers_.Pass(), 0));
453 454
454 ASSERT_EQ(OK, stream->Init(CompletionCallback())); 455 ASSERT_EQ(OK, stream->Init(CompletionCallback()));
455 EXPECT_TRUE(stream->IsInMemory()); 456 EXPECT_TRUE(stream->IsInMemory());
456 EXPECT_EQ(kTestDataSize, stream->size()); 457 EXPECT_EQ(kTestDataSize, stream->size());
457 EXPECT_EQ(0U, stream->position()); 458 EXPECT_EQ(0U, stream->position());
458 EXPECT_FALSE(stream->IsEOF()); 459 EXPECT_FALSE(stream->IsEOF());
459 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestDataSize); 460 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestDataSize);
460 int bytes_read = stream->Read(buf.get(), kTestDataSize, CompletionCallback()); 461 int bytes_read = stream->Read(buf.get(), kTestDataSize, CompletionCallback());
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
536 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback())); 537 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback()));
537 int error_code = init_callback.WaitForResult(); 538 int error_code = init_callback.WaitForResult();
538 if (error_expected) 539 if (error_expected)
539 ASSERT_EQ(ERR_UPLOAD_FILE_CHANGED, error_code); 540 ASSERT_EQ(ERR_UPLOAD_FILE_CHANGED, error_code);
540 else 541 else
541 ASSERT_EQ(OK, error_code); 542 ASSERT_EQ(OK, error_code);
542 } 543 }
543 544
544 TEST_F(ElementsUploadDataStreamTest, FileChanged) { 545 TEST_F(ElementsUploadDataStreamTest, FileChanged) {
545 base::FilePath temp_file_path; 546 base::FilePath temp_file_path;
546 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), 547 ASSERT_TRUE(
547 &temp_file_path)); 548 base::CreateTemporaryFileInDir(temp_dir_.path(), &temp_file_path));
548 ASSERT_EQ(static_cast<int>(kTestDataSize), 549 ASSERT_EQ(static_cast<int>(kTestDataSize),
549 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); 550 base::WriteFile(temp_file_path, kTestData, kTestDataSize));
550 551
551 base::File::Info file_info; 552 base::File::Info file_info;
552 ASSERT_TRUE(base::GetFileInfo(temp_file_path, &file_info)); 553 ASSERT_TRUE(base::GetFileInfo(temp_file_path, &file_info));
553 554
554 // Test file not changed. 555 // Test file not changed.
555 FileChangedHelper(temp_file_path, file_info.last_modified, false); 556 FileChangedHelper(temp_file_path, file_info.last_modified, false);
556 557
557 // Test file changed. 558 // Test file changed.
558 FileChangedHelper(temp_file_path, 559 FileChangedHelper(temp_file_path,
559 file_info.last_modified - base::TimeDelta::FromSeconds(1), 560 file_info.last_modified - base::TimeDelta::FromSeconds(1),
560 true); 561 true);
561 } 562 }
562 563
563 TEST_F(ElementsUploadDataStreamTest, MultipleInit) { 564 TEST_F(ElementsUploadDataStreamTest, MultipleInit) {
564 base::FilePath temp_file_path; 565 base::FilePath temp_file_path;
565 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), 566 ASSERT_TRUE(
566 &temp_file_path)); 567 base::CreateTemporaryFileInDir(temp_dir_.path(), &temp_file_path));
567 ASSERT_EQ(static_cast<int>(kTestDataSize), 568 ASSERT_EQ(static_cast<int>(kTestDataSize),
568 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); 569 base::WriteFile(temp_file_path, kTestData, kTestDataSize));
569 570
570 // Prepare data. 571 // Prepare data.
571 element_readers_.push_back(new UploadBytesElementReader( 572 element_readers_.push_back(
572 kTestData, kTestDataSize)); 573 new UploadBytesElementReader(kTestData, kTestDataSize));
573 element_readers_.push_back( 574 element_readers_.push_back(
574 new UploadFileElementReader(base::MessageLoopProxy::current().get(), 575 new UploadFileElementReader(base::MessageLoopProxy::current().get(),
575 temp_file_path, 576 temp_file_path,
576 0, 577 0,
577 kuint64max, 578 kuint64max,
578 base::Time())); 579 base::Time()));
579 scoped_ptr<UploadDataStream> stream( 580 scoped_ptr<UploadDataStream> stream(
580 new ElementsUploadDataStream(element_readers_.Pass(), 0)); 581 new ElementsUploadDataStream(element_readers_.Pass(), 0));
581 582
582 std::string expected_data(kTestData, kTestData + kTestDataSize); 583 std::string expected_data(kTestData, kTestData + kTestDataSize);
583 expected_data += expected_data; 584 expected_data += expected_data;
584 585
585 // Call Init(). 586 // Call Init().
586 TestCompletionCallback init_callback1; 587 TestCompletionCallback init_callback1;
587 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback1.callback())); 588 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback1.callback()));
588 ASSERT_EQ(OK, init_callback1.WaitForResult()); 589 ASSERT_EQ(OK, init_callback1.WaitForResult());
589 EXPECT_FALSE(stream->IsEOF()); 590 EXPECT_FALSE(stream->IsEOF());
590 EXPECT_EQ(kTestDataSize*2, stream->size()); 591 EXPECT_EQ(kTestDataSize * 2, stream->size());
591 592
592 // Read. 593 // Read.
593 EXPECT_EQ(expected_data, ReadFromUploadDataStream(stream.get())); 594 EXPECT_EQ(expected_data, ReadFromUploadDataStream(stream.get()));
594 EXPECT_TRUE(stream->IsEOF()); 595 EXPECT_TRUE(stream->IsEOF());
595 596
596 // Call Init() again to reset. 597 // Call Init() again to reset.
597 TestCompletionCallback init_callback2; 598 TestCompletionCallback init_callback2;
598 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback2.callback())); 599 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback2.callback()));
599 ASSERT_EQ(OK, init_callback2.WaitForResult()); 600 ASSERT_EQ(OK, init_callback2.WaitForResult());
600 EXPECT_FALSE(stream->IsEOF()); 601 EXPECT_FALSE(stream->IsEOF());
601 EXPECT_EQ(kTestDataSize*2, stream->size()); 602 EXPECT_EQ(kTestDataSize * 2, stream->size());
602 603
603 // Read again. 604 // Read again.
604 EXPECT_EQ(expected_data, ReadFromUploadDataStream(stream.get())); 605 EXPECT_EQ(expected_data, ReadFromUploadDataStream(stream.get()));
605 EXPECT_TRUE(stream->IsEOF()); 606 EXPECT_TRUE(stream->IsEOF());
606 } 607 }
607 608
608 TEST_F(ElementsUploadDataStreamTest, MultipleInitAsync) { 609 TEST_F(ElementsUploadDataStreamTest, MultipleInitAsync) {
609 base::FilePath temp_file_path; 610 base::FilePath temp_file_path;
610 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), 611 ASSERT_TRUE(
611 &temp_file_path)); 612 base::CreateTemporaryFileInDir(temp_dir_.path(), &temp_file_path));
612 ASSERT_EQ(static_cast<int>(kTestDataSize), 613 ASSERT_EQ(static_cast<int>(kTestDataSize),
613 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); 614 base::WriteFile(temp_file_path, kTestData, kTestDataSize));
614 TestCompletionCallback test_callback; 615 TestCompletionCallback test_callback;
615 616
616 // Prepare data. 617 // Prepare data.
617 element_readers_.push_back(new UploadBytesElementReader( 618 element_readers_.push_back(
618 kTestData, kTestDataSize)); 619 new UploadBytesElementReader(kTestData, kTestDataSize));
619 element_readers_.push_back( 620 element_readers_.push_back(
620 new UploadFileElementReader(base::MessageLoopProxy::current().get(), 621 new UploadFileElementReader(base::MessageLoopProxy::current().get(),
621 temp_file_path, 622 temp_file_path,
622 0, 623 0,
623 kuint64max, 624 kuint64max,
624 base::Time())); 625 base::Time()));
625 scoped_ptr<UploadDataStream> stream( 626 scoped_ptr<UploadDataStream> stream(
626 new ElementsUploadDataStream(element_readers_.Pass(), 0)); 627 new ElementsUploadDataStream(element_readers_.Pass(), 0));
627 628
628 std::string expected_data(kTestData, kTestData + kTestDataSize); 629 std::string expected_data(kTestData, kTestData + kTestDataSize);
629 expected_data += expected_data; 630 expected_data += expected_data;
630 631
631 // Call Init(). 632 // Call Init().
632 ASSERT_EQ(ERR_IO_PENDING, stream->Init(test_callback.callback())); 633 ASSERT_EQ(ERR_IO_PENDING, stream->Init(test_callback.callback()));
633 EXPECT_EQ(OK, test_callback.WaitForResult()); 634 EXPECT_EQ(OK, test_callback.WaitForResult());
634 EXPECT_FALSE(stream->IsEOF()); 635 EXPECT_FALSE(stream->IsEOF());
635 EXPECT_EQ(kTestDataSize*2, stream->size()); 636 EXPECT_EQ(kTestDataSize * 2, stream->size());
636 637
637 // Read. 638 // Read.
638 EXPECT_EQ(expected_data, ReadFromUploadDataStream(stream.get())); 639 EXPECT_EQ(expected_data, ReadFromUploadDataStream(stream.get()));
639 EXPECT_TRUE(stream->IsEOF()); 640 EXPECT_TRUE(stream->IsEOF());
640 641
641 // Call Init() again to reset. 642 // Call Init() again to reset.
642 ASSERT_EQ(ERR_IO_PENDING, stream->Init(test_callback.callback())); 643 ASSERT_EQ(ERR_IO_PENDING, stream->Init(test_callback.callback()));
643 EXPECT_EQ(OK, test_callback.WaitForResult()); 644 EXPECT_EQ(OK, test_callback.WaitForResult());
644 EXPECT_FALSE(stream->IsEOF()); 645 EXPECT_FALSE(stream->IsEOF());
645 EXPECT_EQ(kTestDataSize*2, stream->size()); 646 EXPECT_EQ(kTestDataSize * 2, stream->size());
646 647
647 // Read again. 648 // Read again.
648 EXPECT_EQ(expected_data, ReadFromUploadDataStream(stream.get())); 649 EXPECT_EQ(expected_data, ReadFromUploadDataStream(stream.get()));
649 EXPECT_TRUE(stream->IsEOF()); 650 EXPECT_TRUE(stream->IsEOF());
650 } 651 }
651 652
652 TEST_F(ElementsUploadDataStreamTest, InitToReset) { 653 TEST_F(ElementsUploadDataStreamTest, InitToReset) {
653 base::FilePath temp_file_path; 654 base::FilePath temp_file_path;
654 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), 655 ASSERT_TRUE(
655 &temp_file_path)); 656 base::CreateTemporaryFileInDir(temp_dir_.path(), &temp_file_path));
656 ASSERT_EQ(static_cast<int>(kTestDataSize), 657 ASSERT_EQ(static_cast<int>(kTestDataSize),
657 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); 658 base::WriteFile(temp_file_path, kTestData, kTestDataSize));
658 659
659 // Prepare data. 660 // Prepare data.
660 element_readers_.push_back(new UploadBytesElementReader( 661 element_readers_.push_back(
661 kTestData, kTestDataSize)); 662 new UploadBytesElementReader(kTestData, kTestDataSize));
662 element_readers_.push_back( 663 element_readers_.push_back(
663 new UploadFileElementReader(base::MessageLoopProxy::current().get(), 664 new UploadFileElementReader(base::MessageLoopProxy::current().get(),
664 temp_file_path, 665 temp_file_path,
665 0, 666 0,
666 kuint64max, 667 kuint64max,
667 base::Time())); 668 base::Time()));
668 scoped_ptr<UploadDataStream> stream( 669 scoped_ptr<UploadDataStream> stream(
669 new ElementsUploadDataStream(element_readers_.Pass(), 0)); 670 new ElementsUploadDataStream(element_readers_.Pass(), 0));
670 671
671 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); 672 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize);
672 expected_data.insert(expected_data.end(), expected_data.begin(), 673 expected_data.insert(expected_data.end(),
674 expected_data.begin(),
673 expected_data.begin() + kTestDataSize); 675 expected_data.begin() + kTestDataSize);
674 676
675 // Call Init(). 677 // Call Init().
676 TestCompletionCallback init_callback1; 678 TestCompletionCallback init_callback1;
677 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback1.callback())); 679 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback1.callback()));
678 EXPECT_EQ(OK, init_callback1.WaitForResult()); 680 EXPECT_EQ(OK, init_callback1.WaitForResult());
679 EXPECT_FALSE(stream->IsEOF()); 681 EXPECT_FALSE(stream->IsEOF());
680 EXPECT_EQ(kTestDataSize*2, stream->size()); 682 EXPECT_EQ(kTestDataSize * 2, stream->size());
681 683
682 // Read some. 684 // Read some.
683 TestCompletionCallback read_callback1; 685 TestCompletionCallback read_callback1;
684 std::vector<char> buf(kTestDataSize + kTestDataSize/2); 686 std::vector<char> buf(kTestDataSize + kTestDataSize / 2);
685 scoped_refptr<IOBuffer> wrapped_buffer = new WrappedIOBuffer(&buf[0]); 687 scoped_refptr<IOBuffer> wrapped_buffer = new WrappedIOBuffer(&buf[0]);
686 EXPECT_EQ( 688 EXPECT_EQ(ERR_IO_PENDING,
687 ERR_IO_PENDING, 689 stream->Read(
688 stream->Read(wrapped_buffer.get(), buf.size(), 690 wrapped_buffer.get(), buf.size(), read_callback1.callback()));
689 read_callback1.callback()));
690 EXPECT_EQ(static_cast<int>(buf.size()), read_callback1.WaitForResult()); 691 EXPECT_EQ(static_cast<int>(buf.size()), read_callback1.WaitForResult());
691 EXPECT_EQ(buf.size(), stream->position()); 692 EXPECT_EQ(buf.size(), stream->position());
692 693
693 // Call Init to reset the state. 694 // Call Init to reset the state.
694 TestCompletionCallback init_callback2; 695 TestCompletionCallback init_callback2;
695 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback2.callback())); 696 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback2.callback()));
696 EXPECT_EQ(OK, init_callback2.WaitForResult()); 697 EXPECT_EQ(OK, init_callback2.WaitForResult());
697 EXPECT_FALSE(stream->IsEOF()); 698 EXPECT_FALSE(stream->IsEOF());
698 EXPECT_EQ(kTestDataSize*2, stream->size()); 699 EXPECT_EQ(kTestDataSize * 2, stream->size());
699 700
700 // Read. 701 // Read.
701 TestCompletionCallback read_callback2; 702 TestCompletionCallback read_callback2;
702 std::vector<char> buf2(kTestDataSize*2); 703 std::vector<char> buf2(kTestDataSize * 2);
703 scoped_refptr<IOBuffer> wrapped_buffer2 = new WrappedIOBuffer(&buf2[0]); 704 scoped_refptr<IOBuffer> wrapped_buffer2 = new WrappedIOBuffer(&buf2[0]);
704 EXPECT_EQ(ERR_IO_PENDING, 705 EXPECT_EQ(ERR_IO_PENDING,
705 stream->Read( 706 stream->Read(
706 wrapped_buffer2.get(), buf2.size(), read_callback2.callback())); 707 wrapped_buffer2.get(), buf2.size(), read_callback2.callback()));
707 EXPECT_EQ(static_cast<int>(buf2.size()), read_callback2.WaitForResult()); 708 EXPECT_EQ(static_cast<int>(buf2.size()), read_callback2.WaitForResult());
708 EXPECT_EQ(expected_data, buf2); 709 EXPECT_EQ(expected_data, buf2);
709 } 710 }
710 711
711 TEST_F(ElementsUploadDataStreamTest, InitDuringAsyncInit) { 712 TEST_F(ElementsUploadDataStreamTest, InitDuringAsyncInit) {
712 base::FilePath temp_file_path; 713 base::FilePath temp_file_path;
713 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), 714 ASSERT_TRUE(
714 &temp_file_path)); 715 base::CreateTemporaryFileInDir(temp_dir_.path(), &temp_file_path));
715 ASSERT_EQ(static_cast<int>(kTestDataSize), 716 ASSERT_EQ(static_cast<int>(kTestDataSize),
716 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); 717 base::WriteFile(temp_file_path, kTestData, kTestDataSize));
717 718
718 // Prepare data. 719 // Prepare data.
719 element_readers_.push_back(new UploadBytesElementReader( 720 element_readers_.push_back(
720 kTestData, kTestDataSize)); 721 new UploadBytesElementReader(kTestData, kTestDataSize));
721 element_readers_.push_back( 722 element_readers_.push_back(
722 new UploadFileElementReader(base::MessageLoopProxy::current().get(), 723 new UploadFileElementReader(base::MessageLoopProxy::current().get(),
723 temp_file_path, 724 temp_file_path,
724 0, 725 0,
725 kuint64max, 726 kuint64max,
726 base::Time())); 727 base::Time()));
727 scoped_ptr<UploadDataStream> stream( 728 scoped_ptr<UploadDataStream> stream(
728 new ElementsUploadDataStream(element_readers_.Pass(), 0)); 729 new ElementsUploadDataStream(element_readers_.Pass(), 0));
729 730
730 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); 731 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize);
731 expected_data.insert(expected_data.end(), expected_data.begin(), 732 expected_data.insert(expected_data.end(),
733 expected_data.begin(),
732 expected_data.begin() + kTestDataSize); 734 expected_data.begin() + kTestDataSize);
733 735
734 // Start Init. 736 // Start Init.
735 TestCompletionCallback init_callback1; 737 TestCompletionCallback init_callback1;
736 EXPECT_EQ(ERR_IO_PENDING, stream->Init(init_callback1.callback())); 738 EXPECT_EQ(ERR_IO_PENDING, stream->Init(init_callback1.callback()));
737 739
738 // Call Init again to cancel the previous init. 740 // Call Init again to cancel the previous init.
739 TestCompletionCallback init_callback2; 741 TestCompletionCallback init_callback2;
740 EXPECT_EQ(ERR_IO_PENDING, stream->Init(init_callback2.callback())); 742 EXPECT_EQ(ERR_IO_PENDING, stream->Init(init_callback2.callback()));
741 EXPECT_EQ(OK, init_callback2.WaitForResult()); 743 EXPECT_EQ(OK, init_callback2.WaitForResult());
742 EXPECT_FALSE(stream->IsEOF()); 744 EXPECT_FALSE(stream->IsEOF());
743 EXPECT_EQ(kTestDataSize*2, stream->size()); 745 EXPECT_EQ(kTestDataSize * 2, stream->size());
744 746
745 // Read. 747 // Read.
746 TestCompletionCallback read_callback2; 748 TestCompletionCallback read_callback2;
747 std::vector<char> buf2(kTestDataSize*2); 749 std::vector<char> buf2(kTestDataSize * 2);
748 scoped_refptr<IOBuffer> wrapped_buffer2 = new WrappedIOBuffer(&buf2[0]); 750 scoped_refptr<IOBuffer> wrapped_buffer2 = new WrappedIOBuffer(&buf2[0]);
749 EXPECT_EQ(ERR_IO_PENDING, 751 EXPECT_EQ(ERR_IO_PENDING,
750 stream->Read( 752 stream->Read(
751 wrapped_buffer2.get(), buf2.size(), read_callback2.callback())); 753 wrapped_buffer2.get(), buf2.size(), read_callback2.callback()));
752 EXPECT_EQ(static_cast<int>(buf2.size()), read_callback2.WaitForResult()); 754 EXPECT_EQ(static_cast<int>(buf2.size()), read_callback2.WaitForResult());
753 EXPECT_EQ(expected_data, buf2); 755 EXPECT_EQ(expected_data, buf2);
754 EXPECT_TRUE(stream->IsEOF()); 756 EXPECT_TRUE(stream->IsEOF());
755 757
756 // Make sure callbacks are not called for cancelled operations. 758 // Make sure callbacks are not called for cancelled operations.
757 EXPECT_FALSE(init_callback1.have_result()); 759 EXPECT_FALSE(init_callback1.have_result());
758 } 760 }
759 761
760 TEST_F(ElementsUploadDataStreamTest, InitDuringAsyncRead) { 762 TEST_F(ElementsUploadDataStreamTest, InitDuringAsyncRead) {
761 base::FilePath temp_file_path; 763 base::FilePath temp_file_path;
762 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), 764 ASSERT_TRUE(
763 &temp_file_path)); 765 base::CreateTemporaryFileInDir(temp_dir_.path(), &temp_file_path));
764 ASSERT_EQ(static_cast<int>(kTestDataSize), 766 ASSERT_EQ(static_cast<int>(kTestDataSize),
765 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); 767 base::WriteFile(temp_file_path, kTestData, kTestDataSize));
766 768
767 // Prepare data. 769 // Prepare data.
768 element_readers_.push_back(new UploadBytesElementReader( 770 element_readers_.push_back(
769 kTestData, kTestDataSize)); 771 new UploadBytesElementReader(kTestData, kTestDataSize));
770 element_readers_.push_back( 772 element_readers_.push_back(
771 new UploadFileElementReader(base::MessageLoopProxy::current().get(), 773 new UploadFileElementReader(base::MessageLoopProxy::current().get(),
772 temp_file_path, 774 temp_file_path,
773 0, 775 0,
774 kuint64max, 776 kuint64max,
775 base::Time())); 777 base::Time()));
776 scoped_ptr<UploadDataStream> stream( 778 scoped_ptr<UploadDataStream> stream(
777 new ElementsUploadDataStream(element_readers_.Pass(), 0)); 779 new ElementsUploadDataStream(element_readers_.Pass(), 0));
778 780
779 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); 781 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize);
780 expected_data.insert(expected_data.end(), expected_data.begin(), 782 expected_data.insert(expected_data.end(),
783 expected_data.begin(),
781 expected_data.begin() + kTestDataSize); 784 expected_data.begin() + kTestDataSize);
782 785
783 // Call Init(). 786 // Call Init().
784 TestCompletionCallback init_callback1; 787 TestCompletionCallback init_callback1;
785 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback1.callback())); 788 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback1.callback()));
786 EXPECT_EQ(OK, init_callback1.WaitForResult()); 789 EXPECT_EQ(OK, init_callback1.WaitForResult());
787 EXPECT_FALSE(stream->IsEOF()); 790 EXPECT_FALSE(stream->IsEOF());
788 EXPECT_EQ(kTestDataSize*2, stream->size()); 791 EXPECT_EQ(kTestDataSize * 2, stream->size());
789 792
790 // Start reading. 793 // Start reading.
791 TestCompletionCallback read_callback1; 794 TestCompletionCallback read_callback1;
792 std::vector<char> buf(kTestDataSize*2); 795 std::vector<char> buf(kTestDataSize * 2);
793 scoped_refptr<IOBuffer> wrapped_buffer = new WrappedIOBuffer(&buf[0]); 796 scoped_refptr<IOBuffer> wrapped_buffer = new WrappedIOBuffer(&buf[0]);
794 EXPECT_EQ( 797 EXPECT_EQ(ERR_IO_PENDING,
795 ERR_IO_PENDING, 798 stream->Read(
796 stream->Read(wrapped_buffer.get(), buf.size(), 799 wrapped_buffer.get(), buf.size(), read_callback1.callback()));
797 read_callback1.callback()));
798 800
799 // Call Init to cancel the previous read. 801 // Call Init to cancel the previous read.
800 TestCompletionCallback init_callback2; 802 TestCompletionCallback init_callback2;
801 EXPECT_EQ(ERR_IO_PENDING, stream->Init(init_callback2.callback())); 803 EXPECT_EQ(ERR_IO_PENDING, stream->Init(init_callback2.callback()));
802 EXPECT_EQ(OK, init_callback2.WaitForResult()); 804 EXPECT_EQ(OK, init_callback2.WaitForResult());
803 EXPECT_FALSE(stream->IsEOF()); 805 EXPECT_FALSE(stream->IsEOF());
804 EXPECT_EQ(kTestDataSize*2, stream->size()); 806 EXPECT_EQ(kTestDataSize * 2, stream->size());
805 807
806 // Read. 808 // Read.
807 TestCompletionCallback read_callback2; 809 TestCompletionCallback read_callback2;
808 std::vector<char> buf2(kTestDataSize*2); 810 std::vector<char> buf2(kTestDataSize * 2);
809 scoped_refptr<IOBuffer> wrapped_buffer2 = new WrappedIOBuffer(&buf2[0]); 811 scoped_refptr<IOBuffer> wrapped_buffer2 = new WrappedIOBuffer(&buf2[0]);
810 EXPECT_EQ(ERR_IO_PENDING, 812 EXPECT_EQ(ERR_IO_PENDING,
811 stream->Read( 813 stream->Read(
812 wrapped_buffer2.get(), buf2.size(), read_callback2.callback())); 814 wrapped_buffer2.get(), buf2.size(), read_callback2.callback()));
813 EXPECT_EQ(static_cast<int>(buf2.size()), read_callback2.WaitForResult()); 815 EXPECT_EQ(static_cast<int>(buf2.size()), read_callback2.WaitForResult());
814 EXPECT_EQ(expected_data, buf2); 816 EXPECT_EQ(expected_data, buf2);
815 EXPECT_TRUE(stream->IsEOF()); 817 EXPECT_TRUE(stream->IsEOF());
816 818
817 // Make sure callbacks are not called for cancelled operations. 819 // Make sure callbacks are not called for cancelled operations.
818 EXPECT_FALSE(read_callback1.have_result()); 820 EXPECT_FALSE(read_callback1.have_result());
819 } 821 }
820 822
821 } // namespace net 823 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698