| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 <deque> | 5 #include <deque> |
| 6 #include <string> | 6 #include <string> |
| 7 | 7 |
| 8 #include "base/basictypes.h" | 8 #include "base/basictypes.h" |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/memory/weak_ptr.h" | 10 #include "base/memory/weak_ptr.h" |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 55 : public SyncTaskManager::Client, | 55 : public SyncTaskManager::Client, |
| 56 public base::SupportsWeakPtr<TaskManagerClient> { | 56 public base::SupportsWeakPtr<TaskManagerClient> { |
| 57 public: | 57 public: |
| 58 explicit TaskManagerClient(int64 maximum_background_task) | 58 explicit TaskManagerClient(int64 maximum_background_task) |
| 59 : maybe_schedule_next_task_count_(0), | 59 : maybe_schedule_next_task_count_(0), |
| 60 task_scheduled_count_(0), | 60 task_scheduled_count_(0), |
| 61 idle_task_scheduled_count_(0), | 61 idle_task_scheduled_count_(0), |
| 62 last_operation_status_(SYNC_STATUS_OK) { | 62 last_operation_status_(SYNC_STATUS_OK) { |
| 63 task_manager_.reset(new SyncTaskManager( | 63 task_manager_.reset(new SyncTaskManager( |
| 64 AsWeakPtr(), maximum_background_task, | 64 AsWeakPtr(), maximum_background_task, |
| 65 base::ThreadTaskRunnerHandle::Get())); | 65 base::ThreadTaskRunnerHandle::Get(), |
| 66 nullptr /* worker_pool */)); |
| 66 task_manager_->Initialize(SYNC_STATUS_OK); | 67 task_manager_->Initialize(SYNC_STATUS_OK); |
| 67 base::MessageLoop::current()->RunUntilIdle(); | 68 base::MessageLoop::current()->RunUntilIdle(); |
| 68 maybe_schedule_next_task_count_ = 0; | 69 maybe_schedule_next_task_count_ = 0; |
| 69 } | 70 } |
| 70 ~TaskManagerClient() override {} | 71 ~TaskManagerClient() override {} |
| 71 | 72 |
| 72 // DriveFileSyncManager::Client overrides. | 73 // DriveFileSyncManager::Client overrides. |
| 73 void MaybeScheduleNextTask() override { ++maybe_schedule_next_task_count_; } | 74 void MaybeScheduleNextTask() override { ++maybe_schedule_next_task_count_; } |
| 74 void NotifyLastOperationStatus(SyncStatusCode last_operation_status, | 75 void NotifyLastOperationStatus(SyncStatusCode last_operation_status, |
| 75 bool last_operation_used_network) override { | 76 bool last_operation_used_network) override { |
| (...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 385 | 386 |
| 386 int callback_count = 0; | 387 int callback_count = 0; |
| 387 SyncStatusCode status = SYNC_STATUS_UNKNOWN; | 388 SyncStatusCode status = SYNC_STATUS_UNKNOWN; |
| 388 | 389 |
| 389 bool task_started = false; | 390 bool task_started = false; |
| 390 bool task_completed = false; | 391 bool task_completed = false; |
| 391 | 392 |
| 392 { | 393 { |
| 393 SyncTaskManager task_manager(base::WeakPtr<SyncTaskManager::Client>(), | 394 SyncTaskManager task_manager(base::WeakPtr<SyncTaskManager::Client>(), |
| 394 0 /* maximum_background_task */, | 395 0 /* maximum_background_task */, |
| 395 base::ThreadTaskRunnerHandle::Get()); | 396 base::ThreadTaskRunnerHandle::Get(), |
| 397 nullptr /* worker_pool */); |
| 396 task_manager.Initialize(SYNC_STATUS_OK); | 398 task_manager.Initialize(SYNC_STATUS_OK); |
| 397 message_loop.RunUntilIdle(); | 399 message_loop.RunUntilIdle(); |
| 398 task_manager.ScheduleSyncTask( | 400 task_manager.ScheduleSyncTask( |
| 399 FROM_HERE, | 401 FROM_HERE, |
| 400 scoped_ptr<SyncTask>(new MultihopSyncTask( | 402 scoped_ptr<SyncTask>(new MultihopSyncTask( |
| 401 &task_started, &task_completed)), | 403 &task_started, &task_completed)), |
| 402 SyncTaskManager::PRIORITY_MED, | 404 SyncTaskManager::PRIORITY_MED, |
| 403 base::Bind(&IncrementAndAssign, 0, &callback_count, &status)); | 405 base::Bind(&IncrementAndAssign, 0, &callback_count, &status)); |
| 404 } | 406 } |
| 405 message_loop.RunUntilIdle(); | 407 message_loop.RunUntilIdle(); |
| 406 | 408 |
| 407 EXPECT_EQ(0, callback_count); | 409 EXPECT_EQ(0, callback_count); |
| 408 EXPECT_EQ(SYNC_STATUS_UNKNOWN, status); | 410 EXPECT_EQ(SYNC_STATUS_UNKNOWN, status); |
| 409 EXPECT_TRUE(task_started); | 411 EXPECT_TRUE(task_started); |
| 410 EXPECT_FALSE(task_completed); | 412 EXPECT_FALSE(task_completed); |
| 411 } | 413 } |
| 412 | 414 |
| 413 TEST(SyncTaskManagerTest, ScheduleTaskAtPriority) { | 415 TEST(SyncTaskManagerTest, ScheduleTaskAtPriority) { |
| 414 base::MessageLoop message_loop; | 416 base::MessageLoop message_loop; |
| 415 SyncTaskManager task_manager(base::WeakPtr<SyncTaskManager::Client>(), | 417 SyncTaskManager task_manager(base::WeakPtr<SyncTaskManager::Client>(), |
| 416 0 /* maximum_background_task */, | 418 0 /* maximum_background_task */, |
| 417 base::ThreadTaskRunnerHandle::Get()); | 419 base::ThreadTaskRunnerHandle::Get(), |
| 420 nullptr /* worker_pool */); |
| 418 task_manager.Initialize(SYNC_STATUS_OK); | 421 task_manager.Initialize(SYNC_STATUS_OK); |
| 419 message_loop.RunUntilIdle(); | 422 message_loop.RunUntilIdle(); |
| 420 | 423 |
| 421 int callback_count = 0; | 424 int callback_count = 0; |
| 422 SyncStatusCode callback_status1 = SYNC_STATUS_OK; | 425 SyncStatusCode callback_status1 = SYNC_STATUS_OK; |
| 423 SyncStatusCode callback_status2 = SYNC_STATUS_OK; | 426 SyncStatusCode callback_status2 = SYNC_STATUS_OK; |
| 424 SyncStatusCode callback_status3 = SYNC_STATUS_OK; | 427 SyncStatusCode callback_status3 = SYNC_STATUS_OK; |
| 425 SyncStatusCode callback_status4 = SYNC_STATUS_OK; | 428 SyncStatusCode callback_status4 = SYNC_STATUS_OK; |
| 426 SyncStatusCode callback_status5 = SYNC_STATUS_OK; | 429 SyncStatusCode callback_status5 = SYNC_STATUS_OK; |
| 427 | 430 |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 468 EXPECT_EQ(kStatus3, callback_status3); | 471 EXPECT_EQ(kStatus3, callback_status3); |
| 469 EXPECT_EQ(kStatus4, callback_status4); | 472 EXPECT_EQ(kStatus4, callback_status4); |
| 470 EXPECT_EQ(kStatus5, callback_status5); | 473 EXPECT_EQ(kStatus5, callback_status5); |
| 471 EXPECT_EQ(5, callback_count); | 474 EXPECT_EQ(5, callback_count); |
| 472 } | 475 } |
| 473 | 476 |
| 474 TEST(SyncTaskManagerTest, BackgroundTask_Sequential) { | 477 TEST(SyncTaskManagerTest, BackgroundTask_Sequential) { |
| 475 base::MessageLoop message_loop; | 478 base::MessageLoop message_loop; |
| 476 SyncTaskManager task_manager(base::WeakPtr<SyncTaskManager::Client>(), | 479 SyncTaskManager task_manager(base::WeakPtr<SyncTaskManager::Client>(), |
| 477 10 /* maximum_background_task */, | 480 10 /* maximum_background_task */, |
| 478 base::ThreadTaskRunnerHandle::Get()); | 481 base::ThreadTaskRunnerHandle::Get(), |
| 482 nullptr /* worker_pool */); |
| 479 task_manager.Initialize(SYNC_STATUS_OK); | 483 task_manager.Initialize(SYNC_STATUS_OK); |
| 480 | 484 |
| 481 SyncStatusCode status = SYNC_STATUS_FAILED; | 485 SyncStatusCode status = SYNC_STATUS_FAILED; |
| 482 BackgroundTask::Stats stats; | 486 BackgroundTask::Stats stats; |
| 483 task_manager.ScheduleSyncTask( | 487 task_manager.ScheduleSyncTask( |
| 484 FROM_HERE, | 488 FROM_HERE, |
| 485 scoped_ptr<SyncTask>(new BackgroundTask( | 489 scoped_ptr<SyncTask>(new BackgroundTask( |
| 486 "app_id", MAKE_PATH("/hoge/fuga"), | 490 "app_id", MAKE_PATH("/hoge/fuga"), |
| 487 &stats)), | 491 &stats)), |
| 488 SyncTaskManager::PRIORITY_MED, | 492 SyncTaskManager::PRIORITY_MED, |
| (...skipping 20 matching lines...) Expand all Loading... |
| 509 EXPECT_EQ(SYNC_STATUS_OK, status); | 513 EXPECT_EQ(SYNC_STATUS_OK, status); |
| 510 EXPECT_EQ(0, stats.running_background_task); | 514 EXPECT_EQ(0, stats.running_background_task); |
| 511 EXPECT_EQ(3, stats.finished_task); | 515 EXPECT_EQ(3, stats.finished_task); |
| 512 EXPECT_EQ(1, stats.max_parallel_task); | 516 EXPECT_EQ(1, stats.max_parallel_task); |
| 513 } | 517 } |
| 514 | 518 |
| 515 TEST(SyncTaskManagerTest, BackgroundTask_Parallel) { | 519 TEST(SyncTaskManagerTest, BackgroundTask_Parallel) { |
| 516 base::MessageLoop message_loop; | 520 base::MessageLoop message_loop; |
| 517 SyncTaskManager task_manager(base::WeakPtr<SyncTaskManager::Client>(), | 521 SyncTaskManager task_manager(base::WeakPtr<SyncTaskManager::Client>(), |
| 518 10 /* maximum_background_task */, | 522 10 /* maximum_background_task */, |
| 519 base::ThreadTaskRunnerHandle::Get()); | 523 base::ThreadTaskRunnerHandle::Get(), |
| 524 nullptr /* worker_pool */); |
| 520 task_manager.Initialize(SYNC_STATUS_OK); | 525 task_manager.Initialize(SYNC_STATUS_OK); |
| 521 | 526 |
| 522 SyncStatusCode status = SYNC_STATUS_FAILED; | 527 SyncStatusCode status = SYNC_STATUS_FAILED; |
| 523 BackgroundTask::Stats stats; | 528 BackgroundTask::Stats stats; |
| 524 task_manager.ScheduleSyncTask( | 529 task_manager.ScheduleSyncTask( |
| 525 FROM_HERE, | 530 FROM_HERE, |
| 526 scoped_ptr<SyncTask>(new BackgroundTask( | 531 scoped_ptr<SyncTask>(new BackgroundTask( |
| 527 "app_id", MAKE_PATH("/hoge"), | 532 "app_id", MAKE_PATH("/hoge"), |
| 528 &stats)), | 533 &stats)), |
| 529 SyncTaskManager::PRIORITY_MED, | 534 SyncTaskManager::PRIORITY_MED, |
| (...skipping 20 matching lines...) Expand all Loading... |
| 550 EXPECT_EQ(SYNC_STATUS_OK, status); | 555 EXPECT_EQ(SYNC_STATUS_OK, status); |
| 551 EXPECT_EQ(0, stats.running_background_task); | 556 EXPECT_EQ(0, stats.running_background_task); |
| 552 EXPECT_EQ(3, stats.finished_task); | 557 EXPECT_EQ(3, stats.finished_task); |
| 553 EXPECT_EQ(3, stats.max_parallel_task); | 558 EXPECT_EQ(3, stats.max_parallel_task); |
| 554 } | 559 } |
| 555 | 560 |
| 556 TEST(SyncTaskManagerTest, BackgroundTask_Throttled) { | 561 TEST(SyncTaskManagerTest, BackgroundTask_Throttled) { |
| 557 base::MessageLoop message_loop; | 562 base::MessageLoop message_loop; |
| 558 SyncTaskManager task_manager(base::WeakPtr<SyncTaskManager::Client>(), | 563 SyncTaskManager task_manager(base::WeakPtr<SyncTaskManager::Client>(), |
| 559 2 /* maximum_background_task */, | 564 2 /* maximum_background_task */, |
| 560 base::ThreadTaskRunnerHandle::Get()); | 565 base::ThreadTaskRunnerHandle::Get(), |
| 566 nullptr /* worker_pool */); |
| 561 task_manager.Initialize(SYNC_STATUS_OK); | 567 task_manager.Initialize(SYNC_STATUS_OK); |
| 562 | 568 |
| 563 SyncStatusCode status = SYNC_STATUS_FAILED; | 569 SyncStatusCode status = SYNC_STATUS_FAILED; |
| 564 BackgroundTask::Stats stats; | 570 BackgroundTask::Stats stats; |
| 565 task_manager.ScheduleSyncTask( | 571 task_manager.ScheduleSyncTask( |
| 566 FROM_HERE, | 572 FROM_HERE, |
| 567 scoped_ptr<SyncTask>(new BackgroundTask( | 573 scoped_ptr<SyncTask>(new BackgroundTask( |
| 568 "app_id", MAKE_PATH("/hoge"), | 574 "app_id", MAKE_PATH("/hoge"), |
| 569 &stats)), | 575 &stats)), |
| 570 SyncTaskManager::PRIORITY_MED, | 576 SyncTaskManager::PRIORITY_MED, |
| (...skipping 20 matching lines...) Expand all Loading... |
| 591 EXPECT_EQ(SYNC_STATUS_OK, status); | 597 EXPECT_EQ(SYNC_STATUS_OK, status); |
| 592 EXPECT_EQ(0, stats.running_background_task); | 598 EXPECT_EQ(0, stats.running_background_task); |
| 593 EXPECT_EQ(3, stats.finished_task); | 599 EXPECT_EQ(3, stats.finished_task); |
| 594 EXPECT_EQ(2, stats.max_parallel_task); | 600 EXPECT_EQ(2, stats.max_parallel_task); |
| 595 } | 601 } |
| 596 | 602 |
| 597 TEST(SyncTaskManagerTest, UpdateTaskBlocker) { | 603 TEST(SyncTaskManagerTest, UpdateTaskBlocker) { |
| 598 base::MessageLoop message_loop; | 604 base::MessageLoop message_loop; |
| 599 SyncTaskManager task_manager(base::WeakPtr<SyncTaskManager::Client>(), | 605 SyncTaskManager task_manager(base::WeakPtr<SyncTaskManager::Client>(), |
| 600 10 /* maximum_background_task */, | 606 10 /* maximum_background_task */, |
| 601 base::ThreadTaskRunnerHandle::Get()); | 607 base::ThreadTaskRunnerHandle::Get(), |
| 608 nullptr /* worker_pool */); |
| 602 task_manager.Initialize(SYNC_STATUS_OK); | 609 task_manager.Initialize(SYNC_STATUS_OK); |
| 603 | 610 |
| 604 SyncStatusCode status1 = SYNC_STATUS_FAILED; | 611 SyncStatusCode status1 = SYNC_STATUS_FAILED; |
| 605 SyncStatusCode status2 = SYNC_STATUS_FAILED; | 612 SyncStatusCode status2 = SYNC_STATUS_FAILED; |
| 606 BlockerUpdateTestHelper::Log log; | 613 BlockerUpdateTestHelper::Log log; |
| 607 | 614 |
| 608 { | 615 { |
| 609 std::vector<std::string> paths; | 616 std::vector<std::string> paths; |
| 610 paths.push_back("/foo/bar"); | 617 paths.push_back("/foo/bar"); |
| 611 paths.push_back("/foo"); | 618 paths.push_back("/foo"); |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 662 | 669 |
| 663 EXPECT_EQ("task1: finished", log[i++]); | 670 EXPECT_EQ("task1: finished", log[i++]); |
| 664 | 671 |
| 665 EXPECT_EQ("task2: updating to /hoge/fuga/piyo", log[i++]); | 672 EXPECT_EQ("task2: updating to /hoge/fuga/piyo", log[i++]); |
| 666 EXPECT_EQ("task2: updated to /hoge/fuga/piyo", log[i++]); | 673 EXPECT_EQ("task2: updated to /hoge/fuga/piyo", log[i++]); |
| 667 EXPECT_EQ("task2: finished", log[i++]); | 674 EXPECT_EQ("task2: finished", log[i++]); |
| 668 } | 675 } |
| 669 | 676 |
| 670 } // namespace drive_backend | 677 } // namespace drive_backend |
| 671 } // namespace sync_file_system | 678 } // namespace sync_file_system |
| OLD | NEW |