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 |