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

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

Issue 2077353002: [TEST ONLY] Run tests for 2030353002 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: upload read error Created 4 years, 6 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
« no previous file with comments | « net/base/elements_upload_data_stream.cc ('k') | net/base/upload_data_stream.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/elements_upload_data_stream.h" 5 #include "net/base/elements_upload_data_stream.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <limits> 10 #include <limits>
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after
225 std::numeric_limits<uint64_t>::max(), base::Time()))); 225 std::numeric_limits<uint64_t>::max(), base::Time())));
226 226
227 TestCompletionCallback init_callback; 227 TestCompletionCallback init_callback;
228 std::unique_ptr<UploadDataStream> stream( 228 std::unique_ptr<UploadDataStream> stream(
229 new ElementsUploadDataStream(std::move(element_readers_), 0)); 229 new ElementsUploadDataStream(std::move(element_readers_), 0));
230 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback())); 230 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback()));
231 ASSERT_EQ(OK, init_callback.WaitForResult()); 231 ASSERT_EQ(OK, init_callback.WaitForResult());
232 EXPECT_FALSE(stream->IsInMemory()); 232 EXPECT_FALSE(stream->IsInMemory());
233 EXPECT_EQ(kFakeSize, stream->size()); 233 EXPECT_EQ(kFakeSize, stream->size());
234 EXPECT_EQ(0U, stream->position()); 234 EXPECT_EQ(0U, stream->position());
235
236 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize);
235 EXPECT_FALSE(stream->IsEOF()); 237 EXPECT_FALSE(stream->IsEOF());
236 uint64_t read_counter = 0; 238
237 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); 239 TestCompletionCallback read_callback;
238 while (!stream->IsEOF()) { 240 ASSERT_EQ(ERR_IO_PENDING,
239 TestCompletionCallback read_callback; 241 stream->Read(buf.get(), kTestBufferSize, read_callback.callback()));
240 ASSERT_EQ( 242 int bytes_read = read_callback.WaitForResult();
241 ERR_IO_PENDING, 243
242 stream->Read(buf.get(), kTestBufferSize, read_callback.callback())); 244 // UpdateDataStream will return error if there is something wrong.
243 int bytes_read = read_callback.WaitForResult(); 245 // Thus, |bytes_read| is actual error.
244 ASSERT_LE(0, bytes_read); // Not an error. 246 EXPECT_EQ(ERR_UPLOAD_FILE_CHANGED, bytes_read);
245 read_counter += bytes_read; 247 EXPECT_EQ(0U, stream->position());
246 EXPECT_EQ(read_counter, stream->position()); 248 EXPECT_FALSE(stream->IsEOF());
247 }
248 // UpdateDataStream will pad out the file with 0 bytes so that the HTTP
249 // transaction doesn't hang. Therefore we expected the full size.
250 EXPECT_EQ(kFakeSize, read_counter);
251 EXPECT_EQ(read_counter, stream->position());
252 } 249 }
253 250
254 TEST_F(ElementsUploadDataStreamTest, ReadErrorSync) { 251 TEST_F(ElementsUploadDataStreamTest, ReadErrorSync) {
255 // This element cannot be read. 252 // This element cannot be read.
256 std::unique_ptr<MockUploadElementReader> reader( 253 std::unique_ptr<MockUploadElementReader> reader(
257 new MockUploadElementReader(kTestDataSize, true)); 254 new MockUploadElementReader(kTestDataSize, true));
258 EXPECT_CALL(*reader, Init(_)).WillOnce(Return(OK)); 255 EXPECT_CALL(*reader, Init(_)).WillOnce(Return(OK));
259 reader->SetReadExpectation(ERR_FAILED); 256 reader->SetReadExpectation(ERR_FAILED);
260 element_readers_.push_back(std::move(reader)); 257 element_readers_.push_back(std::move(reader));
261 258
262 // This element is ignored because of the error from the previous reader. 259 // This element is ignored because of the error from the previous reader.
263 element_readers_.push_back( 260 element_readers_.push_back(
264 base::WrapUnique(new UploadBytesElementReader(kTestData, kTestDataSize))); 261 base::WrapUnique(new UploadBytesElementReader(kTestData, kTestDataSize)));
265 262
266 std::unique_ptr<UploadDataStream> stream( 263 std::unique_ptr<UploadDataStream> stream(
267 new ElementsUploadDataStream(std::move(element_readers_), 0)); 264 new ElementsUploadDataStream(std::move(element_readers_), 0));
268 265
269 // Run Init(). 266 // Run Init().
270 ASSERT_EQ(OK, stream->Init(CompletionCallback())); 267 ASSERT_EQ(OK, stream->Init(CompletionCallback()));
271 EXPECT_EQ(kTestDataSize*2, stream->size()); 268 EXPECT_EQ(kTestDataSize*2, stream->size());
272 EXPECT_EQ(0U, stream->position()); 269 EXPECT_EQ(0U, stream->position());
273 EXPECT_FALSE(stream->IsEOF()); 270 EXPECT_FALSE(stream->IsEOF());
274 271
275 // Prepare a buffer filled with non-zero data. 272 // Prepare a buffer filled with non-zero data.
276 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); 273 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize);
277 std::fill_n(buf->data(), kTestBufferSize, -1); 274 std::fill_n(buf->data(), kTestBufferSize, -1);
278 275
279 // Read() results in success even when the reader returns error. 276 // Read() results in success even when the reader returns error.
280 EXPECT_EQ(static_cast<int>(kTestDataSize * 2), 277 EXPECT_EQ(ERR_FAILED,
281 stream->Read(buf.get(), kTestBufferSize, CompletionCallback())); 278 stream->Read(buf.get(), kTestBufferSize, CompletionCallback()));
282 EXPECT_EQ(kTestDataSize * 2, stream->position()); 279 EXPECT_EQ(0U, stream->position());
283 EXPECT_TRUE(stream->IsEOF()); 280 EXPECT_FALSE(stream->IsEOF());
284 281
285 // The buffer is filled with zero. 282 // The buffer is filled with zero.
286 EXPECT_EQ(static_cast<int>(kTestDataSize*2), 283 EXPECT_EQ(0, std::count(buf->data(), buf->data() + kTestBufferSize, 0));
287 std::count(buf->data(), buf->data() + kTestBufferSize, 0));
288 } 284 }
289 285
290 TEST_F(ElementsUploadDataStreamTest, ReadErrorAsync) { 286 TEST_F(ElementsUploadDataStreamTest, ReadErrorAsync) {
291 // This element cannot be read. 287 // This element cannot be read.
292 std::unique_ptr<MockUploadElementReader> reader( 288 std::unique_ptr<MockUploadElementReader> reader(
293 new MockUploadElementReader(kTestDataSize, false)); 289 new MockUploadElementReader(kTestDataSize, false));
294 reader->SetAsyncInitExpectation(OK); 290 reader->SetAsyncInitExpectation(OK);
295 reader->SetReadExpectation(ERR_FAILED); 291 reader->SetReadExpectation(ERR_FAILED);
296 element_readers_.push_back(std::move(reader)); 292 element_readers_.push_back(std::move(reader));
297 293
(...skipping 13 matching lines...) Expand all
311 EXPECT_FALSE(stream->IsEOF()); 307 EXPECT_FALSE(stream->IsEOF());
312 308
313 // Prepare a buffer filled with non-zero data. 309 // Prepare a buffer filled with non-zero data.
314 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); 310 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize);
315 std::fill_n(buf->data(), kTestBufferSize, -1); 311 std::fill_n(buf->data(), kTestBufferSize, -1);
316 312
317 // Read() results in success even when the reader returns error. 313 // Read() results in success even when the reader returns error.
318 TestCompletionCallback read_callback; 314 TestCompletionCallback read_callback;
319 ASSERT_EQ(ERR_IO_PENDING, 315 ASSERT_EQ(ERR_IO_PENDING,
320 stream->Read(buf.get(), kTestBufferSize, read_callback.callback())); 316 stream->Read(buf.get(), kTestBufferSize, read_callback.callback()));
321 EXPECT_EQ(static_cast<int>(kTestDataSize * 2), read_callback.WaitForResult()); 317 EXPECT_EQ(ERR_FAILED, read_callback.WaitForResult());
322 EXPECT_EQ(kTestDataSize*2, stream->position()); 318 EXPECT_EQ(0U, stream->position());
323 EXPECT_TRUE(stream->IsEOF()); 319 EXPECT_FALSE(stream->IsEOF());
324 320
325 // The buffer is filled with zero. 321 // The buffer is empty
326 EXPECT_EQ(static_cast<int>(kTestDataSize*2), 322 EXPECT_EQ(0, std::count(buf->data(), buf->data() + kTestBufferSize, 0));
327 std::count(buf->data(), buf->data() + kTestBufferSize, 0));
328 } 323 }
329 324
330 TEST_F(ElementsUploadDataStreamTest, FileAndBytes) { 325 TEST_F(ElementsUploadDataStreamTest, FileAndBytes) {
331 base::FilePath temp_file_path; 326 base::FilePath temp_file_path;
332 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), 327 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(),
333 &temp_file_path)); 328 &temp_file_path));
334 ASSERT_EQ(static_cast<int>(kTestDataSize), 329 ASSERT_EQ(static_cast<int>(kTestDataSize),
335 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); 330 base::WriteFile(temp_file_path, kTestData, kTestDataSize));
336 331
337 const uint64_t kFileRangeOffset = 1; 332 const uint64_t kFileRangeOffset = 1;
(...skipping 459 matching lines...) Expand 10 before | Expand all | Expand 10 after
797 wrapped_buffer2.get(), buf2.size(), read_callback2.callback())); 792 wrapped_buffer2.get(), buf2.size(), read_callback2.callback()));
798 EXPECT_EQ(static_cast<int>(buf2.size()), read_callback2.WaitForResult()); 793 EXPECT_EQ(static_cast<int>(buf2.size()), read_callback2.WaitForResult());
799 EXPECT_EQ(expected_data, buf2); 794 EXPECT_EQ(expected_data, buf2);
800 EXPECT_TRUE(stream->IsEOF()); 795 EXPECT_TRUE(stream->IsEOF());
801 796
802 // Make sure callbacks are not called for cancelled operations. 797 // Make sure callbacks are not called for cancelled operations.
803 EXPECT_FALSE(read_callback1.have_result()); 798 EXPECT_FALSE(read_callback1.have_result());
804 } 799 }
805 800
806 } // namespace net 801 } // namespace net
OLDNEW
« no previous file with comments | « net/base/elements_upload_data_stream.cc ('k') | net/base/upload_data_stream.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698