From 801c90d66fad095ea05aba1b4eaa3aba6ab5d3b3 Mon Sep 17 00:00:00 2001 From: Brian Brazil Date: Sun, 22 Feb 2015 18:24:18 +0000 Subject: [PATCH] Disallow 'quantile' as a label to Summary. --- prometheus_client/__init__.py | 5 +++++ tests/test_client.py | 1 + 2 files changed, 6 insertions(+) diff --git a/prometheus_client/__init__.py b/prometheus_client/__init__.py index 8a87285d..aa446160 100644 --- a/prometheus_client/__init__.py +++ b/prometheus_client/__init__.py @@ -136,6 +136,8 @@ def init(name, documentation, labelnames=(), namespace='', subsystem='', registr raise ValueError('Invalid label metric name: ' + l) if _RESERVED_METRIC_LABEL_NAME_RE.match(l): raise ValueError('Reserved label metric name: ' + l) + if l in cls._reserved_labelnames: + raise ValueError('Reserved label metric name: ' + l) collector = _LabelWrapper(cls, labelnames) else: collector = cls() @@ -165,6 +167,7 @@ def collect(): @_MetricWrapper class Counter(object): _type = 'counter' + _reserved_labelnames = [] def __init__(self): self._value = 0.0 self._lock = Lock() @@ -205,6 +208,7 @@ def _samples(self): @_MetricWrapper class Gauge(object): _type = 'gauge' + _reserved_labelnames = [] def __init__(self): self._value = 0.0 self._lock = Lock() @@ -257,6 +261,7 @@ def _samples(self): @_MetricWrapper class Summary(object): _type = 'summary' + _reserved_labelnames = ['quantile'] def __init__(self): self._count = 0.0 self._sum = 0.0 diff --git a/tests/test_client.py b/tests/test_client.py index 9bf82edb..837258af 100644 --- a/tests/test_client.py +++ b/tests/test_client.py @@ -143,6 +143,7 @@ def test_invalid_names_raise(self): self.assertRaises(ValueError, Counter, '', 'help', subsystem='(') self.assertRaises(ValueError, Counter, 'c', '', labelnames=['^']) self.assertRaises(ValueError, Counter, 'c', '', labelnames=['__reserved']) + self.assertRaises(ValueError, Summary, 'c', '', labelnames=['quantile']) class TestGenerateText(unittest.TestCase): def setUp(self):