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

Unified Diff: tools/perf/metrics/rendering_stats_unittest.py

Issue 255603003: telemtry: better error message for not enought frames cases. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 8 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
« no previous file with comments | « tools/perf/metrics/rendering_stats.py ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/perf/metrics/rendering_stats_unittest.py
diff --git a/tools/perf/metrics/rendering_stats_unittest.py b/tools/perf/metrics/rendering_stats_unittest.py
index bedeecaa8799d8ddf30232c8befeaed41ebd6086..425a9cef28e6e530b5d7010c1aae04ae38e6170f 100644
--- a/tools/perf/metrics/rendering_stats_unittest.py
+++ b/tools/perf/metrics/rendering_stats_unittest.py
@@ -11,6 +11,7 @@ from metrics.rendering_stats import ComputeMouseWheelScrollLatency
from metrics.rendering_stats import ComputeTouchScrollLatency
from metrics.rendering_stats import HasRenderingStats
from metrics.rendering_stats import RenderingStats
+from metrics.rendering_stats import NotEnoughFramesError
import telemetry.core.timeline.bounds as timeline_bounds
from telemetry.core.timeline import model
import telemetry.core.timeline.async_slice as tracing_async_slice
@@ -224,6 +225,46 @@ class RenderingStatsUnitTest(unittest.TestCase):
process_with_frames.FinalizeImport()
self.assertTrue(HasRenderingStats(thread_with_frames))
+ def testRangeWithoutFrames(self):
+ timer = MockTimer()
+ timeline = model.TimelineModel()
+
+ # Create a renderer process, with a main thread and impl thread.
+ renderer = timeline.GetOrCreateProcess(pid = 2)
+ renderer_main = renderer.GetOrCreateThread(tid = 21)
+ renderer_compositor = renderer.GetOrCreateThread(tid = 22)
+
+ # Create 10 main and impl rendering stats events for Action A.
+ timer.Advance(2, 4)
+ renderer_main.BeginSlice('webkit.console', 'ActionA', timer.Get(), '')
+ for i in xrange(0, 10):
+ first = (i == 0)
+ AddMainThreadRenderingStats(timer, renderer_main, first, None)
+ AddImplThreadRenderingStats(timer, renderer_compositor, first, None)
+ timer.Advance(2, 4)
+ renderer_main.EndSlice(timer.Get())
+
+ # Create 5 main and impl rendering stats events not within any action.
+ for i in xrange(0, 5):
+ first = (i == 0)
+ AddMainThreadRenderingStats(timer, renderer_main, first, None)
+ AddImplThreadRenderingStats(timer, renderer_compositor, first, None)
+
+ # Create Action B without any frames. This should trigger
+ # NotEnoughFramesError when the RenderingStats object is created.
+ timer.Advance(2, 4)
+ renderer_main.BeginSlice('webkit.console', 'ActionB', timer.Get(), '')
+ timer.Advance(2, 4)
+ renderer_main.EndSlice(timer.Get())
+
+ renderer.FinalizeImport()
+
+ timeline_markers = timeline.FindTimelineMarkers(['ActionA', 'ActionB'])
+ timeline_ranges = [ timeline_bounds.Bounds.CreateFromEvent(marker)
+ for marker in timeline_markers ]
+ self.assertRaises(NotEnoughFramesError, RenderingStats,
+ renderer, None, timeline_ranges)
+
def testFromTimeline(self):
timeline = model.TimelineModel()
« no previous file with comments | « tools/perf/metrics/rendering_stats.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698