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

Side by Side Diff: base/task_scheduler/task_tracker_unittest.cc

Issue 2386653002: Replace base::Callback with base::OnceCallback in base::PendingTask (Closed)
Patch Set: revert most of task_scheduler changes Created 4 years, 2 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "base/task_scheduler/task_tracker.h" 5 #include "base/task_scheduler/task_tracker.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <memory> 9 #include <memory>
10 #include <vector> 10 #include <vector>
(...skipping 480 matching lines...) Expand 10 before | Expand all | Expand 10 after
491 TEST_P(TaskSchedulerTaskTrackerTest, FlushPendingDelayedTask) { 491 TEST_P(TaskSchedulerTaskTrackerTest, FlushPendingDelayedTask) {
492 const Task delayed_task(FROM_HERE, Bind(&DoNothing), 492 const Task delayed_task(FROM_HERE, Bind(&DoNothing),
493 TaskTraits().WithShutdownBehavior(GetParam()), 493 TaskTraits().WithShutdownBehavior(GetParam()),
494 TimeDelta::FromDays(1)); 494 TimeDelta::FromDays(1));
495 tracker_.WillPostTask(&delayed_task); 495 tracker_.WillPostTask(&delayed_task);
496 // Flush() should return even if the delayed task didn't run. 496 // Flush() should return even if the delayed task didn't run.
497 tracker_.Flush(); 497 tracker_.Flush();
498 } 498 }
499 499
500 TEST_P(TaskSchedulerTaskTrackerTest, FlushPendingUndelayedTask) { 500 TEST_P(TaskSchedulerTaskTrackerTest, FlushPendingUndelayedTask) {
501 const Task undelayed_task(FROM_HERE, Bind(&DoNothing), 501 Task undelayed_task(FROM_HERE, Bind(&DoNothing),
502 TaskTraits().WithShutdownBehavior(GetParam()), 502 TaskTraits().WithShutdownBehavior(GetParam()),
503 TimeDelta()); 503 TimeDelta());
504 tracker_.WillPostTask(&undelayed_task); 504 tracker_.WillPostTask(&undelayed_task);
505 505
506 // Flush() shouldn't return before the undelayed task runs. 506 // Flush() shouldn't return before the undelayed task runs.
507 CallFlushAsync(); 507 CallFlushAsync();
508 PlatformThread::Sleep(TestTimeouts::tiny_timeout()); 508 PlatformThread::Sleep(TestTimeouts::tiny_timeout());
509 VERIFY_ASYNC_FLUSH_IN_PROGRESS(); 509 VERIFY_ASYNC_FLUSH_IN_PROGRESS();
510 510
511 // Flush() should return after the undelayed task runs. 511 // Flush() should return after the undelayed task runs.
512 tracker_.RunTask(&undelayed_task, SequenceToken::Create()); 512 tracker_.RunTask(&undelayed_task, SequenceToken::Create());
513 WAIT_FOR_ASYNC_FLUSH_RETURNED(); 513 WAIT_FOR_ASYNC_FLUSH_RETURNED();
514 } 514 }
515 515
516 TEST_P(TaskSchedulerTaskTrackerTest, PostTaskDuringFlush) { 516 TEST_P(TaskSchedulerTaskTrackerTest, PostTaskDuringFlush) {
517 const Task undelayed_task(FROM_HERE, Bind(&DoNothing), 517 Task undelayed_task(FROM_HERE, Bind(&DoNothing),
518 TaskTraits().WithShutdownBehavior(GetParam()), 518 TaskTraits().WithShutdownBehavior(GetParam()),
519 TimeDelta()); 519 TimeDelta());
520 tracker_.WillPostTask(&undelayed_task); 520 tracker_.WillPostTask(&undelayed_task);
521 521
522 // Flush() shouldn't return before the undelayed task runs. 522 // Flush() shouldn't return before the undelayed task runs.
523 CallFlushAsync(); 523 CallFlushAsync();
524 PlatformThread::Sleep(TestTimeouts::tiny_timeout()); 524 PlatformThread::Sleep(TestTimeouts::tiny_timeout());
525 VERIFY_ASYNC_FLUSH_IN_PROGRESS(); 525 VERIFY_ASYNC_FLUSH_IN_PROGRESS();
526 526
527 // Simulate posting another undelayed task. 527 // Simulate posting another undelayed task.
528 const Task other_undelayed_task(FROM_HERE, Bind(&DoNothing), 528 Task other_undelayed_task(FROM_HERE, Bind(&DoNothing),
529 TaskTraits().WithShutdownBehavior(GetParam()), 529 TaskTraits().WithShutdownBehavior(GetParam()),
530 TimeDelta()); 530 TimeDelta());
531 tracker_.WillPostTask(&other_undelayed_task); 531 tracker_.WillPostTask(&other_undelayed_task);
532 532
533 // Run the first undelayed task. 533 // Run the first undelayed task.
534 tracker_.RunTask(&undelayed_task, SequenceToken::Create()); 534 tracker_.RunTask(&undelayed_task, SequenceToken::Create());
535 535
536 // Flush() shouldn't return before the second undelayed task runs. 536 // Flush() shouldn't return before the second undelayed task runs.
537 PlatformThread::Sleep(TestTimeouts::tiny_timeout()); 537 PlatformThread::Sleep(TestTimeouts::tiny_timeout());
538 VERIFY_ASYNC_FLUSH_IN_PROGRESS(); 538 VERIFY_ASYNC_FLUSH_IN_PROGRESS();
539 539
540 // Flush() should return after the second undelayed task runs. 540 // Flush() should return after the second undelayed task runs.
541 tracker_.RunTask(&other_undelayed_task, SequenceToken::Create()); 541 tracker_.RunTask(&other_undelayed_task, SequenceToken::Create());
542 WAIT_FOR_ASYNC_FLUSH_RETURNED(); 542 WAIT_FOR_ASYNC_FLUSH_RETURNED();
543 } 543 }
544 544
545 TEST_P(TaskSchedulerTaskTrackerTest, RunDelayedTaskDuringFlush) { 545 TEST_P(TaskSchedulerTaskTrackerTest, RunDelayedTaskDuringFlush) {
546 // Simulate posting a delayed and an undelayed task. 546 // Simulate posting a delayed and an undelayed task.
547 const Task delayed_task(FROM_HERE, Bind(&DoNothing), 547 Task delayed_task(FROM_HERE, Bind(&DoNothing),
548 TaskTraits().WithShutdownBehavior(GetParam()), 548 TaskTraits().WithShutdownBehavior(GetParam()),
549 TimeDelta::FromDays(1)); 549 TimeDelta::FromDays(1));
550 tracker_.WillPostTask(&delayed_task); 550 tracker_.WillPostTask(&delayed_task);
551 const Task undelayed_task(FROM_HERE, Bind(&DoNothing), 551 Task undelayed_task(FROM_HERE, Bind(&DoNothing),
552 TaskTraits().WithShutdownBehavior(GetParam()), 552 TaskTraits().WithShutdownBehavior(GetParam()),
553 TimeDelta()); 553 TimeDelta());
554 tracker_.WillPostTask(&undelayed_task); 554 tracker_.WillPostTask(&undelayed_task);
555 555
556 // Flush() shouldn't return before the undelayed task runs. 556 // Flush() shouldn't return before the undelayed task runs.
557 CallFlushAsync(); 557 CallFlushAsync();
558 PlatformThread::Sleep(TestTimeouts::tiny_timeout()); 558 PlatformThread::Sleep(TestTimeouts::tiny_timeout());
559 VERIFY_ASYNC_FLUSH_IN_PROGRESS(); 559 VERIFY_ASYNC_FLUSH_IN_PROGRESS();
560 560
561 // Run the delayed task. 561 // Run the delayed task.
562 tracker_.RunTask(&delayed_task, SequenceToken::Create()); 562 tracker_.RunTask(&delayed_task, SequenceToken::Create());
563 563
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
781 781
782 // Unblock shutdown by running |block_shutdown_task|. 782 // Unblock shutdown by running |block_shutdown_task|.
783 EXPECT_TRUE( 783 EXPECT_TRUE(
784 tracker_.RunTask(block_shutdown_task.get(), SequenceToken::Create())); 784 tracker_.RunTask(block_shutdown_task.get(), SequenceToken::Create()));
785 EXPECT_EQ(kLoadTestNumIterations + 1, NumTasksExecuted()); 785 EXPECT_EQ(kLoadTestNumIterations + 1, NumTasksExecuted());
786 WAIT_FOR_ASYNC_SHUTDOWN_COMPLETED(); 786 WAIT_FOR_ASYNC_SHUTDOWN_COMPLETED();
787 } 787 }
788 788
789 } // namespace internal 789 } // namespace internal
790 } // namespace base 790 } // namespace base
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698