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: Maarten de Vries <maarten@de-vri.es>
This commit is contained in:
parent
c8d32caba3
commit
48b7ff7a35
|
@ -0,0 +1 @@
|
||||||
|
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
|
||||||
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):
|
||||||
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
|
||||||
|
|
Loading…
Reference in New Issue