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

Side by Side Diff: chrome/browser/sync_file_system/drive_backend/sync_task_manager_unittest.cc

Issue 881203003: Suppress sequence checks in SyncFileSystem on the shutdown phase (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: +param comment Created 5 years, 10 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 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
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
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698