1a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)# Copyright 2013 The Chromium Authors. All rights reserved. 2a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)# Use of this source code is governed by a BSD-style license that can be 3a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)# found in the LICENSE file. 4a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 5a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)class Metric(object): 6a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) """Base class for all the metrics that are used by telemetry measurements. 7a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 8a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) The Metric class represents a way of measuring something. Metrics are 9a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) helper classes used by PageMeasurements. Each PageMeasurement may use 10a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) multiple metrics; each metric should be focussed on collecting data 11a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) about one thing. 12a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) """ 13a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 14a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) def Start(self, page, tab): 15a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) """Start collecting data for this metric.""" 16a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) raise NotImplementedError() 17a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 18a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) def Stop(self, page, tab): 19a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) """Stop collecting data for this metric (if applicable).""" 20a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) raise NotImplementedError() 21a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 22a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) def AddResults(self, tab, results): 23a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) """Add the data collected into the results object for a measurement. 24a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 25a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) Metrics may implement AddResults to provide a common way to add results 26a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) to the PageMeasurementResults in PageMeasurement.AddMeasurement -- 27a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) results should be added with results.Add(trace_name, unit, value). 28a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) """ 29a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) raise NotImplementedError() 30a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 31