Index: tools/perf/metrics/timeline_unittest.py |
diff --git a/tools/perf/metrics/timeline_unittest.py b/tools/perf/metrics/timeline_unittest.py |
index 5ae1a5d66fdc65e9e141fee500ae54cde962b0d2..e62e075c108b6bfa3afbc229e4d886595b626a63 100644 |
--- a/tools/perf/metrics/timeline_unittest.py |
+++ b/tools/perf/metrics/timeline_unittest.py |
@@ -109,7 +109,7 @@ class ThreadTimesTimelineMetricUnittest(unittest.TestCase): |
# Test that all result thread categories exist |
for name in timeline.TimelineThreadCategories.values(): |
- results.GetPageSpecificValueNamed(timeline.ThreadCpuTimeResultName(name)) |
+ results.GetPageSpecificValueNamed(metric.ThreadCpuTimeResultName(name)) |
def testBasic(self): |
model = model_module.TimelineModel() |
@@ -144,12 +144,12 @@ class ThreadTimesTimelineMetricUnittest(unittest.TestCase): |
main_thread = "renderer_main" |
cc_thread = 'renderer_compositor' |
assert_results = [ |
- (timeline.ThreadCpuTimeResultName(main_thread), 'ms', 9.75), |
- (timeline.ThreadTasksResultName(main_thread), 'tasks', 0.5), |
- (timeline.ThreadMeanFrameTimeResultName(cc_thread), 'ms', 10.0), |
- (timeline.ThreadDetailResultName(main_thread,'cat1'), 'ms', 9.5), |
- (timeline.ThreadDetailResultName(main_thread,'cat2'), 'ms', 0.5), |
- (timeline.ThreadDetailResultName(main_thread,'idle'), 'ms', 0) |
+ (metric.ThreadCpuTimeResultName(main_thread), 'ms', 9.75), |
+ (metric.ThreadTasksResultName(main_thread), 'tasks', 0.5), |
+ (metric.ThreadFrameTimeResultName(cc_thread), 'ms', 10.0), |
+ (metric.ThreadDetailResultName(main_thread,'cat1'), 'ms', 9.5), |
+ (metric.ThreadDetailResultName(main_thread,'cat2'), 'ms', 0.5), |
+ (metric.ThreadDetailResultName(main_thread,'idle'), 'ms', 0) |
] |
for name, unit, value in assert_results: |
results.AssertHasPageSpecificScalarValue(name, unit, value) |
@@ -183,7 +183,47 @@ class ThreadTimesTimelineMetricUnittest(unittest.TestCase): |
# Test a couple specific results. |
assert_results = { |
- timeline.ThreadCpuTimeResultName('renderer_main') : 9.0, |
+ metric.ThreadCpuTimeResultName('renderer_main') : 9.0, |
} |
for name, value in assert_results.iteritems(): |
results.AssertHasPageSpecificScalarValue(name, 'ms', value) |
+ |
+ def testMeasureTotalThreadTime(self): |
+ model = model_module.TimelineModel() |
+ renderer_main = model.GetOrCreateProcess(1).GetOrCreateThread(2) |
+ renderer_main.name = 'CrRendererMain' |
+ |
+ # Create two frame swaps (Results times should accumulate both frames) |
+ 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) |
+ cc_main.BeginSlice('cc_cat', timeline.FrameTraceName, 12, 12) |
+ cc_main.EndSlice(13, 13) |
+ |
+ # [ X ] [ Z ] |
+ # [ Y ] |
+ renderer_main.BeginSlice('cat1', 'X', 10, 0) |
+ renderer_main.BeginSlice('cat2', 'Y', 15, 5) |
+ renderer_main.EndSlice(16, 5.5) |
+ renderer_main.BeginSlice('cat1', 'Z', 20, 9) |
+ renderer_main.BeginSlice('cat1', 'Z', 21, 10) |
+ renderer_main.EndSlice(30, 19.5) |
+ model.FinalizeImport() |
+ |
+ metric = timeline.ThreadTimesTimelineMetric(measure_per_frame=False) |
+ metric.details_to_report = timeline.ReportMainThreadOnly |
+ results = self.GetResults(metric, model, renderer_main.parent, |
+ [_GetInteractionRecord(10, 30)]) |
+ |
+ # Test for the results we expect. |
+ main_thread = "renderer_main" |
+ cc_thread = 'renderer_compositor' |
+ assert_results = [ |
+ (metric.ThreadCpuTimeResultName(main_thread), 'ms', 19.5), |
+ (metric.ThreadTasksResultName(main_thread), 'tasks', 1.0), |
+ (metric.ThreadFrameTimeResultName(cc_thread), 'ms', 20.0), |
+ (metric.ThreadDetailResultName(main_thread,'cat1'), 'ms', 19.0), |
+ (metric.ThreadDetailResultName(main_thread,'cat2'), 'ms', 1.0)] |
+ for name, unit, value in assert_results: |
+ results.AssertHasPageSpecificScalarValue(name, unit, value) |