| OLD | NEW |
| 1 # Copyright 2014 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 | 4 |
| 5 import unittest | 5 import unittest |
| 6 | 6 |
| 7 from metrics import timeline | 7 from metrics import timeline |
| 8 from telemetry.core.timeline import model as model_module | 8 from telemetry.core.timeline import model as model_module |
| 9 from telemetry.page import page as page_module | 9 from telemetry.page import page as page_module |
| 10 from telemetry.page import page_measurement_results | 10 from telemetry.page import page_measurement_results |
| 11 from telemetry.value import scalar | 11 from telemetry.value import scalar |
| (...skipping 27 matching lines...) Expand all Loading... |
| 39 results = TestPageMeasurementResults(self) | 39 results = TestPageMeasurementResults(self) |
| 40 tab = None | 40 tab = None |
| 41 metric.AddResults(tab, results) | 41 metric.AddResults(tab, results) |
| 42 return results | 42 return results |
| 43 | 43 |
| 44 def testBasic(self): | 44 def testBasic(self): |
| 45 model = model_module.TimelineModel() | 45 model = model_module.TimelineModel() |
| 46 renderer_main = model.GetOrCreateProcess(1).GetOrCreateThread(2) | 46 renderer_main = model.GetOrCreateProcess(1).GetOrCreateThread(2) |
| 47 renderer_main.name = 'CrRendererMain' | 47 renderer_main.name = 'CrRendererMain' |
| 48 | 48 |
| 49 # Create two frame swaps (Results times should be divided by two) |
| 50 gpu_main = model.GetOrCreateProcess(1).GetOrCreateThread(3) |
| 51 gpu_main.name = 'CrGPUMain' |
| 52 gpu_main.BeginSlice('gpucat', ':RealSwapBuffers', 10, 10) |
| 53 gpu_main.EndSlice(11, 11) |
| 54 gpu_main.BeginSlice('gpucat', ':RealSwapBuffers', 12, 12) |
| 55 gpu_main.EndSlice(13, 13) |
| 56 |
| 49 # [ X ] | 57 # [ X ] |
| 50 # [ Y ] | 58 # [ Y ] |
| 51 renderer_main.BeginSlice('cat1', 'X', 10, 0) | 59 renderer_main.BeginSlice('cat1', 'X', 10, 0) |
| 52 renderer_main.BeginSlice('cat2', 'Y', 15, 5) | 60 renderer_main.BeginSlice('cat2', 'Y', 15, 5) |
| 53 renderer_main.EndSlice(16, 0.5) | 61 renderer_main.EndSlice(16, 0.5) |
| 54 renderer_main.EndSlice(30, 19.5) | 62 renderer_main.EndSlice(30, 19.5) |
| 55 model.FinalizeImport() | 63 model.FinalizeImport() |
| 56 | 64 |
| 57 metric = timeline.ThreadTimesTimelineMetric() | 65 metric = timeline.ThreadTimesTimelineMetric() |
| 58 metric.report_renderer_main_details = True | 66 metric.details_to_report = timeline.MainThread |
| 59 results = self.GetResultsForModel(metric, model) | |
| 60 results.AssertHasPageSpecificScalarValue( | |
| 61 'thread_renderer_main_clock_time_percentage', '%', 100) | |
| 62 results.AssertHasPageSpecificScalarValue( | |
| 63 'renderer_main|cat1', 'ms', 19) | |
| 64 results.AssertHasPageSpecificScalarValue( | |
| 65 'renderer_main|cat2', 'ms', 1) | |
| 66 results.AssertHasPageSpecificScalarValue( | |
| 67 'renderer_main|idle', 'ms', 0) | |
| 68 | |
| 69 def testPercentage(self): | |
| 70 model = model_module.TimelineModel() | |
| 71 renderer_main = model.GetOrCreateProcess(1).GetOrCreateThread(2) | |
| 72 renderer_main.name = 'CrRendererMain' | |
| 73 | |
| 74 # [ X ] [ Z ] | |
| 75 # X is 20ms, then 10ms delay, then Z is 10ms | |
| 76 renderer_main.BeginSlice('cat', 'X', 10, 0) | |
| 77 renderer_main.EndSlice(30, 19.5) | |
| 78 renderer_main.BeginSlice('cat', 'Z', 40, 20) | |
| 79 renderer_main.EndSlice(50, 30) | |
| 80 model.FinalizeImport() | |
| 81 | |
| 82 metric = timeline.ThreadTimesTimelineMetric() | |
| 83 metric.report_renderer_main_details = True | |
| 84 results = self.GetResultsForModel(metric, model) | 67 results = self.GetResultsForModel(metric, model) |
| 85 | 68 |
| 86 results.AssertHasPageSpecificScalarValue( | 69 # Test that all categories exist |
| 87 'thread_renderer_main_clock_time_percentage', '%', 75) | 70 for name in timeline.TimelineThreadCategories.values(): |
| 88 results.AssertHasPageSpecificScalarValue( | 71 results.GetPageSpecificValueNamed(timeline.ThreadTimeResultName(name)) |
| 89 'renderer_main|cat', 'ms', 30) | 72 results.GetPageSpecificValueNamed(timeline.ThreadCpuTimeResultName(name)) |
| 90 results.AssertHasPageSpecificScalarValue( | 73 |
| 91 'renderer_main|idle', 'ms', 10) | 74 # Test a couple specific results. |
| 75 assert_results = { |
| 76 timeline.ThreadTimeResultName('renderer_main') : 10, |
| 77 timeline.ThreadDetailResultName('renderer_main','cat1') : 9.5, |
| 78 timeline.ThreadDetailResultName('renderer_main','cat2') : 0.5, |
| 79 timeline.ThreadDetailResultName('renderer_main','idle') : 0 |
| 80 } |
| 81 for name, value in assert_results.iteritems(): |
| 82 results.AssertHasPageSpecificScalarValue(name, 'ms', value) |
| OLD | NEW |