| Index: tools/telemetry/telemetry/web_perf/metrics/trace_event_stats.py
|
| diff --git a/tools/telemetry/telemetry/web_perf/metrics/trace_event_stats.py b/tools/telemetry/telemetry/web_perf/metrics/trace_event_stats.py
|
| deleted file mode 100644
|
| index 097d8663692ffd697a22598bf81f5e79306a38ec..0000000000000000000000000000000000000000
|
| --- a/tools/telemetry/telemetry/web_perf/metrics/trace_event_stats.py
|
| +++ /dev/null
|
| @@ -1,131 +0,0 @@
|
| -# Copyright 2015 The Chromium Authors. All rights reserved.
|
| -# Use of this source code is governed by a BSD-style license that can be
|
| -# found in the LICENSE file.
|
| -
|
| -import collections
|
| -
|
| -from telemetry.value import list_of_scalar_values
|
| -from telemetry.value import scalar
|
| -
|
| -
|
| -class TraceEventStatsInput(object):
|
| - """Input for the TraceEventStats.
|
| - Using this object with TraceEventStats will include two metrics, one with a
|
| - list of times of the given event, and one for the count of the events, named
|
| - `metric_name + '-count'`.
|
| - Args:
|
| - event_category: The category of the event to track.
|
| - event_name: The name of the event to track.
|
| - metric_name: The name of the metric name, which accumulates all of the
|
| - times of the events.
|
| - metric_description: Description of the metric.
|
| - units: Units for the metric.
|
| - process_name: (optional) The name of the process to inspect for the trace
|
| - events. Defaults to 'Renderer'.
|
| - """
|
| - def __init__(self, event_category, event_name, metric_name,
|
| - metric_description, units, process_name='Renderer'):
|
| - self.event_category = event_category
|
| - self.event_name = event_name
|
| - self.metric_name = metric_name
|
| - self.metric_description = metric_description
|
| - self.units = units
|
| - self.process_name = process_name
|
| - self.event_id = TraceEventStatsInput.GetEventId(event_category, event_name)
|
| - assert process_name is not None
|
| -
|
| - @staticmethod
|
| - def GetEventId(event_category, event_name):
|
| - return event_category + '^SERIALIZE-DELIM^' + event_name
|
| -
|
| -class TraceEventStats(object):
|
| - """Reports durations and counts of given trace events.
|
| - """
|
| -
|
| - def __init__(self, trace_event_aggregator_inputs=None):
|
| - self._inputs_by_process_name = collections.defaultdict(list)
|
| - self._metrics = set()
|
| - self._IndexNewInputs(trace_event_aggregator_inputs)
|
| -
|
| - def AddInput(self, trace_event_aggregator_input):
|
| - self._IndexNewInputs([trace_event_aggregator_input])
|
| -
|
| - def _IndexNewInputs(self, input_list):
|
| - if not input_list:
|
| - return
|
| - for input_obj in input_list:
|
| - name = input_obj.metric_name
|
| - # We check here to make sure we don't have a duplicate metric
|
| - assert name not in self._metrics
|
| - assert (name + '-count') not in self._metrics
|
| - self._metrics.add(name)
|
| - self._metrics.add(name + '-count')
|
| -
|
| - self._inputs_by_process_name[input_obj.process_name].append(input_obj)
|
| -
|
| - @staticmethod
|
| - def ThreadDurationIfPresent(event):
|
| - if event.thread_duration:
|
| - return event.thread_duration
|
| - else:
|
| - return event.duration
|
| -
|
| - def AddResults(self, model, renderer_process, interactions, results):
|
| - del renderer_process # unused
|
| - assert interactions
|
| - for p in model.GetAllProcesses():
|
| - if p.name not in self._inputs_by_process_name:
|
| - continue
|
| -
|
| - inputs = self._inputs_by_process_name[p.name]
|
| - input_ids = {i.event_id for i in inputs}
|
| -
|
| - def InputIdPredicate(e, ids):
|
| - return TraceEventStatsInput.GetEventId(e.category, e.name) in ids
|
| -
|
| - self._AddResultsInternal(
|
| - p.IterAllEvents(
|
| - recursive=True,
|
| - event_type_predicate=lambda t: True,
|
| - event_predicate=
|
| - lambda e, ids=input_ids: InputIdPredicate(e, ids)),
|
| - interactions,
|
| - results,
|
| - inputs)
|
| -
|
| - # We assume events have been filtered already. 'events' is an iterator.
|
| - def _AddResultsInternal(self, events, interactions, results, inputs):
|
| - times_by_event_id = collections.defaultdict(list)
|
| -
|
| - for event in events:
|
| - if not any(interaction.start <= event.start <= interaction.end
|
| - for interaction in interactions):
|
| - continue
|
| - event_id = TraceEventStatsInput.GetEventId(event.category, event.name)
|
| - times_by_event_id[event_id].append(self.ThreadDurationIfPresent(event))
|
| -
|
| - if not times_by_event_id:
|
| - return
|
| -
|
| - inputs_by_event_id = dict([[input_obj.event_id, input_obj]
|
| - for input_obj in inputs])
|
| -
|
| - for (event_name, times) in times_by_event_id.iteritems():
|
| - input_for_event = inputs_by_event_id[event_name]
|
| - name = input_for_event.metric_name
|
| - results.AddValue(scalar.ScalarValue(
|
| - page=results.current_page,
|
| - tir_label=interactions[0].label,
|
| - name=name + '-count',
|
| - units='count',
|
| - value=len(times),
|
| - description='The number of times ' + name + ' was recorded.'))
|
| - if len(times) == 0:
|
| - continue
|
| - results.AddValue(list_of_scalar_values.ListOfScalarValues(
|
| - page=results.current_page,
|
| - tir_label=interactions[0].label,
|
| - name=name,
|
| - units=input_for_event.units,
|
| - values=times,
|
| - description=input_for_event.metric_description))
|
|
|