-# Copyright (c) 2021 Cisco and/or its affiliates.
+# Copyright (c) 2022 Cisco and/or its affiliates.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at:
# See the License for the specific language governing permissions and
# limitations under the License.
-"""Metric library."""
+"""Metric library.
+
+Time measurements are done by time.time().
+Although time.time() is susceptible to big (or even negative) jumps
+when a system is badly synchronized, it is still better
+than time.monotonic(), as that value has no relation to epoch time.
+"""
from collections import namedtuple
from threading import Lock
-from time import monotonic
+from time import time
import re
"""
with self._lock:
self._value += amount
- self._timestamp = monotonic()
+ self._timestamp = time()
def set(self, value):
"""
"""
with self._lock:
self._value = value
- self._timestamp = monotonic()
+ self._timestamp = time()
def get(self):
"""
def samples(self):
"""
- Returns samples wheter an object is parent or child.
+ Returns samples whether an object is parent or child.
:returns: List of Metric objects with values.
:rtype: list
"""
Set info to the given value.
- :param amount: Value to set.
- :type amount: int or float
- :raises ValueError: If lables are overlapping.
+ :param value: Value to set.
+ :type value: int or float
+ :raises ValueError: If labels are overlapping.
"""
if self._labelname_set.intersection(value.keys()):
raise ValueError(
:rtype: tuple
"""
with self._lock:
- return ((u"_info", self._value, 1.0, monotonic()),)
+ return ((u"_info", self._value, 1.0, time()),)