Upstream version 10.39.225.0
[platform/framework/web/crosswalk.git] / src / tools / telemetry / telemetry / web_perf / metrics / rendering_stats_unittest.py
index 09f38b3..2875703 100644 (file)
@@ -7,6 +7,7 @@ import unittest
 
 import telemetry.timeline.async_slice as tracing_async_slice
 import telemetry.timeline.bounds as timeline_bounds
+from telemetry.perf_tests_helper import FlattenList
 from telemetry.timeline import model
 from telemetry.util.statistics import DivideIfPossibleOrZero
 from telemetry.web_perf.metrics.rendering_stats import (
@@ -22,7 +23,6 @@ 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
 from telemetry.web_perf.metrics.rendering_stats import RenderingStats
 
 
@@ -219,6 +219,11 @@ def AddInputLatencyStats(mock_timer, start_thread, end_thread,
   scroll_async_slice.end_thread = end_thread
   start_thread.AddAsyncSlice(scroll_async_slice)
 
+  # Also add some dummy frame statistics so we can feed the resulting timeline
+  # to RenderingStats.
+  AddMainThreadRenderingStats(mock_timer, start_thread, False)
+  AddImplThreadRenderingStats(mock_timer, end_thread, False)
+
   if not ref_latency_stats:
     return
 
@@ -296,8 +301,10 @@ class RenderingStatsUnitTest(unittest.TestCase):
     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)
+
+    stats = RenderingStats(renderer, None, timeline_ranges)
+    self.assertEquals(0, len(stats.frame_timestamps[1]))
+
 
   def testFromTimeline(self):
     timeline = model.TimelineModel()
@@ -450,8 +457,9 @@ class RenderingStatsUnitTest(unittest.TestCase):
 
     timeline_markers = timeline.FindTimelineMarkers(
         ['ActionA', 'ActionB', 'ActionA'])
-    for timeline_range in [ timeline_bounds.Bounds.CreateFromEvent(marker)
-                            for marker in timeline_markers ]:
+    timeline_ranges = [timeline_bounds.Bounds.CreateFromEvent(marker)
+                       for marker in timeline_markers]
+    for timeline_range in timeline_ranges:
       if timeline_range.is_empty:
         continue
       input_events.extend(GetInputLatencyEvents(browser, timeline_range))
@@ -460,3 +468,14 @@ class RenderingStatsUnitTest(unittest.TestCase):
     input_event_latency_result = ComputeInputEventLatencies(input_events)
     self.assertEquals(input_event_latency_result,
                       ref_latency.input_event_latency)
+
+    stats = RenderingStats(renderer, browser, timeline_ranges)
+    self.assertEquals(FlattenList(stats.input_event_latency), [
+        latency for name, latency in ref_latency.input_event_latency
+        if name != SCROLL_UPDATE_EVENT_NAME])
+    self.assertEquals(FlattenList(stats.scroll_update_latency), [
+        latency for name, latency in ref_latency.input_event_latency
+        if name == SCROLL_UPDATE_EVENT_NAME])
+    self.assertEquals(FlattenList(stats.gesture_scroll_update_latency), [
+        latency for name, latency in ref_latency.input_event_latency
+        if name == GESTURE_SCROLL_UPDATE_EVENT_NAME])