summaryrefslogtreecommitdiffstats
path: root/src/lib/Bcfg2/Statistics.py
diff options
context:
space:
mode:
authorChris St. Pierre <chris.a.st.pierre@gmail.com>2013-02-05 14:04:09 -0500
committerChris St. Pierre <chris.a.st.pierre@gmail.com>2013-02-05 14:04:09 -0500
commit25cb6db5ccb0c8e8302c220a90344a95baf3909b (patch)
tree80d6a81f2dcd164f0b127bdfe75a4b2d833c6be6 /src/lib/Bcfg2/Statistics.py
parent5d237f71575a109c10d5aad8d70dc5dda00a2d96 (diff)
downloadbcfg2-25cb6db5ccb0c8e8302c220a90344a95baf3909b.tar.gz
bcfg2-25cb6db5ccb0c8e8302c220a90344a95baf3909b.tar.bz2
bcfg2-25cb6db5ccb0c8e8302c220a90344a95baf3909b.zip
moved some libraries in Bcfg2/ into more specific (Server/ or Client/) places
Diffstat (limited to 'src/lib/Bcfg2/Statistics.py')
-rw-r--r--src/lib/Bcfg2/Statistics.py82
1 files changed, 0 insertions, 82 deletions
diff --git a/src/lib/Bcfg2/Statistics.py b/src/lib/Bcfg2/Statistics.py
deleted file mode 100644
index a869b03cd..000000000
--- a/src/lib/Bcfg2/Statistics.py
+++ /dev/null
@@ -1,82 +0,0 @@
-""" Module for tracking execution time statistics from the Bcfg2
-server core. This data is exposed by
-:func:`Bcfg2.Server.Core.BaseCore.get_statistics`."""
-
-
-class Statistic(object):
- """ A single named statistic, tracking minimum, maximum, and
- average execution time, and number of invocations. """
-
- def __init__(self, name, initial_value):
- """
- :param name: The name of this statistic
- :type name: string
- :param initial_value: The initial value to be added to this
- statistic
- :type initial_value: int or float
- """
- self.name = name
- self.min = float(initial_value)
- self.max = float(initial_value)
- self.ave = float(initial_value)
- self.count = 1
-
- def add_value(self, value):
- """ Add a value to the statistic, recalculating the various
- metrics.
-
- :param value: The value to add to this statistic
- :type value: int or float
- """
- self.min = min(self.min, value)
- self.max = max(self.max, value)
- self.ave = (((self.ave * (self.count - 1)) + value) / self.count)
- self.count += 1
-
- def get_value(self):
- """ Get a tuple of all the stats tracked on this named item.
- The tuple is in the format::
-
- (<name>, (min, max, average, number of values))
-
- This makes it very easy to cast to a dict in
- :func:`Statistics.display`.
-
- :returns: tuple
- """
- return (self.name, (self.min, self.max, self.ave, self.count))
-
-
-class Statistics(object):
- """ A collection of named :class:`Statistic` objects. """
-
- def __init__(self):
- self.data = dict()
-
- def add_value(self, name, value):
- """ Add a value to the named :class:`Statistic`. This just
- proxies to :func:`Statistic.add_value` or the
- :class:`Statistic` constructor as appropriate.
-
- :param name: The name of the :class:`Statistic` to add the
- value to
- :type name: string
- :param value: The value to add to the Statistic
- :type value: int or float
- """
- if name not in self.data:
- self.data[name] = Statistic(name, value)
- else:
- self.data[name].add_value(value)
-
- def display(self):
- """ Return a dict of all :class:`Statistic` object values.
- Keys are the statistic names, and values are tuples of the
- statistic metrics as returned by
- :func:`Statistic.get_value`. """
- return dict([value.get_value() for value in list(self.data.values())])
-
-
-#: A module-level :class:`Statistics` objects used to track all
-#: execution time metrics for the server.
-stats = Statistics() # pylint: disable=C0103