| Index: base/task_scheduler/task_tracker_unittest.cc
|
| diff --git a/base/task_scheduler/task_tracker_unittest.cc b/base/task_scheduler/task_tracker_unittest.cc
|
| index 85378b6234afe6a9f0ff499e00c6e66ec4b402c9..6441125f3406db7e844e308a677ee095fd370ca6 100644
|
| --- a/base/task_scheduler/task_tracker_unittest.cc
|
| +++ b/base/task_scheduler/task_tracker_unittest.cc
|
| @@ -889,6 +889,54 @@ TEST(TaskSchedulerTaskTrackerWaitAllowedTest, WaitAllowed) {
|
| wait_allowed_test_thread.Join();
|
| }
|
|
|
| +namespace {
|
| +
|
| +struct TaskTraitHistogramPair {
|
| + TaskTraits traits;
|
| + const char* expected_histogram;
|
| +
|
| + TaskTraitHistogramPair(const TaskTraits& traits_in,
|
| + const char* expected_histogram_in)
|
| + : traits(traits_in), expected_histogram(expected_histogram_in) {}
|
| +};
|
| +
|
| +std::vector<TaskTraitHistogramPair> GenerateTaskTraitHistogramPairs() {
|
| + std::vector<TaskTraitHistogramPair> pairs;
|
| + pairs.emplace_back(TaskTraits().WithPriority(TaskPriority::BACKGROUND),
|
| + "TaskScheduler.TaskLatency.BackgroundTaskPriority");
|
| + pairs.emplace_back(
|
| + TaskTraits().WithPriority(TaskPriority::BACKGROUND).MayBlock(),
|
| + "TaskScheduler.TaskLatency.BackgroundTaskPriority.MayBlock");
|
| + pairs.emplace_back(
|
| + TaskTraits()
|
| + .WithPriority(TaskPriority::BACKGROUND)
|
| + .WithBaseSyncPrimitives(),
|
| + "TaskScheduler.TaskLatency.BackgroundTaskPriority.MayBlock");
|
| + pairs.emplace_back(TaskTraits().WithPriority(TaskPriority::USER_VISIBLE),
|
| + "TaskScheduler.TaskLatency.UserVisibleTaskPriority");
|
| + pairs.emplace_back(
|
| + TaskTraits().WithPriority(TaskPriority::USER_VISIBLE).MayBlock(),
|
| + "TaskScheduler.TaskLatency.UserVisibleTaskPriority.MayBlock");
|
| + pairs.emplace_back(
|
| + TaskTraits()
|
| + .WithPriority(TaskPriority::USER_VISIBLE)
|
| + .WithBaseSyncPrimitives(),
|
| + "TaskScheduler.TaskLatency.UserVisibleTaskPriority.MayBlock");
|
| + pairs.emplace_back(TaskTraits().WithPriority(TaskPriority::USER_BLOCKING),
|
| + "TaskScheduler.TaskLatency.UserBlockingTaskPriority");
|
| + pairs.emplace_back(
|
| + TaskTraits().WithPriority(TaskPriority::USER_BLOCKING).MayBlock(),
|
| + "TaskScheduler.TaskLatency.UserBlockingTaskPriority.MayBlock");
|
| + pairs.emplace_back(
|
| + TaskTraits()
|
| + .WithPriority(TaskPriority::USER_BLOCKING)
|
| + .WithBaseSyncPrimitives(),
|
| + "TaskScheduler.TaskLatency.UserBlockingTaskPriority.MayBlock");
|
| + return pairs;
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| // Verify that TaskScheduler.TaskLatency.* histograms are correctly recorded
|
| // when a task runs.
|
| TEST(TaskSchedulerTaskTrackerHistogramTest, TaskLatency) {
|
| @@ -896,36 +944,7 @@ TEST(TaskSchedulerTaskTrackerHistogramTest, TaskLatency) {
|
|
|
| TaskTracker tracker;
|
|
|
| - struct {
|
| - const TaskTraits traits;
|
| - const char* const expected_histogram;
|
| - } tests[] = {
|
| - {TaskTraits().WithPriority(TaskPriority::BACKGROUND),
|
| - "TaskScheduler.TaskLatency.BackgroundTaskPriority"},
|
| - {TaskTraits().WithPriority(TaskPriority::BACKGROUND).MayBlock(),
|
| - "TaskScheduler.TaskLatency.BackgroundTaskPriority.MayBlock"},
|
| - {TaskTraits()
|
| - .WithPriority(TaskPriority::BACKGROUND)
|
| - .WithBaseSyncPrimitives(),
|
| - "TaskScheduler.TaskLatency.BackgroundTaskPriority.MayBlock"},
|
| - {TaskTraits().WithPriority(TaskPriority::USER_VISIBLE),
|
| - "TaskScheduler.TaskLatency.UserVisibleTaskPriority"},
|
| - {TaskTraits().WithPriority(TaskPriority::USER_VISIBLE).MayBlock(),
|
| - "TaskScheduler.TaskLatency.UserVisibleTaskPriority.MayBlock"},
|
| - {TaskTraits()
|
| - .WithPriority(TaskPriority::USER_VISIBLE)
|
| - .WithBaseSyncPrimitives(),
|
| - "TaskScheduler.TaskLatency.UserVisibleTaskPriority.MayBlock"},
|
| - {TaskTraits().WithPriority(TaskPriority::USER_BLOCKING),
|
| - "TaskScheduler.TaskLatency.UserBlockingTaskPriority"},
|
| - {TaskTraits().WithPriority(TaskPriority::USER_BLOCKING).MayBlock(),
|
| - "TaskScheduler.TaskLatency.UserBlockingTaskPriority.MayBlock"},
|
| - {TaskTraits()
|
| - .WithPriority(TaskPriority::USER_BLOCKING)
|
| - .WithBaseSyncPrimitives(),
|
| - "TaskScheduler.TaskLatency.UserBlockingTaskPriority.MayBlock"}};
|
| -
|
| - for (const auto& test : tests) {
|
| + for (const auto& test : GenerateTaskTraitHistogramPairs()) {
|
| auto task =
|
| MakeUnique<Task>(FROM_HERE, Bind(&DoNothing), test.traits, TimeDelta());
|
| ASSERT_TRUE(tracker.WillPostTask(task.get()));
|
| @@ -936,5 +955,21 @@ TEST(TaskSchedulerTaskTrackerHistogramTest, TaskLatency) {
|
| }
|
| }
|
|
|
| +TEST(TaskSchedulerTaskTrackerHistogramTest, TaskLatencyInternalOnly) {
|
| + auto statistics_recorder = StatisticsRecorder::CreateTemporaryForTesting();
|
| +
|
| + TaskTracker tracker;
|
| +
|
| + for (const auto& test : GenerateTaskTraitHistogramPairs()) {
|
| + auto task = MakeUnique<Task>(FROM_HERE, Bind(&DoNothing), test.traits,
|
| + TimeDelta(), Task::TaskType::INTERNAL);
|
| + ASSERT_TRUE(tracker.WillPostTask(task.get()));
|
| +
|
| + HistogramTester tester;
|
| + EXPECT_TRUE(tracker.RunTask(std::move(task), SequenceToken::Create()));
|
| + tester.ExpectTotalCount(test.expected_histogram, 0);
|
| + }
|
| +}
|
| +
|
| } // namespace internal
|
| } // namespace base
|
|
|