summaryrefslogtreecommitdiffstats
path: root/toolkit/components/telemetry/gen-histogram-bucket-ranges.py
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/telemetry/gen-histogram-bucket-ranges.py')
-rw-r--r--toolkit/components/telemetry/gen-histogram-bucket-ranges.py52
1 files changed, 52 insertions, 0 deletions
diff --git a/toolkit/components/telemetry/gen-histogram-bucket-ranges.py b/toolkit/components/telemetry/gen-histogram-bucket-ranges.py
new file mode 100644
index 000000000..286bc0e7b
--- /dev/null
+++ b/toolkit/components/telemetry/gen-histogram-bucket-ranges.py
@@ -0,0 +1,52 @@
+#!/usr/bin/env python
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+# Write out detailed histogram information, including the ranges of the
+# buckets specified by each histogram.
+
+import sys
+import re
+import histogram_tools
+import json
+
+from collections import OrderedDict
+
+def main(argv):
+ filenames = argv
+
+ all_histograms = OrderedDict()
+
+ for histogram in histogram_tools.from_files(filenames):
+ name = histogram.name()
+ parameters = OrderedDict()
+ table = {
+ 'boolean': '2',
+ 'flag': '3',
+ 'enumerated': '1',
+ 'linear': '1',
+ 'exponential': '0',
+ 'count': '4',
+ }
+ # Use __setitem__ because Python lambdas are so limited.
+ histogram_tools.table_dispatch(histogram.kind(), table,
+ lambda k: parameters.__setitem__('kind', k))
+ if histogram.low() == 0:
+ parameters['min'] = 1
+ else:
+ parameters['min'] = histogram.low()
+
+ try:
+ buckets = histogram.ranges()
+ parameters['buckets'] = buckets
+ parameters['max'] = buckets[-1]
+ parameters['bucket_count'] = len(buckets)
+ except histogram_tools.DefinitionException:
+ continue
+
+ all_histograms.update({ name: parameters });
+
+ print json.dumps({ 'histograms': all_histograms})
+
+main(sys.argv[1:])