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

Unified Diff: tools/telemetry/telemetry/web_perf/metrics/rendering_stats_unittest.py

Issue 365463003: Implement scroll handler latency tracking (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebased. Created 6 years, 4 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: tools/telemetry/telemetry/web_perf/metrics/rendering_stats_unittest.py
diff --git a/tools/telemetry/telemetry/web_perf/metrics/rendering_stats_unittest.py b/tools/telemetry/telemetry/web_perf/metrics/rendering_stats_unittest.py
index 5d92f1faccf80ad6c73e286733ddb03c3238dead..d4f77af1c1aa50427167bb73599df3cd965a29ee 100644
--- a/tools/telemetry/telemetry/web_perf/metrics/rendering_stats_unittest.py
+++ b/tools/telemetry/telemetry/web_perf/metrics/rendering_stats_unittest.py
@@ -10,8 +10,11 @@ import telemetry.timeline.bounds as timeline_bounds
from telemetry.timeline import model
from telemetry.util.statistics import DivideIfPossibleOrZero
from telemetry.web_perf.metrics.rendering_stats import (
- UI_COMP_NAME, BEGIN_COMP_NAME, ORIGINAL_COMP_NAME, END_COMP_NAME)
-from telemetry.web_perf.metrics.rendering_stats import ComputeInputEventLatency
+ UI_COMP_NAME, BEGIN_COMP_NAME, ORIGINAL_COMP_NAME,
+ BEGIN_SCROLL_UPDATE_COMP_NAME, FORWARD_SCROLL_UPDATE_COMP_NAME,
+ END_COMP_NAME)
+from telemetry.web_perf.metrics.rendering_stats import (
+ ComputeInputEventLatencies)
from telemetry.web_perf.metrics.rendering_stats import GetInputLatencyEvents
from telemetry.web_perf.metrics.rendering_stats import HasRenderingStats
from telemetry.web_perf.metrics.rendering_stats import NotEnoughFramesError
@@ -66,6 +69,7 @@ class ReferenceInputLatencyStats(object):
def __init__(self):
self.input_event_latency = []
self.input_event = []
+ self.scroll_update_latency = []
def AddMainThreadRenderingStats(mock_timer, thread, first_frame,
ref_stats = None):
@@ -163,6 +167,8 @@ def AddInputLatencyStats(mock_timer, start_thread, end_thread,
ui_comp_time = mock_timer.Get() * 1000.0
mock_timer.Advance(2, 4)
begin_comp_time = mock_timer.Get() * 1000.0
+ mock_timer.Advance(2, 4)
+ forward_comp_time = mock_timer.Get() * 1000.0
mock_timer.Advance(10, 20)
end_comp_time = mock_timer.Get() * 1000.0
@@ -188,12 +194,37 @@ def AddInputLatencyStats(mock_timer, start_thread, end_thread,
async_slice.end_thread = end_thread
start_thread.AddAsyncSlice(async_slice)
+ # Add scroll update latency info.
+ scroll_update_data = {
+ BEGIN_SCROLL_UPDATE_COMP_NAME: {'time': begin_comp_time},
+ FORWARD_SCROLL_UPDATE_COMP_NAME: {'time': forward_comp_time},
+ END_COMP_NAME: {'time': end_comp_time} }
+
+ scroll_async_slice = tracing_async_slice.AsyncSlice(
+ 'benchmark', 'InputLatency', timestamp)
+
+ scroll_async_sub_slice = tracing_async_slice.AsyncSlice(
+ 'benchmark', 'InputLatency', timestamp)
+ scroll_async_sub_slice.args = {'data': scroll_update_data}
+ scroll_async_sub_slice.parent_slice = scroll_async_slice
+ scroll_async_sub_slice.start_thread = start_thread
+ scroll_async_sub_slice.end_thread = end_thread
+
+ scroll_async_slice.sub_slices.append(scroll_async_sub_slice)
+ scroll_async_slice.start_thread = start_thread
+ scroll_async_slice.end_thread = end_thread
+ start_thread.AddAsyncSlice(scroll_async_slice)
+
if not ref_latency_stats:
return
ref_latency_stats.input_event.append(async_sub_slice)
+ ref_latency_stats.input_event.append(scroll_async_sub_slice)
ref_latency_stats.input_event_latency.append(
(data[END_COMP_NAME]['time'] - data[ORIGINAL_COMP_NAME]['time']) / 1000.0)
+ ref_latency_stats.scroll_update_latency.append(
+ (scroll_update_data[END_COMP_NAME]['time'] -
+ scroll_update_data[BEGIN_SCROLL_UPDATE_COMP_NAME]['time']) / 1000.0)
class RenderingStatsUnitTest(unittest.TestCase):
@@ -419,5 +450,9 @@ class RenderingStatsUnitTest(unittest.TestCase):
input_events.extend(GetInputLatencyEvents(browser, timeline_range))
self.assertEquals(input_events, ref_latency.input_event)
- self.assertEquals(ComputeInputEventLatency(input_events),
+ input_event_latency_result, scroll_update_latency_result = (
+ ComputeInputEventLatencies(input_events))
+ self.assertEquals(input_event_latency_result,
ref_latency.input_event_latency)
+ self.assertEquals(scroll_update_latency_result,
+ ref_latency.scroll_update_latency)

Powered by Google App Engine
This is Rietveld 408576698