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

Side by Side Diff: tools/perf/metrics/smoothness_unittest.py

Issue 22475007: telemetry: separated stats collection from metrics calculation. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 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 unified diff | Download patch
OLDNEW
1 # Copyright 2013 The Chromium Authors. All rights reserved. 1 # Copyright 2013 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 import unittest 4 import unittest
5 5
6 from metrics import smoothness 6 from metrics import smoothness
7 from telemetry.page import page 7 from telemetry.page import page
8 from telemetry.page.page_measurement_results import PageMeasurementResults 8 from telemetry.page.page_measurement_results import PageMeasurementResults
9 9
10 class SmoothnessMetricsUnitTest(unittest.TestCase): 10 class SmoothnessMetricsUnitTest(unittest.TestCase):
11 11
12 def testCalcResultsFromRAFRenderStats(self): 12 def testCalcResultsFromRAFRenderStats(self):
13 rendering_stats = {'droppedFrameCount': 5, 13 # Create mock BenchmarkStats
14 'totalTimeInSeconds': 1, 14 stats = {'total_time': 1,
15 'numAnimationFrames': 10, 15 'screen_frame_count': 10,
16 'numFramesSentToScreen': 10} 16 'dropped_frame_count': 5,
17 'impl_thread_scroll_count': 0,
18 'main_thread_scroll_count': 0,
19 'drawn_layers_count': 0,
20 'missing_tile_count': 0,
21 'texture_upload_count': 0,
22 'texture_upload_time': 0,
23 'commit_count': 0,
24 'commit_time': 0,
25 'deferred_image_decode_count': 0,
26 'deferred_image_decode_time': 0,
27 'deferred_image_cache_hits': 0,
28 'image_gathering_count': 0,
29 'image_gathering_time': 0,
30 'tile_analysis_count': 0,
31 'tile_analysis_time': 0,
32 'solid_color_tile_analysis_count': 0,
33 'input_event_count': 0,
34 'input_event_latency': 0,
35 'touch_ui_count': 0,
36 'touch_ui_latency': 0,
37 'touch_acked_count': 0,
38 'touch_acked_latency': 0,
39 'scroll_update_count': 0,
40 'scroll_update_latency': 0}
41
17 res = PageMeasurementResults() 42 res = PageMeasurementResults()
18 res.WillMeasurePage(page.Page('http://foo.com/', None)) 43 res.WillMeasurePage(page.Page('http://foo.com/', None))
19 smoothness.CalcScrollResults(rendering_stats, res) 44 smoothness.CalcResults(stats, res)
20 res.DidMeasurePage() 45 res.DidMeasurePage()
21 self.assertEquals(50, res.page_results[0]['dropped_percent'].value) 46 self.assertEquals(50, res.page_results[0]['dropped_percent'].value)
22 self.assertAlmostEquals( 47 self.assertAlmostEquals(
23 100, 48 100,
24 res.page_results[0]['mean_frame_time'].value, 2) 49 res.page_results[0]['mean_frame_time'].value, 2)
25 50
26 def testCalcResultsRealRenderStats(self): 51 def testCalcResultsRealRenderStats(self):
27 rendering_stats = {'numFramesSentToScreen': 60, 52 # Create mock BenchmarkStats
28 'globalTotalTextureUploadTimeInSeconds': 0, 53 stats = {'total_time': 1.0,
29 'totalProcessingCommandsTimeInSeconds': 0, 54 'screen_frame_count': 100,
30 'globalTextureUploadCount': 0, 55 'dropped_frame_count': 20,
31 'droppedFrameCount': 0, 56 'impl_thread_scroll_count': 50,
32 'textureUploadCount': 0, 57 'main_thread_scroll_count': 50,
33 'numAnimationFrames': 10, 58 'drawn_layers_count': 240,
34 'totalPaintTimeInSeconds': 0.35374299999999986, 59 'missing_tile_count': 10,
35 'globalTotalProcessingCommandsTimeInSeconds': 0, 60 'texture_upload_count': 120,
36 'totalTextureUploadTimeInSeconds': 0, 61 'texture_upload_time': 1.2,
37 'totalRasterizeTimeInSeconds': 0, 62 'commit_count': 130,
38 'totalTimeInSeconds': 1.0} 63 'commit_time': 1.3,
64 'deferred_image_decode_count': 140,
65 'deferred_image_decode_time': 1.4,
66 'deferred_image_cache_hits': 30,
67 'image_gathering_count': 150,
68 'image_gathering_time': 1.5,
69 'tile_analysis_count': 160,
70 'tile_analysis_time': 1.6,
71 'solid_color_tile_analysis_count': 40,
72 'input_event_count': 170,
73 'input_event_latency': 1.7,
74 'touch_ui_count': 180,
75 'touch_ui_latency': 1.8,
76 'touch_acked_count': 190,
77 'touch_acked_latency': 1.9,
78 'scroll_update_count': 200,
79 'scroll_update_latency': 2.0}
80
39 res = PageMeasurementResults() 81 res = PageMeasurementResults()
40 res.WillMeasurePage(page.Page('http://foo.com/', None)) 82 res.WillMeasurePage(page.Page('http://foo.com/', None))
41 smoothness.CalcScrollResults(rendering_stats, res) 83 smoothness.CalcResults(stats, res)
42 res.DidMeasurePage() 84 res.DidMeasurePage()
43 self.assertEquals(0, res.page_results[0]['dropped_percent'].value) 85
86 # Scroll Results
44 self.assertAlmostEquals( 87 self.assertAlmostEquals(
45 1000 / 60., 88 1.0 / 100.0 * 1000.0,
46 res.page_results[0]['mean_frame_time'].value, 2) 89 res.page_results[0]['mean_frame_time'].value, 2)
90 self.assertAlmostEquals(
91 20.0 / 100.0 * 100.0,
92 res.page_results[0]['dropped_percent'].value)
93 self.assertAlmostEquals(
94 50.0 / (50.0 + 50.0) * 100.0,
95 res.page_results[0]['percent_impl_scrolled'].value)
96 self.assertAlmostEquals(
97 240.0 / 100.0,
98 res.page_results[0]['average_num_layers_drawn'].value)
99 self.assertAlmostEquals(
100 10.0 / 100.0,
101 res.page_results[0]['average_num_missing_tiles'].value)
102
103 # Texture Upload Results
104 self.assertAlmostEquals(
105 1.3 / 130.0 * 1000.0,
106 res.page_results[0]['average_commit_time'].value)
107 self.assertEquals(
108 120,
109 res.page_results[0]['texture_upload_count'].value)
110 self.assertEquals(
111 1.2,
112 res.page_results[0]['total_texture_upload_time'].value)
113
114 # Image Decoding Results
115 self.assertEquals(
116 140,
117 res.page_results[0]['total_deferred_image_decode_count'].value)
118 self.assertEquals(
119 30,
120 res.page_results[0]['total_image_cache_hit_count'].value)
121 self.assertAlmostEquals(
122 1.5 / 150.0 * 1000.0,
123 res.page_results[0]['average_image_gathering_time'].value)
124 self.assertEquals(
125 1.4,
126 res.page_results[0]['total_deferred_image_decoding_time'].value)
127
128 # Tile Analysis Results
129 self.assertEquals(
130 160,
131 res.page_results[0]['total_tiles_analyzed'].value)
132 self.assertEquals(
133 40,
134 res.page_results[0]['solid_color_tiles_analyzed'].value)
135 self.assertAlmostEquals(
136 1.6 / 160.0 * 1000.0,
137 res.page_results[0]['average_tile_analysis_time'].value)
138
139 # Latency Results
140 self.assertAlmostEquals(
141 1.7 / 170.0 * 1000.0,
142 res.page_results[0]['average_latency'].value)
143 self.assertAlmostEquals(
144 1.8 / 180.0 * 1000.0,
145 res.page_results[0]['average_touch_ui_latency'].value)
146 self.assertAlmostEquals(
147 1.9 / 190.0 * 1000.0,
148 res.page_results[0]['average_touch_acked_latency'].value)
149 self.assertAlmostEquals(
150 2.0 / 200.0 * 1000.0,
151 res.page_results[0]['average_scroll_update_latency'].value)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698