OLD | NEW |
1 # Copyright 2015 The Chromium Authors. All rights reserved. | 1 # Copyright 2015 The Chromium Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 | 4 |
5 """Classes representing individual metrics that can be sent.""" | 5 """Classes representing individual metrics that can be sent.""" |
6 | 6 |
7 | 7 |
8 import copy | 8 import copy |
9 import threading | 9 import threading |
10 import time | 10 import time |
11 | 11 |
12 from monacq.proto import metrics_pb2 | 12 try: |
13 | 13 from infra_libs.ts_mon import interface |
14 from infra_libs.ts_mon import distribution | 14 from infra_libs.ts_mon.common import distribution |
15 from infra_libs.ts_mon import errors | 15 from infra_libs.ts_mon.common import errors |
16 from infra_libs.ts_mon import interface | 16 from monacq.proto import metrics_pb2 |
| 17 except ImportError: # pragma: no cover |
| 18 import interface |
| 19 from common import distribution |
| 20 from common import errors |
| 21 from monacq.proto import metrics_pb2 |
17 | 22 |
18 | 23 |
19 MICROSECONDS_PER_SECOND = 1000000 | 24 MICROSECONDS_PER_SECOND = 1000000 |
20 | 25 |
21 | 26 |
22 class Metric(object): | 27 class Metric(object): |
23 """Abstract base class for a metric. | 28 """Abstract base class for a metric. |
24 | 29 |
25 A Metric is an attribute that may be monitored across many targets. Examples | 30 A Metric is an attribute that may be monitored across many targets. Examples |
26 include disk usage or the number of requests a server has received. A single | 31 include disk usage or the number of requests a server has received. A single |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
62 self._target = target | 67 self._target = target |
63 fields = fields or {} | 68 fields = fields or {} |
64 if len(fields) > 7: | 69 if len(fields) > 7: |
65 raise errors.MonitoringTooManyFieldsError(self._name, fields) | 70 raise errors.MonitoringTooManyFieldsError(self._name, fields) |
66 self._fields = fields | 71 self._fields = fields |
67 self._normalized_fields = self._normalize_fields(self._fields) | 72 self._normalized_fields = self._normalize_fields(self._fields) |
68 self._thread_lock = threading.Lock() | 73 self._thread_lock = threading.Lock() |
69 | 74 |
70 interface.register(self) | 75 interface.register(self) |
71 | 76 |
| 77 |
| 78 def __eq__(self, other): |
| 79 name = self._name == other._name |
| 80 target = self._target == other._target |
| 81 field = self._fields == other._fields |
| 82 instance_type = type(self) == type(other) |
| 83 return name and target and field and instance_type |
| 84 |
72 def unregister(self): | 85 def unregister(self): |
73 interface.unregister(self) | 86 interface.unregister(self) |
74 | 87 |
75 def serialize_to(self, collection_pb, default_target=None, loop_action=None): | 88 def serialize_to(self, collection_pb, default_target=None, loop_action=None): |
76 """Generate metrics_pb2.MetricsData messages for this metric. | 89 """Generate metrics_pb2.MetricsData messages for this metric. |
77 | 90 |
78 Args: | 91 Args: |
79 collection_pb (metrics_pb2.MetricsCollection): protocol buffer into which | 92 collection_pb (metrics_pb2.MetricsCollection): protocol buffer into which |
80 to add the current metric values. | 93 to add the current metric values. |
81 default_target (Target): a Target to use if self._target is not set. | 94 default_target (Target): a Target to use if self._target is not set. |
(...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
425 | 438 |
426 def __init__( | 439 def __init__( |
427 self, name, bucketer=None, target=None, fields=None, time_fn=time.time): | 440 self, name, bucketer=None, target=None, fields=None, time_fn=time.time): |
428 super(NonCumulativeDistributionMetric, self).__init__( | 441 super(NonCumulativeDistributionMetric, self).__init__( |
429 name, | 442 name, |
430 is_cumulative=False, | 443 is_cumulative=False, |
431 bucketer=bucketer, | 444 bucketer=bucketer, |
432 target=target, | 445 target=target, |
433 fields=fields, | 446 fields=fields, |
434 time_fn=time_fn) | 447 time_fn=time_fn) |
OLD | NEW |