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

Side by Side Diff: tools/telemetry/telemetry/web_perf/timeline_based_measurement_unittest.py

Issue 809393002: Added support for improvement_direction to relevant values, which is propogated to chartjson. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix linter issues Created 5 years, 11 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 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 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 import os 5 import os
6 import unittest 6 import unittest
7 7
8 from telemetry import decorators 8 from telemetry import decorators
9 from telemetry.core import platform 9 from telemetry.core import platform
10 from telemetry.core import wpr_modes 10 from telemetry.core import wpr_modes
11 from telemetry.page import page as page_module 11 from telemetry.page import page as page_module
12 from telemetry.page import page_set 12 from telemetry.page import page_set
13 from telemetry.results import page_test_results 13 from telemetry.results import page_test_results
14 from telemetry.timeline import model as model_module 14 from telemetry.timeline import model as model_module
15 from telemetry.timeline import async_slice 15 from telemetry.timeline import async_slice
16 from telemetry.unittest_util import browser_test_case 16 from telemetry.unittest_util import browser_test_case
17 from telemetry.unittest_util import options_for_unittests 17 from telemetry.unittest_util import options_for_unittests
18 from telemetry.unittest_util import page_test_test_case 18 from telemetry.unittest_util import page_test_test_case
19 from telemetry.value import improvement_direction
19 from telemetry.value import scalar 20 from telemetry.value import scalar
20 from telemetry.web_perf import timeline_based_measurement as tbm_module 21 from telemetry.web_perf import timeline_based_measurement as tbm_module
21 from telemetry.web_perf import timeline_interaction_record as tir_module 22 from telemetry.web_perf import timeline_interaction_record as tir_module
22 from telemetry.web_perf.metrics import timeline_based_metric 23 from telemetry.web_perf.metrics import timeline_based_metric
23 24
24 25
25 class FakeFastMetric(timeline_based_metric.TimelineBasedMetric): 26 class FakeFastMetric(timeline_based_metric.TimelineBasedMetric):
26 27
27 def AddResults(self, model, renderer_thread, interaction_records, results): 28 def AddResults(self, model, renderer_thread, interaction_records, results):
28 results.AddValue(scalar.ScalarValue( 29 results.AddValue(scalar.ScalarValue(
29 results.current_page, 'FakeFastMetric', 'ms', 1)) 30 results.current_page, 'FakeFastMetric', 'ms', 1,
31 improvement_direction=improvement_direction.DOWN))
30 results.AddValue(scalar.ScalarValue( 32 results.AddValue(scalar.ScalarValue(
31 results.current_page, 'FastMetricRecords', 'count', 33 results.current_page, 'FastMetricRecords', 'count',
32 len(interaction_records))) 34 len(interaction_records),
35 improvement_direction=improvement_direction.DOWN))
33 36
34 37
35 class FakeSmoothMetric(timeline_based_metric.TimelineBasedMetric): 38 class FakeSmoothMetric(timeline_based_metric.TimelineBasedMetric):
36 39
37 def AddResults(self, model, renderer_thread, interaction_records, results): 40 def AddResults(self, model, renderer_thread, interaction_records, results):
38 results.AddValue(scalar.ScalarValue( 41 results.AddValue(scalar.ScalarValue(
39 results.current_page, 'FakeSmoothMetric', 'ms', 1)) 42 results.current_page, 'FakeSmoothMetric', 'ms', 1,
43 improvement_direction=improvement_direction.DOWN))
40 results.AddValue(scalar.ScalarValue( 44 results.AddValue(scalar.ScalarValue(
41 results.current_page, 'SmoothMetricRecords', 'count', 45 results.current_page, 'SmoothMetricRecords', 'count',
42 len(interaction_records))) 46 len(interaction_records),
47 improvement_direction=improvement_direction.DOWN))
43 48
44 49
45 class FakeLoadingMetric(timeline_based_metric.TimelineBasedMetric): 50 class FakeLoadingMetric(timeline_based_metric.TimelineBasedMetric):
46 51
47 def AddResults(self, model, renderer_thread, interaction_records, results): 52 def AddResults(self, model, renderer_thread, interaction_records, results):
48 results.AddValue(scalar.ScalarValue( 53 results.AddValue(scalar.ScalarValue(
49 results.current_page, 'FakeLoadingMetric', 'ms', 2)) 54 results.current_page, 'FakeLoadingMetric', 'ms', 2,
55 improvement_direction=improvement_direction.DOWN))
50 results.AddValue(scalar.ScalarValue( 56 results.AddValue(scalar.ScalarValue(
51 results.current_page, 'LoadingMetricRecords', 'count', 57 results.current_page, 'LoadingMetricRecords', 'count',
52 len(interaction_records))) 58 len(interaction_records),
59 improvement_direction=improvement_direction.DOWN))
53 60
54 61
55 def GetMetricFromMetricType(metric_type): 62 def GetMetricFromMetricType(metric_type):
56 if metric_type == tir_module.IS_FAST: 63 if metric_type == tir_module.IS_FAST:
57 return FakeFastMetric() 64 return FakeFastMetric()
58 if metric_type == tir_module.IS_SMOOTH: 65 if metric_type == tir_module.IS_SMOOTH:
59 return FakeSmoothMetric() 66 return FakeSmoothMetric()
60 if metric_type == tir_module.IS_RESPONSIVE: 67 if metric_type == tir_module.IS_RESPONSIVE:
61 return FakeLoadingMetric() 68 return FakeLoadingMetric()
62 raise Exception('Unrecognized metric type: %s' % metric_type) 69 raise Exception('Unrecognized metric type: %s' % metric_type)
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
286 # Since window.performance.now() uses wall-time instead of thread time, 293 # Since window.performance.now() uses wall-time instead of thread time,
287 # we only assert the biggest jank > 50ms here to account for the fact 294 # we only assert the biggest jank > 50ms here to account for the fact
288 # that the browser may deschedule during the jank loop. 295 # that the browser may deschedule during the jank loop.
289 v = results.FindAllPageSpecificValuesNamed( 296 v = results.FindAllPageSpecificValuesNamed(
290 'JankThreadJSRun-responsive-biggest_jank_thread_time') 297 'JankThreadJSRun-responsive-biggest_jank_thread_time')
291 self.assertGreaterEqual(v[0].value, 50) 298 self.assertGreaterEqual(v[0].value, 50)
292 299
293 v = results.FindAllPageSpecificValuesNamed( 300 v = results.FindAllPageSpecificValuesNamed(
294 'JankThreadJSRun-responsive-total_big_jank_thread_time') 301 'JankThreadJSRun-responsive-total_big_jank_thread_time')
295 self.assertGreaterEqual(v[0].value, 50) 302 self.assertGreaterEqual(v[0].value, 50)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698