Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions prometheus_client/validation.py
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ def _validate_labelnames(cls, labelnames):
for l in labelnames:
_validate_labelname(l)
if l in cls._reserved_labelnames:
raise ValueError('Reserved label methe fric name: ' + l)
raise ValueError('Reserved label metric name: ' + l)
# Duplicate names collapse distinct label sets during collection.
duplicates = sorted(name for name, count in Counter(labelnames).items() if count > 1)
if duplicates:
Expand All @@ -126,4 +126,4 @@ def _validate_exemplar(exemplar):
runes += len(k)
runes += len(v)
if runes > 128:
raise ValueError('Exemplar labels have %d UTF-8 characters, exceeding the limit of 128')
raise ValueError(f'Exemplar labels have {runes} UTF-8 characters, exceeding the limit of 128')
32 changes: 18 additions & 14 deletions tests/test_core.py
Original file line number Diff line number Diff line change
Expand Up @@ -133,12 +133,13 @@ def test_exemplar_unicode(self):

def test_exemplar_too_long(self):
# 129 characters should fail.
self.assertRaises(ValueError, self.counter.inc, exemplar={
'abcdefghijklmnopqrstuvwxyz': '26+16 characters',
'x1234567': '8+15 characters',
'zyxwvutsrqponmlkjihgfedcba': '26+16 characters',
'y123456': '7+15 characters',
})
with self.assertRaisesRegex(ValueError, 'Exemplar labels have 129 UTF-8 characters'):
self.counter.inc(exemplar={
'abcdefghijklmnopqrstuvwxyz': '26+16 characters',
'x1234567': '8+15 characters',
'zyxwvutsrqponmlkjihgfedcba': '26+16 characters',
'y123456': '7+15 characters',
})


class TestDisableCreated(unittest.TestCase):
Expand Down Expand Up @@ -461,7 +462,8 @@ def test_setting_buckets(self):
self.assertRaises(ValueError, Histogram, 'h', 'help', registry=None, buckets=[3, 1])

def test_labels(self):
self.assertRaises(ValueError, Histogram, 'h', 'help', registry=None, labelnames=['le'])
with self.assertRaisesRegex(ValueError, 'Reserved label metric name: le'):
Histogram('h', 'help', registry=None, labelnames=['le'])

self.labels.labels('a').observe(2)
self.assertEqual(0, self.registry.get_sample_value('hl_bucket', {'le': '1.0', 'l': 'a'}))
Expand Down Expand Up @@ -534,12 +536,13 @@ def test_exemplar_invalid_label_name(self):

def test_exemplar_too_long(self):
# 129 characters in total should fail.
self.assertRaises(ValueError, self.histogram.observe, 1.0, exemplar={
'abcdefghijklmnopqrstuvwxyz': '26+16 characters',
'x1234567': '8+15 characters',
'zyxwvutsrqponmlkjihgfedcba': '26+16 characters',
'y123456': '7+15 characters',
})
with self.assertRaisesRegex(ValueError, 'Exemplar labels have 129 UTF-8 characters'):
self.histogram.observe(1.0, exemplar={
'abcdefghijklmnopqrstuvwxyz': '26+16 characters',
'x1234567': '8+15 characters',
'zyxwvutsrqponmlkjihgfedcba': '26+16 characters',
'y123456': '7+15 characters',
})


class TestInfo(unittest.TestCase):
Expand Down Expand Up @@ -787,7 +790,8 @@ def test_invalid_names_raise(self):
self.assertRaises(ValueError, Counter, '', 'help', namespace='&')
self.assertRaises(ValueError, Counter, '', 'help', subsystem='(')
self.assertRaises(ValueError, Counter, 'c_total', '', labelnames=['__reserved'])
self.assertRaises(ValueError, Summary, 'c_total', '', labelnames=['quantile'])
with self.assertRaisesRegex(ValueError, 'Reserved label metric name: quantile'):
Summary('c_total', '', labelnames=['quantile'])

def test_duplicate_labelnames_raise_before_registration(self):
# Repeated names would collapse distinct label sets on export.
Expand Down