Skip to content
Snippets Groups Projects
Commit 48b7ff7a authored by Maarten de Vries's avatar Maarten de Vries
Browse files

Fix test_metrics.py compatibility prometheus_client 0.5


prometheus_client 0.5 has a named-tuple Sample type with more member
than the old plain tuple had. This commit makes sure the unit test
detects this and changes the way it reads the sample.

Signed-off-by: default avatarMaarten de Vries <maarten@de-vri.es>
parent c8d32cab
No related branches found
No related tags found
No related merge requests found
Fix test_metric.py compatibility with prometheus_client 0.5. Contributed by Maarten de Vries <maarten@de-vri.es>.
...@@ -19,6 +19,28 @@ from synapse.metrics import InFlightGauge ...@@ -19,6 +19,28 @@ from synapse.metrics import InFlightGauge
from tests import unittest from tests import unittest
def get_sample_labels_value(sample):
""" Extract the labels and values of a sample.
prometheus_client 0.5 changed the sample type to a named tuple with more
members than the plain tuple had in 0.4 and earlier. This function can
extract the labels and value from the sample for both sample types.
Args:
sample: The sample to get the labels and value from.
Returns:
A tuple of (labels, value) from the sample.
"""
# If the sample has a labels and value attribute, use those.
if hasattr(sample, "labels") and hasattr(sample, "value"):
return sample.labels, sample.value
# Otherwise fall back to treating it as a plain 3 tuple.
else:
_, labels, value = sample
return labels, value
class TestMauLimit(unittest.TestCase): class TestMauLimit(unittest.TestCase):
def test_basic(self): def test_basic(self):
gauge = InFlightGauge( gauge = InFlightGauge(
...@@ -75,7 +97,7 @@ class TestMauLimit(unittest.TestCase): ...@@ -75,7 +97,7 @@ class TestMauLimit(unittest.TestCase):
for r in gauge.collect(): for r in gauge.collect():
results[r.name] = { results[r.name] = {
tuple(labels[x] for x in gauge.labels): value tuple(labels[x] for x in gauge.labels): value
for _, labels, value in r.samples for labels, value in map(get_sample_labels_value, r.samples)
} }
return results return results
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment