Chromium Code Reviews| 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 80e9810e1de559f237d9230bbde6d513059948ce..9a4f4ffe4570cdd1801657d2e7618a4a5d7de85a 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" |
| @@ -3945,5 +3946,42 @@ TEST_F(RendererSchedulerImplTest, UnresponsiveMainThreadWithContention) { |
| scheduler_->MainThreadSeemsUnresponsive(responsiveness_threshold())); |
| } |
| +TEST_F(RendererSchedulerImplTest, MaxQueueingTimeMetric) { |
| + base::HistogramTester tester; |
| + // Start with a long task. The long queueing time of the task will be |
| + // ignored because max queueing time is recorded after navigation start |
|
tdresser
2017/05/30 13:34:44
is recorded -> is only recorded
Liquan (Max) Gu
2017/05/30 19:57:19
Done.
|
| + // (OnCommitProvisionalLoad). |
| + AdvanceTimeWithTask(10); |
| + // Navigation start |
| + scheduler_->OnCommitProvisionalLoad(); |
| + // The max queueing time of the following task will be recorded. |
| + AdvanceTimeWithTask(1); |
| + scheduler_->OnCommitProvisionalLoad(); |
| + // The expected queueing time of 1s task in 1s window is 500ms. |
| + tester.ExpectUniqueSample("RendererScheduler.MaxQueueingTime", 500, 1); |
| +} |
| + |
| +void SetQueueingTimeInThread(RendererSchedulerImpl* scheduler, |
| + base::SimpleTestTickClock* clock) { |
| + // Navigation of a webpage start. |
| + scheduler->OnCommitProvisionalLoad(); |
| + // Queueing time is recorded with time advanced. |
| + clock->Advance(base::TimeDelta::FromSeconds(1)); |
| +} |
| + |
| +TEST_F(RendererSchedulerImplTest, MaxQueueingTimeMetricInTwoThreads) { |
|
tdresser
2017/05/30 13:34:44
We're only ever going to be adding EQT information
Liquan (Max) Gu
2017/05/30 19:57:19
Talked offline with Tim, as SingleSampleMetric alr
|
| + base::HistogramTester tester; |
| + |
| + default_task_runner_->PostTask( |
| + FROM_HERE, |
| + base::Bind(&SetQueueingTimeInThread, scheduler_.get(), clock_.get())); |
| + RunUntilIdle(); |
| + // Histogram won't be set until next navigation start. |
| + tester.ExpectUniqueSample("RendererScheduler.MaxQueueingTime", 500, 0); |
| + scheduler_->OnCommitProvisionalLoad(); |
| + // The expected queueing time of 1s task in 1s window is 500ms. |
| + tester.ExpectUniqueSample("RendererScheduler.MaxQueueingTime", 500, 1); |
| +} |
| + |
| } // namespace scheduler |
| } // namespace blink |