Chromium Code Reviews| Index: tools/telemetry/telemetry/core/timeline/counter.py |
| diff --git a/tools/telemetry/telemetry/core/timeline/tracing/counter.py b/tools/telemetry/telemetry/core/timeline/counter.py |
| similarity index 50% |
| rename from tools/telemetry/telemetry/core/timeline/tracing/counter.py |
| rename to tools/telemetry/telemetry/core/timeline/counter.py |
| index 33f5e86b1b99414a3bc162ddc83ed8ca1b9e077f..4243a28ba8d68f7691206515333b8a21ab1fec0f 100644 |
| --- a/tools/telemetry/telemetry/core/timeline/tracing/counter.py |
| +++ b/tools/telemetry/telemetry/core/timeline/counter.py |
| @@ -2,32 +2,57 @@ |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| -class Counter(object): |
| - ''' Stores all the samples for a given counter. |
| - ''' |
| +import telemetry.core.timeline.event_container as event_container |
| + |
| +# Doesnt' inherit from TimelineEvent because its only a temporary wrapper of a |
|
Tim Song
2013/07/18 22:56:36
typo here for Doesn't
|
| +# counter sample into an event. During stable operation, the samples are stored |
| +# a dense array of values rather than in the long-form done by an Event. |
| +class CounterSample(object): |
| + def __init__(self, counter, sample_index): |
| + self._counter = counter |
| + self._sample_index = sample_index |
| + |
| + @property |
| + def name(self): |
| + return None |
| + |
| + @property |
| + def start(self): |
| + return self._counter.timestamps[self._sample_index] |
| + |
| + @start.setter |
| + def start(self, start): |
| + self._counter.timestamps[self._sample_index] = start |
| + |
| + @property |
| + def duration(self): |
| + return 0 |
| + |
| + @property |
| + def end(self): |
| + return self.start |
| + |
| + |
| +class Counter(event_container.TimelineEventContainer): |
| + """ Stores all the samples for a given counter. |
| + """ |
| def __init__(self, parent, category, name): |
| - self.parent = parent |
| - self.full_name = category + '.' + name |
| + super(Counter, self).__init__(name, parent) |
| self.category = category |
| - self.name = name |
| + self.full_name = category + '.' + name |
| self.samples = [] |
| self.timestamps = [] |
| self.series_names = [] |
| self.totals = [] |
| self.max_total = 0 |
| - self._bounds = None |
| - @property |
| - def min_timestamp(self): |
| - if not self._bounds: |
| - self.UpdateBounds() |
| - return self._bounds[0] |
| + def IterChildContainers(self): |
| + return |
| + yield # pylint: disable=W0101 |
| - @property |
| - def max_timestamp(self): |
| - if not self._bounds: |
| - self.UpdateBounds() |
| - return self._bounds[1] |
| + def IterEventsInThisContainer(self): |
| + for i in range(len(self.timestamps)): |
| + yield CounterSample(self, i) |
| @property |
| def num_series(self): |
| @@ -37,7 +62,7 @@ class Counter(object): |
| def num_samples(self): |
| return len(self.timestamps) |
| - def UpdateBounds(self): |
| + def FinalizeImport(self): |
| if self.num_series * self.num_samples != len(self.samples): |
| raise ValueError( |
| 'Length of samples must be a multiple of length of timestamps.') |
| @@ -47,8 +72,6 @@ class Counter(object): |
| if not len(self.samples): |
| return |
| - self._bounds = (self.timestamps[0], self.timestamps[-1]) |
| - |
| max_total = None |
| for i in xrange(self.num_samples): |
| total = 0 |
| @@ -58,4 +81,3 @@ class Counter(object): |
| if max_total is None or total > max_total: |
| max_total = total |
| self.max_total = max_total |
| - |