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

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

Issue 2791243002: Rewrite base::Bind into base::BindOnce on trivial cases in base (Closed)
Patch Set: rebase Created 3 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
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 <utility> 10 #include <utility>
(...skipping 410 matching lines...) Expand 10 before | Expand all | Expand 10 after
421 } 421 }
422 422
423 // Verify that BLOCK_SHUTDOWN and SKIP_ON_SHUTDOWN tasks can 423 // Verify that BLOCK_SHUTDOWN and SKIP_ON_SHUTDOWN tasks can
424 // AssertSingletonAllowed() but CONTINUE_ON_SHUTDOWN tasks can't. 424 // AssertSingletonAllowed() but CONTINUE_ON_SHUTDOWN tasks can't.
425 TEST_P(TaskSchedulerTaskTrackerTest, SingletonAllowed) { 425 TEST_P(TaskSchedulerTaskTrackerTest, SingletonAllowed) {
426 const bool can_use_singletons = 426 const bool can_use_singletons =
427 (GetParam() != TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN); 427 (GetParam() != TaskShutdownBehavior::CONTINUE_ON_SHUTDOWN);
428 428
429 TaskTracker tracker; 429 TaskTracker tracker;
430 std::unique_ptr<Task> task( 430 std::unique_ptr<Task> task(
431 new Task(FROM_HERE, Bind(&ThreadRestrictions::AssertSingletonAllowed), 431 new Task(FROM_HERE, BindOnce(&ThreadRestrictions::AssertSingletonAllowed),
432 TaskTraits().WithShutdownBehavior(GetParam()), TimeDelta())); 432 TaskTraits().WithShutdownBehavior(GetParam()), TimeDelta()));
433 EXPECT_TRUE(tracker.WillPostTask(task.get())); 433 EXPECT_TRUE(tracker.WillPostTask(task.get()));
434 434
435 // Set the singleton allowed bit to the opposite of what it is expected to be 435 // Set the singleton allowed bit to the opposite of what it is expected to be
436 // when |tracker| runs |task| to verify that |tracker| actually sets the 436 // when |tracker| runs |task| to verify that |tracker| actually sets the
437 // correct value. 437 // correct value.
438 ScopedSetSingletonAllowed scoped_singleton_allowed(!can_use_singletons); 438 ScopedSetSingletonAllowed scoped_singleton_allowed(!can_use_singletons);
439 439
440 // Running the task should fail iff the task isn't allowed to use singletons. 440 // Running the task should fail iff the task isn't allowed to use singletons.
441 if (can_use_singletons) { 441 if (can_use_singletons) {
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
495 495
496 static void VerifyNoTaskRunnerHandle() { 496 static void VerifyNoTaskRunnerHandle() {
497 EXPECT_FALSE(ThreadTaskRunnerHandle::IsSet()); 497 EXPECT_FALSE(ThreadTaskRunnerHandle::IsSet());
498 EXPECT_FALSE(SequencedTaskRunnerHandle::IsSet()); 498 EXPECT_FALSE(SequencedTaskRunnerHandle::IsSet());
499 } 499 }
500 500
501 TEST_P(TaskSchedulerTaskTrackerTest, TaskRunnerHandleIsNotSetOnParallel) { 501 TEST_P(TaskSchedulerTaskTrackerTest, TaskRunnerHandleIsNotSetOnParallel) {
502 // Create a task that will verify that TaskRunnerHandles are not set in its 502 // Create a task that will verify that TaskRunnerHandles are not set in its
503 // scope per no TaskRunner ref being set to it. 503 // scope per no TaskRunner ref being set to it.
504 std::unique_ptr<Task> verify_task( 504 std::unique_ptr<Task> verify_task(
505 new Task(FROM_HERE, Bind(&VerifyNoTaskRunnerHandle), 505 new Task(FROM_HERE, BindOnce(&VerifyNoTaskRunnerHandle),
506 TaskTraits().WithShutdownBehavior(GetParam()), TimeDelta())); 506 TaskTraits().WithShutdownBehavior(GetParam()), TimeDelta()));
507 507
508 RunTaskRunnerHandleVerificationTask(&tracker_, std::move(verify_task)); 508 RunTaskRunnerHandleVerificationTask(&tracker_, std::move(verify_task));
509 } 509 }
510 510
511 static void VerifySequencedTaskRunnerHandle( 511 static void VerifySequencedTaskRunnerHandle(
512 const SequencedTaskRunner* expected_task_runner) { 512 const SequencedTaskRunner* expected_task_runner) {
513 EXPECT_FALSE(ThreadTaskRunnerHandle::IsSet()); 513 EXPECT_FALSE(ThreadTaskRunnerHandle::IsSet());
514 EXPECT_TRUE(SequencedTaskRunnerHandle::IsSet()); 514 EXPECT_TRUE(SequencedTaskRunnerHandle::IsSet());
515 EXPECT_EQ(expected_task_runner, SequencedTaskRunnerHandle::Get()); 515 EXPECT_EQ(expected_task_runner, SequencedTaskRunnerHandle::Get());
516 } 516 }
517 517
518 TEST_P(TaskSchedulerTaskTrackerTest, 518 TEST_P(TaskSchedulerTaskTrackerTest,
519 SequencedTaskRunnerHandleIsSetOnSequenced) { 519 SequencedTaskRunnerHandleIsSetOnSequenced) {
520 scoped_refptr<SequencedTaskRunner> test_task_runner(new TestSimpleTaskRunner); 520 scoped_refptr<SequencedTaskRunner> test_task_runner(new TestSimpleTaskRunner);
521 521
522 // Create a task that will verify that SequencedTaskRunnerHandle is properly 522 // Create a task that will verify that SequencedTaskRunnerHandle is properly
523 // set to |test_task_runner| in its scope per |sequenced_task_runner_ref| 523 // set to |test_task_runner| in its scope per |sequenced_task_runner_ref|
524 // being set to it. 524 // being set to it.
525 std::unique_ptr<Task> verify_task( 525 std::unique_ptr<Task> verify_task(
526 new Task(FROM_HERE, Bind(&VerifySequencedTaskRunnerHandle, 526 new Task(FROM_HERE,
527 base::Unretained(test_task_runner.get())), 527 BindOnce(&VerifySequencedTaskRunnerHandle,
528 base::Unretained(test_task_runner.get())),
528 TaskTraits().WithShutdownBehavior(GetParam()), TimeDelta())); 529 TaskTraits().WithShutdownBehavior(GetParam()), TimeDelta()));
529 verify_task->sequenced_task_runner_ref = test_task_runner; 530 verify_task->sequenced_task_runner_ref = test_task_runner;
530 531
531 RunTaskRunnerHandleVerificationTask(&tracker_, std::move(verify_task)); 532 RunTaskRunnerHandleVerificationTask(&tracker_, std::move(verify_task));
532 } 533 }
533 534
534 static void VerifyThreadTaskRunnerHandle( 535 static void VerifyThreadTaskRunnerHandle(
535 const SingleThreadTaskRunner* expected_task_runner) { 536 const SingleThreadTaskRunner* expected_task_runner) {
536 EXPECT_TRUE(ThreadTaskRunnerHandle::IsSet()); 537 EXPECT_TRUE(ThreadTaskRunnerHandle::IsSet());
537 // SequencedTaskRunnerHandle inherits ThreadTaskRunnerHandle for thread. 538 // SequencedTaskRunnerHandle inherits ThreadTaskRunnerHandle for thread.
538 EXPECT_TRUE(SequencedTaskRunnerHandle::IsSet()); 539 EXPECT_TRUE(SequencedTaskRunnerHandle::IsSet());
539 EXPECT_EQ(expected_task_runner, ThreadTaskRunnerHandle::Get()); 540 EXPECT_EQ(expected_task_runner, ThreadTaskRunnerHandle::Get());
540 } 541 }
541 542
542 TEST_P(TaskSchedulerTaskTrackerTest, 543 TEST_P(TaskSchedulerTaskTrackerTest,
543 ThreadTaskRunnerHandleIsSetOnSingleThreaded) { 544 ThreadTaskRunnerHandleIsSetOnSingleThreaded) {
544 scoped_refptr<SingleThreadTaskRunner> test_task_runner( 545 scoped_refptr<SingleThreadTaskRunner> test_task_runner(
545 new TestSimpleTaskRunner); 546 new TestSimpleTaskRunner);
546 547
547 // Create a task that will verify that ThreadTaskRunnerHandle is properly set 548 // Create a task that will verify that ThreadTaskRunnerHandle is properly set
548 // to |test_task_runner| in its scope per |single_thread_task_runner_ref| 549 // to |test_task_runner| in its scope per |single_thread_task_runner_ref|
549 // being set on it. 550 // being set on it.
550 std::unique_ptr<Task> verify_task( 551 std::unique_ptr<Task> verify_task(
551 new Task(FROM_HERE, Bind(&VerifyThreadTaskRunnerHandle, 552 new Task(FROM_HERE,
552 base::Unretained(test_task_runner.get())), 553 BindOnce(&VerifyThreadTaskRunnerHandle,
554 base::Unretained(test_task_runner.get())),
553 TaskTraits().WithShutdownBehavior(GetParam()), TimeDelta())); 555 TaskTraits().WithShutdownBehavior(GetParam()), TimeDelta()));
554 verify_task->single_thread_task_runner_ref = test_task_runner; 556 verify_task->single_thread_task_runner_ref = test_task_runner;
555 557
556 RunTaskRunnerHandleVerificationTask(&tracker_, std::move(verify_task)); 558 RunTaskRunnerHandleVerificationTask(&tracker_, std::move(verify_task));
557 } 559 }
558 560
559 TEST_P(TaskSchedulerTaskTrackerTest, FlushPendingDelayedTask) { 561 TEST_P(TaskSchedulerTaskTrackerTest, FlushPendingDelayedTask) {
560 const Task delayed_task(FROM_HERE, Bind(&DoNothing), 562 const Task delayed_task(FROM_HERE, BindOnce(&DoNothing),
561 TaskTraits().WithShutdownBehavior(GetParam()), 563 TaskTraits().WithShutdownBehavior(GetParam()),
562 TimeDelta::FromDays(1)); 564 TimeDelta::FromDays(1));
563 tracker_.WillPostTask(&delayed_task); 565 tracker_.WillPostTask(&delayed_task);
564 // Flush() should return even if the delayed task didn't run. 566 // Flush() should return even if the delayed task didn't run.
565 tracker_.Flush(); 567 tracker_.Flush();
566 } 568 }
567 569
568 TEST_P(TaskSchedulerTaskTrackerTest, FlushPendingUndelayedTask) { 570 TEST_P(TaskSchedulerTaskTrackerTest, FlushPendingUndelayedTask) {
569 auto undelayed_task = base::MakeUnique<Task>( 571 auto undelayed_task = base::MakeUnique<Task>(
570 FROM_HERE, Bind(&DoNothing), 572 FROM_HERE, Bind(&DoNothing),
(...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after
941 ASSERT_TRUE(tracker.WillPostTask(task.get())); 943 ASSERT_TRUE(tracker.WillPostTask(task.get()));
942 944
943 HistogramTester tester; 945 HistogramTester tester;
944 EXPECT_TRUE(tracker.RunTask(std::move(task), SequenceToken::Create())); 946 EXPECT_TRUE(tracker.RunTask(std::move(task), SequenceToken::Create()));
945 tester.ExpectTotalCount(test.expected_histogram, 1); 947 tester.ExpectTotalCount(test.expected_histogram, 1);
946 } 948 }
947 } 949 }
948 950
949 } // namespace internal 951 } // namespace internal
950 } // namespace base 952 } // namespace base
OLDNEW
« no previous file with comments | « base/task_scheduler/task_scheduler_impl_unittest.cc ('k') | base/task_scheduler/task_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698