Index: tools/perf/metrics/timeline_unittest.py |
diff --git a/tools/perf/metrics/timeline_unittest.py b/tools/perf/metrics/timeline_unittest.py |
index 6b3c9a00dfd583c408f828462e03e1e7f3cdf52c..ebc72eb1d8da4e2b22b0a38ce4b51badc7d59c89 100644 |
--- a/tools/perf/metrics/timeline_unittest.py |
+++ b/tools/perf/metrics/timeline_unittest.py |
@@ -91,6 +91,27 @@ class ThreadTimesTimelineMetricUnittest(unittest.TestCase): |
metric.AddResults(tab, results) |
return results |
+ def GetActionRange(self, start, end): |
+ action_range = bounds.Bounds() |
+ action_range.AddValue(start) |
+ action_range.AddValue(end) |
+ return action_range |
+ |
+ def testResults(self): |
+ model = model_module.TimelineModel() |
+ renderer_main = model.GetOrCreateProcess(1).GetOrCreateThread(2) |
+ renderer_main.name = 'CrRendererMain' |
+ |
+ metric = timeline.ThreadTimesTimelineMetric() |
+ metric._action_ranges = [self.GetActionRange(1, 2)] |
+ metric.details_to_report = timeline.ReportMainThreadOnly |
+ results = self.GetResultsForModel(metric, model) |
+ |
+ # Test that all result thread categories exist |
+ for name in timeline.TimelineThreadCategories.values(): |
+ results.GetPageSpecificValueNamed(timeline.ThreadTimeResultName(name)) |
+ results.GetPageSpecificValueNamed(timeline.ThreadCpuTimeResultName(name)) |
+ |
def testBasic(self): |
model = model_module.TimelineModel() |
renderer_main = model.GetOrCreateProcess(1).GetOrCreateThread(2) |
@@ -99,9 +120,9 @@ class ThreadTimesTimelineMetricUnittest(unittest.TestCase): |
# Create two frame swaps (Results times should be divided by two) |
cc_main = model.GetOrCreateProcess(1).GetOrCreateThread(3) |
cc_main.name = 'Compositor' |
- cc_main.BeginSlice('cc_cat', timeline.CompositorFrameTraceName, 10, 10) |
+ cc_main.BeginSlice('cc_cat', timeline.FrameTraceName, 10, 10) |
cc_main.EndSlice(11, 11) |
- cc_main.BeginSlice('cc_cat', timeline.CompositorFrameTraceName, 12, 12) |
+ cc_main.BeginSlice('cc_cat', timeline.FrameTraceName, 12, 12) |
cc_main.EndSlice(13, 13) |
# [ X ] [ Z ] |
@@ -114,21 +135,12 @@ class ThreadTimesTimelineMetricUnittest(unittest.TestCase): |
renderer_main.BeginSlice('cat1', 'Z', 33, 21) |
model.FinalizeImport() |
- # Exclude Z using an action-range. |
- action_range = bounds.Bounds() |
- action_range.AddValue(10) |
- action_range.AddValue(30) |
- |
+ # Exclude 'Z' using an action-range. |
metric = timeline.ThreadTimesTimelineMetric() |
- metric._action_ranges = [action_range] |
- metric.details_to_report = timeline.MainThread |
+ metric._action_ranges = [self.GetActionRange(10, 30)] |
+ metric.details_to_report = timeline.ReportMainThreadOnly |
results = self.GetResultsForModel(metric, model) |
- # Test that all categories exist |
- for name in timeline.TimelineThreadCategories.values(): |
- results.GetPageSpecificValueNamed(timeline.ThreadTimeResultName(name)) |
- results.GetPageSpecificValueNamed(timeline.ThreadCpuTimeResultName(name)) |
- |
# Test a couple specific results. |
assert_results = { |
timeline.ThreadTimeResultName('renderer_main') : 10, |
@@ -138,3 +150,38 @@ class ThreadTimesTimelineMetricUnittest(unittest.TestCase): |
} |
for name, value in assert_results.iteritems(): |
results.AssertHasPageSpecificScalarValue(name, 'ms', value) |
+ |
+ def testOverheadIsRemoved(self): |
+ model = model_module.TimelineModel() |
+ renderer_main = model.GetOrCreateProcess(1).GetOrCreateThread(2) |
+ renderer_main.name = 'CrRendererMain' |
+ |
+ # Create one frame swap. |
+ cc_main = model.GetOrCreateProcess(1).GetOrCreateThread(3) |
+ cc_main.name = 'Compositor' |
+ cc_main.BeginSlice('cc_cat', timeline.FrameTraceName, 10, 10) |
+ cc_main.EndSlice(11, 11) |
+ |
+ # [ X ] |
+ # [Overhead] |
+ overhead_category = timeline.OverheadTraceCategory |
+ overhead_name = timeline.OverheadTraceName |
+ renderer_main.BeginSlice('cat1', 'X', 10, 0) |
+ renderer_main.BeginSlice(overhead_category, overhead_name, 15, 5) |
+ renderer_main.EndSlice(16, 6) |
+ renderer_main.EndSlice(30, 10) |
+ model.FinalizeImport() |
+ |
+ # Include everything in an action-range. |
+ metric = timeline.ThreadTimesTimelineMetric() |
+ metric._action_ranges = [self.GetActionRange(10, 30)] |
+ metric.details_to_report = timeline.ReportMainThreadOnly |
+ results = self.GetResultsForModel(metric, model) |
+ |
+ # Test a couple specific results. |
+ assert_results = { |
+ timeline.ThreadTimeResultName('renderer_main') : 19, |
+ timeline.ThreadCpuTimeResultName('renderer_main') : 9.0, |
+ } |
+ for name, value in assert_results.iteritems(): |
+ results.AssertHasPageSpecificScalarValue(name, 'ms', value) |