OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "cc/scheduler/compositor_timing_history.h" | 5 #include "cc/scheduler/compositor_timing_history.h" |
6 | 6 |
7 #include "cc/debug/rendering_stats_instrumentation.h" | 7 #include "cc/debug/rendering_stats_instrumentation.h" |
8 #include "testing/gtest/include/gtest/gtest.h" | 8 #include "testing/gtest/include/gtest/gtest.h" |
9 | 9 |
10 namespace cc { | 10 namespace cc { |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
43 protected: | 43 protected: |
44 scoped_ptr<RenderingStatsInstrumentation> rendering_stats_; | 44 scoped_ptr<RenderingStatsInstrumentation> rendering_stats_; |
45 TestCompositorTimingHistory timing_history_; | 45 TestCompositorTimingHistory timing_history_; |
46 base::TimeTicks now_; | 46 base::TimeTicks now_; |
47 }; | 47 }; |
48 | 48 |
49 base::TimeTicks TestCompositorTimingHistory::Now() const { | 49 base::TimeTicks TestCompositorTimingHistory::Now() const { |
50 return test_->Now(); | 50 return test_->Now(); |
51 } | 51 } |
52 | 52 |
53 TEST_F(CompositorTimingHistoryTest, AllSequentialCommit) { | 53 TEST_F(CompositorTimingHistoryTest, AllSequentialCommit_Critical) { |
54 base::TimeDelta one_second = base::TimeDelta::FromSeconds(1); | 54 base::TimeDelta one_second = base::TimeDelta::FromSeconds(1); |
55 | 55 |
56 base::TimeDelta begin_main_frame_to_commit_duration = | 56 base::TimeDelta begin_main_frame_queue_duration = |
| 57 base::TimeDelta::FromMilliseconds(1); |
| 58 base::TimeDelta begin_main_frame_start_to_commit_duration = |
57 base::TimeDelta::FromMilliseconds(1); | 59 base::TimeDelta::FromMilliseconds(1); |
58 base::TimeDelta prepare_tiles_duration = base::TimeDelta::FromMilliseconds(2); | 60 base::TimeDelta prepare_tiles_duration = base::TimeDelta::FromMilliseconds(2); |
59 base::TimeDelta prepare_tiles_end_to_ready_to_activate_duration = | 61 base::TimeDelta prepare_tiles_end_to_ready_to_activate_duration = |
60 base::TimeDelta::FromMilliseconds(1); | 62 base::TimeDelta::FromMilliseconds(1); |
61 base::TimeDelta commit_to_ready_to_activate_duration = | 63 base::TimeDelta commit_to_ready_to_activate_duration = |
62 base::TimeDelta::FromMilliseconds(3); | 64 base::TimeDelta::FromMilliseconds(3); |
63 base::TimeDelta activate_duration = base::TimeDelta::FromMilliseconds(4); | 65 base::TimeDelta activate_duration = base::TimeDelta::FromMilliseconds(4); |
64 base::TimeDelta draw_duration = base::TimeDelta::FromMilliseconds(5); | 66 base::TimeDelta draw_duration = base::TimeDelta::FromMilliseconds(5); |
65 | 67 |
66 timing_history_.WillBeginMainFrame(); | 68 timing_history_.WillBeginMainFrame(true); |
67 AdvanceNowBy(begin_main_frame_to_commit_duration); | 69 AdvanceNowBy(begin_main_frame_queue_duration); |
68 // timing_history_.BeginMainFrameAborted(); | 70 timing_history_.BeginMainFrameStarted(Now()); |
| 71 AdvanceNowBy(begin_main_frame_start_to_commit_duration); |
69 timing_history_.DidCommit(); | 72 timing_history_.DidCommit(); |
70 timing_history_.WillPrepareTiles(); | 73 timing_history_.WillPrepareTiles(); |
71 AdvanceNowBy(prepare_tiles_duration); | 74 AdvanceNowBy(prepare_tiles_duration); |
72 timing_history_.DidPrepareTiles(); | 75 timing_history_.DidPrepareTiles(); |
73 AdvanceNowBy(prepare_tiles_end_to_ready_to_activate_duration); | 76 AdvanceNowBy(prepare_tiles_end_to_ready_to_activate_duration); |
74 timing_history_.ReadyToActivate(); | 77 timing_history_.ReadyToActivate(); |
75 // Do not count idle time between notification and actual activation. | 78 // Do not count idle time between notification and actual activation. |
76 AdvanceNowBy(one_second); | 79 AdvanceNowBy(one_second); |
77 timing_history_.WillActivate(); | 80 timing_history_.WillActivate(); |
78 AdvanceNowBy(activate_duration); | 81 AdvanceNowBy(activate_duration); |
79 timing_history_.DidActivate(); | 82 timing_history_.DidActivate(); |
80 // Do not count idle time between activate and draw. | 83 // Do not count idle time between activate and draw. |
81 AdvanceNowBy(one_second); | 84 AdvanceNowBy(one_second); |
82 timing_history_.WillDraw(); | 85 timing_history_.WillDraw(); |
83 AdvanceNowBy(draw_duration); | 86 AdvanceNowBy(draw_duration); |
84 timing_history_.DidDraw(); | 87 timing_history_.DidDraw(); |
85 | 88 |
86 EXPECT_EQ(begin_main_frame_to_commit_duration, | 89 EXPECT_EQ(begin_main_frame_queue_duration, |
| 90 timing_history_.BeginMainFrameQueueDurationCriticalEstimate()); |
| 91 EXPECT_EQ(base::TimeDelta(), |
| 92 timing_history_.BeginMainFrameQueueDurationNotCriticalEstimate()); |
| 93 EXPECT_EQ(begin_main_frame_start_to_commit_duration, |
| 94 timing_history_.BeginMainFrameStartToCommitDurationEstimate()); |
| 95 |
| 96 base::TimeDelta begin_main_frame_to_commit_duration_expected_ = |
| 97 begin_main_frame_queue_duration + |
| 98 begin_main_frame_start_to_commit_duration; |
| 99 EXPECT_EQ(begin_main_frame_to_commit_duration_expected_, |
87 timing_history_.BeginMainFrameToCommitDurationEstimate()); | 100 timing_history_.BeginMainFrameToCommitDurationEstimate()); |
| 101 |
88 EXPECT_EQ(commit_to_ready_to_activate_duration, | 102 EXPECT_EQ(commit_to_ready_to_activate_duration, |
89 timing_history_.CommitToReadyToActivateDurationEstimate()); | 103 timing_history_.CommitToReadyToActivateDurationEstimate()); |
90 EXPECT_EQ(prepare_tiles_duration, | 104 EXPECT_EQ(prepare_tiles_duration, |
91 timing_history_.PrepareTilesDurationEstimate()); | 105 timing_history_.PrepareTilesDurationEstimate()); |
92 EXPECT_EQ(activate_duration, timing_history_.ActivateDurationEstimate()); | 106 EXPECT_EQ(activate_duration, timing_history_.ActivateDurationEstimate()); |
93 EXPECT_EQ(draw_duration, timing_history_.DrawDurationEstimate()); | 107 EXPECT_EQ(draw_duration, timing_history_.DrawDurationEstimate()); |
94 } | 108 } |
95 | 109 |
96 TEST_F(CompositorTimingHistoryTest, AllSequentialBeginMainFrameAborted) { | 110 TEST_F(CompositorTimingHistoryTest, |
| 111 AllSequentialBeginMainFrameAborted_NotCritical) { |
97 base::TimeDelta one_second = base::TimeDelta::FromSeconds(1); | 112 base::TimeDelta one_second = base::TimeDelta::FromSeconds(1); |
98 | 113 |
99 base::TimeDelta begin_main_frame_to_commit_duration = | 114 base::TimeDelta begin_main_frame_queue_duration = |
| 115 base::TimeDelta::FromMilliseconds(1); |
| 116 base::TimeDelta begin_main_frame_start_to_commit_duration = |
100 base::TimeDelta::FromMilliseconds(1); | 117 base::TimeDelta::FromMilliseconds(1); |
101 base::TimeDelta prepare_tiles_duration = base::TimeDelta::FromMilliseconds(2); | 118 base::TimeDelta prepare_tiles_duration = base::TimeDelta::FromMilliseconds(2); |
102 base::TimeDelta prepare_tiles_end_to_ready_to_activate_duration = | 119 base::TimeDelta prepare_tiles_end_to_ready_to_activate_duration = |
103 base::TimeDelta::FromMilliseconds(1); | 120 base::TimeDelta::FromMilliseconds(1); |
104 base::TimeDelta commit_to_ready_to_activate_duration = | 121 base::TimeDelta commit_to_ready_to_activate_duration = |
105 base::TimeDelta::FromMilliseconds(3); | 122 base::TimeDelta::FromMilliseconds(3); |
106 base::TimeDelta activate_duration = base::TimeDelta::FromMilliseconds(4); | 123 base::TimeDelta activate_duration = base::TimeDelta::FromMilliseconds(4); |
107 base::TimeDelta draw_duration = base::TimeDelta::FromMilliseconds(5); | 124 base::TimeDelta draw_duration = base::TimeDelta::FromMilliseconds(5); |
108 | 125 |
109 timing_history_.WillBeginMainFrame(); | 126 timing_history_.WillBeginMainFrame(false); |
110 AdvanceNowBy(begin_main_frame_to_commit_duration); | 127 AdvanceNowBy(begin_main_frame_queue_duration); |
| 128 timing_history_.BeginMainFrameStarted(Now()); |
| 129 AdvanceNowBy(begin_main_frame_start_to_commit_duration); |
111 // BeginMainFrameAborted counts as a commit complete. | 130 // BeginMainFrameAborted counts as a commit complete. |
112 timing_history_.BeginMainFrameAborted(); | 131 timing_history_.BeginMainFrameAborted(); |
113 timing_history_.WillPrepareTiles(); | 132 timing_history_.WillPrepareTiles(); |
114 AdvanceNowBy(prepare_tiles_duration); | 133 AdvanceNowBy(prepare_tiles_duration); |
115 timing_history_.DidPrepareTiles(); | 134 timing_history_.DidPrepareTiles(); |
116 AdvanceNowBy(prepare_tiles_end_to_ready_to_activate_duration); | 135 AdvanceNowBy(prepare_tiles_end_to_ready_to_activate_duration); |
117 timing_history_.ReadyToActivate(); | 136 timing_history_.ReadyToActivate(); |
118 // Do not count idle time between notification and actual activation. | 137 // Do not count idle time between notification and actual activation. |
119 AdvanceNowBy(one_second); | 138 AdvanceNowBy(one_second); |
120 timing_history_.WillActivate(); | 139 timing_history_.WillActivate(); |
121 AdvanceNowBy(activate_duration); | 140 AdvanceNowBy(activate_duration); |
122 timing_history_.DidActivate(); | 141 timing_history_.DidActivate(); |
123 // Do not count idle time between activate and draw. | 142 // Do not count idle time between activate and draw. |
124 AdvanceNowBy(one_second); | 143 AdvanceNowBy(one_second); |
125 timing_history_.WillDraw(); | 144 timing_history_.WillDraw(); |
126 AdvanceNowBy(draw_duration); | 145 AdvanceNowBy(draw_duration); |
127 timing_history_.DidDraw(); | 146 timing_history_.DidDraw(); |
128 | 147 |
129 EXPECT_EQ(begin_main_frame_to_commit_duration, | 148 EXPECT_EQ(base::TimeDelta(), |
| 149 timing_history_.BeginMainFrameQueueDurationCriticalEstimate()); |
| 150 EXPECT_EQ(begin_main_frame_queue_duration, |
| 151 timing_history_.BeginMainFrameQueueDurationNotCriticalEstimate()); |
| 152 EXPECT_EQ(begin_main_frame_start_to_commit_duration, |
| 153 timing_history_.BeginMainFrameStartToCommitDurationEstimate()); |
| 154 |
| 155 base::TimeDelta begin_main_frame_to_commit_duration_expected_ = |
| 156 begin_main_frame_queue_duration + |
| 157 begin_main_frame_start_to_commit_duration; |
| 158 EXPECT_EQ(begin_main_frame_to_commit_duration_expected_, |
130 timing_history_.BeginMainFrameToCommitDurationEstimate()); | 159 timing_history_.BeginMainFrameToCommitDurationEstimate()); |
| 160 |
131 EXPECT_EQ(commit_to_ready_to_activate_duration, | 161 EXPECT_EQ(commit_to_ready_to_activate_duration, |
132 timing_history_.CommitToReadyToActivateDurationEstimate()); | 162 timing_history_.CommitToReadyToActivateDurationEstimate()); |
133 EXPECT_EQ(prepare_tiles_duration, | 163 EXPECT_EQ(prepare_tiles_duration, |
134 timing_history_.PrepareTilesDurationEstimate()); | 164 timing_history_.PrepareTilesDurationEstimate()); |
135 EXPECT_EQ(activate_duration, timing_history_.ActivateDurationEstimate()); | 165 EXPECT_EQ(activate_duration, timing_history_.ActivateDurationEstimate()); |
136 EXPECT_EQ(draw_duration, timing_history_.DrawDurationEstimate()); | 166 EXPECT_EQ(draw_duration, timing_history_.DrawDurationEstimate()); |
137 } | 167 } |
138 | 168 |
139 } // namespace | 169 } // namespace |
140 } // namespace cc | 170 } // namespace cc |
OLD | NEW |