blob: 286bc0e7b2c80bc82e1224abc42e420d02c15136 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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:])
|