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

Unified Diff: base/task_scheduler/task_tracker_unittest.cc

Issue 2600023002: Remove worker pool names from TaskScheduler.TaskLatency.* histograms. (Closed)
Patch Set: self-review Created 4 years 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 side-by-side diff with in-line comments
Download patch
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 161aabb0d7c4c4745f8e9f7674fca7ad1ee60fe4..b4152245b3196d49798ce62490c366271a850824 100644
--- a/base/task_scheduler/task_tracker_unittest.cc
+++ b/base/task_scheduler/task_tracker_unittest.cc
@@ -16,6 +16,9 @@
#include "base/macros.h"
#include "base/memory/ptr_util.h"
#include "base/memory/ref_counted.h"
+#include "base/metrics/histogram_base.h"
+#include "base/metrics/histogram_samples.h"
+#include "base/metrics/statistics_recorder.h"
#include "base/sequence_token.h"
#include "base/sequenced_task_runner.h"
#include "base/single_thread_task_runner.h"
@@ -885,5 +888,63 @@ TEST(TaskSchedulerTaskTrackerWaitAllowedTest, WaitAllowed) {
wait_allowed_test_thread.Join();
}
+// Verify that TaskScheduler.TaskLatency.* histograms are correctly recorded
+// when a task runs.
+TEST(TaskSchedulerTaskTrackerHistogramTest, TaskLatency) {
+ auto statistics_recorder = StatisticsRecorder::CreateTemporaryForTesting();
+
+ TaskTracker tracker;
+
+ struct {
+ const TaskTraits traits;
+ HistogramBase* const expected_histogram;
+ } tests[] = {
+ {TaskTraits().WithPriority(TaskPriority::BACKGROUND),
+ tracker.task_latency_histograms_[static_cast<int>(
+ TaskPriority::BACKGROUND)][0]},
+ {TaskTraits().WithPriority(TaskPriority::BACKGROUND).MayBlock(),
+ tracker.task_latency_histograms_[static_cast<int>(
+ TaskPriority::BACKGROUND)][1]},
+ {TaskTraits()
+ .WithPriority(TaskPriority::BACKGROUND)
+ .WithBaseSyncPrimitives(),
+ tracker.task_latency_histograms_[static_cast<int>(
+ TaskPriority::BACKGROUND)][1]},
+ {TaskTraits().WithPriority(TaskPriority::USER_VISIBLE),
+ tracker.task_latency_histograms_[static_cast<int>(
+ TaskPriority::USER_VISIBLE)][0]},
+ {TaskTraits().WithPriority(TaskPriority::USER_VISIBLE).MayBlock(),
+ tracker.task_latency_histograms_[static_cast<int>(
+ TaskPriority::USER_VISIBLE)][1]},
+ {TaskTraits()
+ .WithPriority(TaskPriority::USER_VISIBLE)
+ .WithBaseSyncPrimitives(),
+ tracker.task_latency_histograms_[static_cast<int>(
+ TaskPriority::USER_VISIBLE)][1]},
+ {TaskTraits().WithPriority(TaskPriority::USER_BLOCKING),
+ tracker.task_latency_histograms_[static_cast<int>(
+ TaskPriority::USER_BLOCKING)][0]},
+ {TaskTraits().WithPriority(TaskPriority::USER_BLOCKING).MayBlock(),
+ tracker.task_latency_histograms_[static_cast<int>(
+ TaskPriority::USER_BLOCKING)][1]},
+ {TaskTraits()
+ .WithPriority(TaskPriority::USER_BLOCKING)
+ .WithBaseSyncPrimitives(),
+ tracker.task_latency_histograms_[static_cast<int>(
+ TaskPriority::USER_BLOCKING)][1]}};
gab 2017/01/05 19:25:46 Use HistogramTester instead of friending and using
fdoray 2017/01/05 20:13:38 Done.
+
+ for (const auto& test : tests) {
gab 2017/01/05 19:25:46 Interesting use of auto! I thought something was w
fdoray 2017/01/05 20:13:38 Acknowledged.
+ // Take a snapshot of the histogram so that the snapshot below only contains
+ // increments that occurred within this scope.
+ test.expected_histogram->SnapshotDelta();
+
+ auto task =
+ MakeUnique<Task>(FROM_HERE, Bind(&DoNothing), test.traits, TimeDelta());
+ ASSERT_TRUE(tracker.WillPostTask(task.get()));
+ EXPECT_TRUE(tracker.RunTask(std::move(task), SequenceToken::Create()));
+ EXPECT_EQ(1, test.expected_histogram->SnapshotDelta()->TotalCount());
+ }
+}
+
} // namespace internal
} // namespace base

Powered by Google App Engine
This is Rietveld 408576698