Skip to content

Commit f8ae3b6

Browse files
committed
Make histograms with labels work
1 parent ce4fc71 commit f8ae3b6

File tree

3 files changed

+14
-3
lines changed

3 files changed

+14
-3
lines changed

prometheus_client/__init__.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,9 @@ def _samples(self):
126126
with self._lock:
127127
metrics = self._metrics.copy()
128128
for labels, metric in metrics.items():
129-
for suffix, _, value in metric._samples():
130-
yield (suffix, dict(zip(self._labelnames, labels)), value)
129+
series_labels = list(dict(zip(self._labelnames, labels)).items())
130+
for suffix, sample_labels, value in metric._samples():
131+
yield (suffix, dict(series_labels + list(sample_labels.items())), value)
131132

132133

133134
def _MetricWrapper(cls):

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ def read(fname):
1010

1111
setup(
1212
name = "prometheus_client",
13-
version = "0.0.6",
13+
version = "0.0.7",
1414
author = "Brian Brazil",
1515
author_email = "brian.brazil@gmail.com",
1616
description = ("Python client for the Prometheus monitoring system."),

tests/test_client.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,7 @@ class TestHistogram(unittest.TestCase):
108108
def setUp(self):
109109
self.registry = CollectorRegistry()
110110
self.histogram = Histogram('h', 'help', registry=self.registry)
111+
self.labels = Histogram('hl', 'help', ['l'], registry=self.registry)
111112

112113
def test_histogram(self):
113114
self.assertEqual(0, self.registry.get_sample_value('h_bucket', {'le': '1.0'}))
@@ -152,6 +153,15 @@ def test_setting_buckets(self):
152153
self.assertRaises(ValueError, Histogram, 'h', 'help', registry=None, buckets=[float("inf")])
153154
self.assertRaises(ValueError, Histogram, 'h', 'help', registry=None, buckets=[3, 1])
154155

156+
def test_labels(self):
157+
self.labels.labels('a').observe(2)
158+
self.assertEqual(0, self.registry.get_sample_value('hl_bucket', {'le': '1.0', 'l': 'a'}))
159+
self.assertEqual(1, self.registry.get_sample_value('hl_bucket', {'le': '2.5', 'l': 'a'}))
160+
self.assertEqual(1, self.registry.get_sample_value('hl_bucket', {'le': '5.0', 'l': 'a'}))
161+
self.assertEqual(1, self.registry.get_sample_value('hl_bucket', {'le': '+Inf', 'l': 'a'}))
162+
self.assertEqual(1, self.registry.get_sample_value('hl_count', {'l': 'a'}))
163+
self.assertEqual(2, self.registry.get_sample_value('hl_sum', {'l': 'a'}))
164+
155165
def test_function_decorator(self):
156166
self.assertEqual(0, self.registry.get_sample_value('h_count'))
157167
self.assertEqual(0, self.registry.get_sample_value('h_bucket', {'le': '+Inf'}))

0 commit comments

Comments
 (0)