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

Side by Side Diff: chrome/browser/google_apis/drive_uploader_unittest.cc

Issue 14215003: Add ProgressCallback to DriveServiceInterface::DownloadFile. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 7 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
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 "chrome/browser/google_apis/drive_uploader.h" 5 #include "chrome/browser/google_apis/drive_uploader.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <cstdlib> 8 #include <cstdlib>
9 #include <string> 9 #include <string>
10 #include <utility> 10 #include <utility>
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
45 std::string* data) { 45 std::string* data) {
46 data->resize(size); 46 data->resize(size);
47 for (size_t i = 0; i < size; ++i) 47 for (size_t i = 0; i < size; ++i)
48 (*data)[i] = static_cast<char>(rand() % 256); // NOLINT 48 (*data)[i] = static_cast<char>(rand() % 256); // NOLINT
49 if (!file_util::CreateTemporaryFileInDir(temp_dir, path)) 49 if (!file_util::CreateTemporaryFileInDir(temp_dir, path))
50 return false; 50 return false;
51 return file_util::WriteFile(*path, data->c_str(), static_cast<int>(size)) == 51 return file_util::WriteFile(*path, data->c_str(), static_cast<int>(size)) ==
52 static_cast<int>(size); 52 static_cast<int>(size);
53 } 53 }
54 54
55 typedef std::pair<int64, int64> ProgressInfo;
56
57 void AppendProgressCallbackResult(std::vector<ProgressInfo>* progress_values,
58 int64 progress,
59 int64 total) {
60 progress_values->push_back(ProgressInfo(progress, total));
61 }
62
63 // Mock DriveService that verifies if the uploaded content matches the preset 55 // Mock DriveService that verifies if the uploaded content matches the preset
64 // expectation. 56 // expectation.
65 class MockDriveServiceWithUploadExpectation : public DummyDriveService { 57 class MockDriveServiceWithUploadExpectation : public DummyDriveService {
66 public: 58 public:
67 // Sets up an expected upload content. InitiateUpload and ResumeUpload will 59 // Sets up an expected upload content. InitiateUpload and ResumeUpload will
68 // verify that the specified data is correctly uploaded. 60 // verify that the specified data is correctly uploaded.
69 explicit MockDriveServiceWithUploadExpectation( 61 explicit MockDriveServiceWithUploadExpectation(
70 const std::string& expected_upload_content) 62 const std::string& expected_upload_content)
71 : expected_upload_content_(expected_upload_content), 63 : expected_upload_content_(expected_upload_content),
72 received_bytes_(0), 64 received_bytes_(0),
(...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 ASSERT_TRUE(CreateFileOfSpecifiedSize(temp_dir_.path(), 0, 300 ASSERT_TRUE(CreateFileOfSpecifiedSize(temp_dir_.path(), 0,
309 &local_path, &data)); 301 &local_path, &data));
310 302
311 DriveUploadError error = DRIVE_UPLOAD_ERROR_ABORT; 303 DriveUploadError error = DRIVE_UPLOAD_ERROR_ABORT;
312 base::FilePath drive_path; 304 base::FilePath drive_path;
313 base::FilePath file_path; 305 base::FilePath file_path;
314 scoped_ptr<ResourceEntry> resource_entry; 306 scoped_ptr<ResourceEntry> resource_entry;
315 307
316 MockDriveServiceWithUploadExpectation mock_service(data); 308 MockDriveServiceWithUploadExpectation mock_service(data);
317 DriveUploader uploader(&mock_service); 309 DriveUploader uploader(&mock_service);
318 std::vector<ProgressInfo> upload_progress_values; 310 std::vector<test_util::ProgressInfo> upload_progress_values;
319 uploader.UploadExistingFile( 311 uploader.UploadExistingFile(
320 kTestInitiateUploadResourceId, 312 kTestInitiateUploadResourceId,
321 base::FilePath::FromUTF8Unsafe(kTestDrivePath), 313 base::FilePath::FromUTF8Unsafe(kTestDrivePath),
322 local_path, 314 local_path,
323 kTestMimeType, 315 kTestMimeType,
324 std::string(), // etag 316 std::string(), // etag
325 test_util::CreateCopyResultCallback( 317 test_util::CreateCopyResultCallback(
326 &error, &drive_path, &file_path, &resource_entry), 318 &error, &drive_path, &file_path, &resource_entry),
327 base::Bind(&AppendProgressCallbackResult, &upload_progress_values)); 319 base::Bind(&test_util::AppendProgressCallbackResult,
320 &upload_progress_values));
328 test_util::RunBlockingPoolTask(); 321 test_util::RunBlockingPoolTask();
329 322
330 EXPECT_EQ(1, mock_service.resume_upload_call_count()); 323 EXPECT_EQ(1, mock_service.resume_upload_call_count());
331 EXPECT_EQ(0, mock_service.received_bytes()); 324 EXPECT_EQ(0, mock_service.received_bytes());
332 EXPECT_EQ(DRIVE_UPLOAD_OK, error); 325 EXPECT_EQ(DRIVE_UPLOAD_OK, error);
333 EXPECT_EQ(base::FilePath::FromUTF8Unsafe(kTestDrivePath), drive_path); 326 EXPECT_EQ(base::FilePath::FromUTF8Unsafe(kTestDrivePath), drive_path);
334 EXPECT_EQ(local_path, file_path); 327 EXPECT_EQ(local_path, file_path);
335 ASSERT_TRUE(resource_entry); 328 ASSERT_TRUE(resource_entry);
336 EXPECT_EQ(kTestDummyId, resource_entry->id()); 329 EXPECT_EQ(kTestDummyId, resource_entry->id());
337 ASSERT_EQ(1U, upload_progress_values.size()); 330 ASSERT_EQ(1U, upload_progress_values.size());
338 EXPECT_EQ(ProgressInfo(0, 0), upload_progress_values[0]); 331 EXPECT_EQ(test_util::ProgressInfo(0, 0), upload_progress_values[0]);
339 } 332 }
340 333
341 TEST_F(DriveUploaderTest, UploadExisting512KB) { 334 TEST_F(DriveUploaderTest, UploadExisting512KB) {
342 base::FilePath local_path; 335 base::FilePath local_path;
343 std::string data; 336 std::string data;
344 ASSERT_TRUE(CreateFileOfSpecifiedSize(temp_dir_.path(), 512 * 1024, 337 ASSERT_TRUE(CreateFileOfSpecifiedSize(temp_dir_.path(), 512 * 1024,
345 &local_path, &data)); 338 &local_path, &data));
346 339
347 DriveUploadError error = DRIVE_UPLOAD_ERROR_ABORT; 340 DriveUploadError error = DRIVE_UPLOAD_ERROR_ABORT;
348 base::FilePath drive_path; 341 base::FilePath drive_path;
349 base::FilePath file_path; 342 base::FilePath file_path;
350 scoped_ptr<ResourceEntry> resource_entry; 343 scoped_ptr<ResourceEntry> resource_entry;
351 344
352 MockDriveServiceWithUploadExpectation mock_service(data); 345 MockDriveServiceWithUploadExpectation mock_service(data);
353 DriveUploader uploader(&mock_service); 346 DriveUploader uploader(&mock_service);
354 std::vector<ProgressInfo> upload_progress_values; 347 std::vector<test_util::ProgressInfo> upload_progress_values;
355 uploader.UploadExistingFile( 348 uploader.UploadExistingFile(
356 kTestInitiateUploadResourceId, 349 kTestInitiateUploadResourceId,
357 base::FilePath::FromUTF8Unsafe(kTestDrivePath), 350 base::FilePath::FromUTF8Unsafe(kTestDrivePath),
358 local_path, 351 local_path,
359 kTestMimeType, 352 kTestMimeType,
360 std::string(), // etag 353 std::string(), // etag
361 test_util::CreateCopyResultCallback( 354 test_util::CreateCopyResultCallback(
362 &error, &drive_path, &file_path, &resource_entry), 355 &error, &drive_path, &file_path, &resource_entry),
363 base::Bind(&AppendProgressCallbackResult, &upload_progress_values)); 356 base::Bind(&test_util::AppendProgressCallbackResult,
357 &upload_progress_values));
364 test_util::RunBlockingPoolTask(); 358 test_util::RunBlockingPoolTask();
365 359
366 // 512KB upload should not be split into multiple chunks. 360 // 512KB upload should not be split into multiple chunks.
367 EXPECT_EQ(1, mock_service.resume_upload_call_count()); 361 EXPECT_EQ(1, mock_service.resume_upload_call_count());
368 EXPECT_EQ(512 * 1024, mock_service.received_bytes()); 362 EXPECT_EQ(512 * 1024, mock_service.received_bytes());
369 EXPECT_EQ(DRIVE_UPLOAD_OK, error); 363 EXPECT_EQ(DRIVE_UPLOAD_OK, error);
370 EXPECT_EQ(base::FilePath::FromUTF8Unsafe(kTestDrivePath), drive_path); 364 EXPECT_EQ(base::FilePath::FromUTF8Unsafe(kTestDrivePath), drive_path);
371 EXPECT_EQ(local_path, file_path); 365 EXPECT_EQ(local_path, file_path);
372 ASSERT_TRUE(resource_entry); 366 ASSERT_TRUE(resource_entry);
373 EXPECT_EQ(kTestDummyId, resource_entry->id()); 367 EXPECT_EQ(kTestDummyId, resource_entry->id());
374 ASSERT_EQ(1U, upload_progress_values.size()); 368 ASSERT_EQ(1U, upload_progress_values.size());
375 EXPECT_EQ(ProgressInfo(512 * 1024, 512 * 1024), upload_progress_values[0]); 369 EXPECT_EQ(test_util::ProgressInfo(512 * 1024, 512 * 1024),
370 upload_progress_values[0]);
376 } 371 }
377 372
378 TEST_F(DriveUploaderTest, UploadExisting1234KB) { 373 TEST_F(DriveUploaderTest, UploadExisting1234KB) {
379 base::FilePath local_path; 374 base::FilePath local_path;
380 std::string data; 375 std::string data;
381 ASSERT_TRUE(CreateFileOfSpecifiedSize(temp_dir_.path(), 1234 * 1024, 376 ASSERT_TRUE(CreateFileOfSpecifiedSize(temp_dir_.path(), 1234 * 1024,
382 &local_path, &data)); 377 &local_path, &data));
383 378
384 DriveUploadError error = DRIVE_UPLOAD_ERROR_ABORT; 379 DriveUploadError error = DRIVE_UPLOAD_ERROR_ABORT;
385 base::FilePath drive_path; 380 base::FilePath drive_path;
386 base::FilePath file_path; 381 base::FilePath file_path;
387 scoped_ptr<ResourceEntry> resource_entry; 382 scoped_ptr<ResourceEntry> resource_entry;
388 383
389 MockDriveServiceWithUploadExpectation mock_service(data); 384 MockDriveServiceWithUploadExpectation mock_service(data);
390 DriveUploader uploader(&mock_service); 385 DriveUploader uploader(&mock_service);
391 std::vector<ProgressInfo> upload_progress_values; 386 std::vector<test_util::ProgressInfo> upload_progress_values;
392 uploader.UploadExistingFile( 387 uploader.UploadExistingFile(
393 kTestInitiateUploadResourceId, 388 kTestInitiateUploadResourceId,
394 base::FilePath::FromUTF8Unsafe(kTestDrivePath), 389 base::FilePath::FromUTF8Unsafe(kTestDrivePath),
395 local_path, 390 local_path,
396 kTestMimeType, 391 kTestMimeType,
397 std::string(), // etag 392 std::string(), // etag
398 test_util::CreateCopyResultCallback( 393 test_util::CreateCopyResultCallback(
399 &error, &drive_path, &file_path, &resource_entry), 394 &error, &drive_path, &file_path, &resource_entry),
400 base::Bind(&AppendProgressCallbackResult, &upload_progress_values)); 395 base::Bind(&test_util::AppendProgressCallbackResult,
396 &upload_progress_values));
401 test_util::RunBlockingPoolTask(); 397 test_util::RunBlockingPoolTask();
402 398
403 // The file should be split into 3 chunks (1234 = 512 + 512 + 210). 399 // The file should be split into 3 chunks (1234 = 512 + 512 + 210).
404 EXPECT_EQ(3, mock_service.resume_upload_call_count()); 400 EXPECT_EQ(3, mock_service.resume_upload_call_count());
405 EXPECT_EQ(1234 * 1024, mock_service.received_bytes()); 401 EXPECT_EQ(1234 * 1024, mock_service.received_bytes());
406 EXPECT_EQ(DRIVE_UPLOAD_OK, error); 402 EXPECT_EQ(DRIVE_UPLOAD_OK, error);
407 EXPECT_EQ(base::FilePath::FromUTF8Unsafe(kTestDrivePath), drive_path); 403 EXPECT_EQ(base::FilePath::FromUTF8Unsafe(kTestDrivePath), drive_path);
408 EXPECT_EQ(local_path, file_path); 404 EXPECT_EQ(local_path, file_path);
409 ASSERT_TRUE(resource_entry); 405 ASSERT_TRUE(resource_entry);
410 EXPECT_EQ(kTestDummyId, resource_entry->id()); 406 EXPECT_EQ(kTestDummyId, resource_entry->id());
411 // It is the duty of DriveUploader to accumulate up the progress value. 407 // It is the duty of DriveUploader to accumulate up the progress value.
412 ASSERT_EQ(3U, upload_progress_values.size()); 408 ASSERT_EQ(3U, upload_progress_values.size());
413 EXPECT_EQ(ProgressInfo(512 * 1024, 1234 * 1024), upload_progress_values[0]); 409 EXPECT_EQ(test_util::ProgressInfo(512 * 1024, 1234 * 1024),
414 EXPECT_EQ(ProgressInfo(1024 * 1024, 1234 * 1024), upload_progress_values[1]); 410 upload_progress_values[0]);
415 EXPECT_EQ(ProgressInfo(1234 * 1024, 1234 * 1024), upload_progress_values[2]); 411 EXPECT_EQ(test_util::ProgressInfo(1024 * 1024, 1234 * 1024),
412 upload_progress_values[1]);
413 EXPECT_EQ(test_util::ProgressInfo(1234 * 1024, 1234 * 1024),
414 upload_progress_values[2]);
416 } 415 }
417 416
418 TEST_F(DriveUploaderTest, UploadNew1234KB) { 417 TEST_F(DriveUploaderTest, UploadNew1234KB) {
419 base::FilePath local_path; 418 base::FilePath local_path;
420 std::string data; 419 std::string data;
421 ASSERT_TRUE(CreateFileOfSpecifiedSize(temp_dir_.path(), 1234 * 1024, 420 ASSERT_TRUE(CreateFileOfSpecifiedSize(temp_dir_.path(), 1234 * 1024,
422 &local_path, &data)); 421 &local_path, &data));
423 422
424 DriveUploadError error = DRIVE_UPLOAD_ERROR_ABORT; 423 DriveUploadError error = DRIVE_UPLOAD_ERROR_ABORT;
425 base::FilePath drive_path; 424 base::FilePath drive_path;
(...skipping 148 matching lines...) Expand 10 before | Expand all | Expand 10 after
574 test_util::CreateCopyResultCallback( 573 test_util::CreateCopyResultCallback(
575 &error, &drive_path, &file_path, &resource_entry), 574 &error, &drive_path, &file_path, &resource_entry),
576 google_apis::ProgressCallback()); 575 google_apis::ProgressCallback());
577 test_util::RunBlockingPoolTask(); 576 test_util::RunBlockingPoolTask();
578 577
579 // Should return failure without doing any attempt to connect to the server. 578 // Should return failure without doing any attempt to connect to the server.
580 EXPECT_EQ(DRIVE_UPLOAD_ERROR_NOT_FOUND, error); 579 EXPECT_EQ(DRIVE_UPLOAD_ERROR_NOT_FOUND, error);
581 } 580 }
582 581
583 } // namespace google_apis 582 } // namespace google_apis
OLDNEW
« no previous file with comments | « chrome/browser/google_apis/drive_service_interface.h ('k') | chrome/browser/google_apis/dummy_drive_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698