summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorqyearsley@chromium.org <qyearsley@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-15 23:58:54 +0000
committerqyearsley@chromium.org <qyearsley@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-08-15 23:58:54 +0000
commit7d42af629597fb2406f48f13b1eb4c3a2583cac0 (patch)
tree3d2d2f942f8f5264a4706baed97b1b17037fc2d2 /tools
parent4b772ff15da1b101cb46b7469370fe0ae86c1860 (diff)
downloadchromium_src-7d42af629597fb2406f48f13b1eb4c3a2583cac0.zip
chromium_src-7d42af629597fb2406f48f13b1eb4c3a2583cac0.tar.gz
chromium_src-7d42af629597fb2406f48f13b1eb4c3a2583cac0.tar.bz2
Make TimelineMetric a subclass of Metric
BUG= Review URL: https://chromiumcodereview.appspot.com/22223002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@217870 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'tools')
-rw-r--r--tools/perf/measurements/loading_timeline.py9
-rw-r--r--tools/perf/measurements/loading_trace.py10
-rw-r--r--tools/perf/metrics/timeline.py22
3 files changed, 22 insertions, 19 deletions
diff --git a/tools/perf/measurements/loading_timeline.py b/tools/perf/measurements/loading_timeline.py
index 9ec9e70..113f2e1 100644
--- a/tools/perf/measurements/loading_timeline.py
+++ b/tools/perf/measurements/loading_timeline.py
@@ -9,15 +9,14 @@ from telemetry.page import page_measurement
class LoadingTimeline(page_measurement.PageMeasurement):
def __init__(self, *args, **kwargs):
super(LoadingTimeline, self).__init__(*args, **kwargs)
- self._metrics = None
+ self._timeline_metric = timeline.TimelineMetric(timeline.TIMELINE_MODE)
@property
def results_are_the_same_on_every_page(self):
return False
def WillNavigateToPage(self, page, tab):
- self._metrics = timeline.TimelineMetrics(timeline.TIMELINE_MODE)
- self._metrics.Start(tab)
+ self._timeline_metric.Start(page, tab)
def MeasurePage(self, page, tab, results):
# In current telemetry tests, all tests wait for DocumentComplete state,
@@ -28,7 +27,7 @@ class LoadingTimeline(page_measurement.PageMeasurement):
# TODO(nduca): when crbug.com/168431 is fixed, modify the page sets to
# recognize loading as a toplevel action.
- self._metrics.Stop(tab)
+ self._timeline_metric.Stop(page, tab)
loading.LoadingMetric().AddResults(tab, results)
- self._metrics.AddResults(results)
+ self._timeline_metric.AddResults(tab, results)
diff --git a/tools/perf/measurements/loading_trace.py b/tools/perf/measurements/loading_trace.py
index 68f241b..16d9300 100644
--- a/tools/perf/measurements/loading_trace.py
+++ b/tools/perf/measurements/loading_trace.py
@@ -9,15 +9,14 @@ from telemetry.page import page_measurement
class LoadingTrace(page_measurement.PageMeasurement):
def __init__(self, *args, **kwargs):
super(LoadingTrace, self).__init__(*args, **kwargs)
- self._metrics = None
+ self._timeline_metric = timeline.TimelineMetric(timeline.TRACING_MODE)
@property
def results_are_the_same_on_every_page(self):
return False
def WillNavigateToPage(self, page, tab):
- self._metrics = timeline.TimelineMetrics(timeline.TRACING_MODE)
- self._metrics.Start(tab)
+ self._timeline_metric.Start(page, tab)
def MeasurePage(self, page, tab, results):
# In current telemetry tests, all tests wait for DocumentComplete state,
@@ -28,7 +27,8 @@ class LoadingTrace(page_measurement.PageMeasurement):
# TODO(nduca): when crbug.com/168431 is fixed, modify the page sets to
# recognize loading as a toplevel action.
- self._metrics.Stop(tab)
+ self._timeline_metric.Stop(page, tab)
loading.LoadingMetric().AddResults(tab, results)
- self._metrics.AddResults(results)
+ self._timeline_metric.AddResults(tab, results)
+
diff --git a/tools/perf/metrics/timeline.py b/tools/perf/metrics/timeline.py
index 37bc3e6..6462646 100644
--- a/tools/perf/metrics/timeline.py
+++ b/tools/perf/metrics/timeline.py
@@ -3,17 +3,20 @@
# found in the LICENSE file.
import collections
+from metrics import Metric
+
TRACING_MODE = 'tracing-mode'
TIMELINE_MODE = 'timeline-mode'
-class TimelineMetrics(object):
+class TimelineMetric(Metric):
def __init__(self, mode):
assert mode in (TRACING_MODE, TIMELINE_MODE)
+ super(TimelineMetric, self).__init__()
self._mode = mode
self._model = None
self._thread_for_tab = None
- def Start(self, tab):
+ def Start(self, page, tab):
self._model = None
self._thread_for_tab = None
@@ -25,7 +28,7 @@ class TimelineMetrics(object):
assert self._mode == TIMELINE_MODE
tab.StartTimelineRecording()
- def Stop(self, tab):
+ def Stop(self, page, tab):
if self._mode == TRACING_MODE:
# This creates an async trace event in the render process for tab that
# will allow us to find that tab during the AddTracingResultsForTab
@@ -49,7 +52,7 @@ class TimelineMetrics(object):
self._model = tab.timeline_model
self._thread_for_tab = self._model.GetAllThreads()[0]
- def AddResults(self, results):
+ def AddResults(self, tab, results):
assert self._model
events = self._thread_for_tab.all_slices
@@ -58,10 +61,11 @@ class TimelineMetrics(object):
for e in events:
events_by_name[e.name].append(e)
- for key, group in events_by_name.items():
- times = [e.self_time for e in group]
+ for event_name, event_group in events_by_name.iteritems():
+ times = [event.self_time for event in event_group]
total = sum(times)
biggest_jank = max(times)
- results.Add(key, 'ms', total)
- results.Add(key + '_max', 'ms', biggest_jank)
- results.Add(key + '_avg', 'ms', total / len(times))
+ results.Add(event_name, 'ms', total)
+ results.Add(event_name + '_max', 'ms', biggest_jank)
+ results.Add(event_name + '_avg', 'ms', total / len(times))
+