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

Unified Diff: third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl_unittest.cc

Issue 2890173002: EQT: Record the max queueing time from navigation start to navigation away (Closed)
Patch Set: fix mock_renderer_scheduler Created 3 years, 6 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl_unittest.cc
diff --git a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl_unittest.cc b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl_unittest.cc
index 9571ca3f5c0409a09f40bcec6e28c0e47d338fe9..fb008e4e3773dcacd5e5173276ed1a741741bea2 100644
--- a/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl_unittest.cc
+++ b/third_party/WebKit/Source/platform/scheduler/renderer/renderer_scheduler_impl_unittest.cc
@@ -12,6 +12,7 @@
#include "base/message_loop/message_loop.h"
#include "base/run_loop.h"
#include "base/single_thread_task_runner.h"
+#include "base/test/histogram_tester.h"
#include "base/test/simple_test_tick_clock.h"
#include "cc/output/begin_frame_args.h"
#include "cc/test/ordered_simple_task_runner.h"
@@ -3947,5 +3948,50 @@ TEST_F(RendererSchedulerImplTest, UnresponsiveMainThreadWithContention) {
scheduler_->MainThreadSeemsUnresponsive(responsiveness_threshold()));
}
+// Nav Start Nav Start assert
+// | | |
+// v v v
+// ------------------------------------------------------------>
+// |---long task---|---1s task---|-----long task ----|
+//
+// (---MaxEQT1---)
+// (---MaxEQT2---)
+//
+// --- EQT untracked---| |---EQT unflushed-----
+//
+// MaxEQT1 = 500ms is recorded and observed in histogram.
+// MaxEQT2 is recorded but not yet in histogram for not being flushed.
+TEST_F(RendererSchedulerImplTest,
+ MaxQueueingTimeMetricRecordedOnlyDuringNavigation) {
+ base::HistogramTester tester;
+ // Start with a long task whose queueing time will be ignored.
+ AdvanceTimeWithTask(10);
+ // Navigation start.
+ scheduler_->OnCommitProvisionalLoad();
+ // The max queueing time of the following task will be recorded.
+ AdvanceTimeWithTask(1);
+ // The smaller queuing time will be ignored.
+ AdvanceTimeWithTask(0.5);
+ scheduler_->OnCommitProvisionalLoad();
+ // Add another long task after navigation start but without navigation end.
+ // This value won't be recorded as there is not navigation.
+ AdvanceTimeWithTask(10);
+ // The expected queueing time of 1s task in 1s window is 500ms.
+ tester.ExpectUniqueSample("RendererScheduler.MaxQueueingTime", 500, 1);
+}
+
+// Only the max of all the queueing times is recorded.
+TEST_F(RendererSchedulerImplTest, MaxQueueingTimeMetricRecordTheMax) {
+ base::HistogramTester tester;
+ scheduler_->OnCommitProvisionalLoad();
+ // The smaller queuing time will be ignored.
+ AdvanceTimeWithTask(0.5);
+ // The max queueing time of the following task will be recorded.
+ AdvanceTimeWithTask(1);
+ // The smaller queuing time will be ignored.
+ AdvanceTimeWithTask(0.5);
+ scheduler_->OnCommitProvisionalLoad();
+ tester.ExpectUniqueSample("RendererScheduler.MaxQueueingTime", 500, 1);
+}
} // namespace scheduler
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698