10000 Extend parser tests · prometheus/client_python@8be2424 · GitHub
[go: up one dir, main page]

Skip to content

Commit 8be2424

Browse files
committed
Extend parser tests
Signed-off-by: immerrr <immerrr@gmail.com>
1 parent 0374576 commit 8be2424

File tree

1 file changed

+62
-1
lines changed

1 file changed

+62
-1
lines changed

tests/test_parser.py

Lines changed: 62 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,14 +167,32 @@ def test_commas(self):
167167
families = text_string_to_metric_families("""# TYPE a counter
168168
# HELP a help
169169
a{foo="bar",} 1
170+
a{foo="baz", } 1
170171
# TYPE b counter
171172
# HELP b help
172173
b{,} 2
174+
# TYPE c counter
175+
# HELP c help
176+
c{ ,} 3
177+
# TYPE d counter
178+
# HELP d help
179+
d{, } 4
173180
""")
174181
a = CounterMetricFamily("a", "help", labels=["foo"])
175182
a.add_metric(["bar"], 1)
183+
a.add_metric(["baz"], 1)
176184
b = CounterMetricFamily("b", "help", value=2)
177-
self.assertEqual([a, b], list(families))
185+
c = CounterMetricFamily("c", "help", value=3)
186+
d = CounterMetricFamily("d", "help", value=4)
187+
self.assertEqual([a, b, c, d], list(families))
188+
189+
def test_multiple_trailing_commas(self):
190+
text = """# TYPE a counter
191+
# HELP a help
192+
a{foo="bar",, } 1
193+
"""
194+
self.assertRaises(ValueError,
195+
lambda: list(text_string_to_metric_families(text)))
178196

179197
def test_empty_brackets(self):
180198
families = text_string_to_metric_families("""# TYPE a counter
@@ -200,6 +218,49 @@ def test_empty_label(self):
200218
metric_family.add_metric([""], 2)
201219
self.assertEqual([metric_family], list(families))
202220

221+
def test_label_escaping(self):
222+
for escaped_val, etalon_val in [
223+
('foo', 'foo'),
224+
('\\foo', '\\foo'),
225+
('\\\\foo', '\\foo'),
226+
('foo\\\\', 'foo\\'),
227+
('\\n', '\n'),
228+
('\\\\n', '\\n'),
229+
('\\\\\\n', '\\\n'),
230+
('\\"', '"'),
231+
('\\\\\\"', '\\"')]:
232+
families = list(text_string_to_metric_families("""
233+
# TYPE a counter
234+
# HELP a help
235+
a{foo="%s",bar="baz"} 1
236+
""" % escaped_val))
237+
metric_family = CounterMetricFamily(
238+
"a", "help", labels=["foo", "bar"])
239+
metric_family.add_metric([etalon_val, "baz"], 1)
240+
self.assertEqual([metric_family], list(families))
241+
242+
def test_help_escaping(self):
243+
for escaped_val, etalon_val in [
244+
('foo', 'foo'),
245+
('\\foo', '\\foo'),
246+
('\\\\foo', '\\foo'),
247+
('foo\\', 'foo\\'),
248+
('foo\\\\', 'foo\\'),
249+
('\\n', '\n'),
250+
('\\\\n', '\\n'),
251+
('\\\\\\n', '\\\n'),
252+
('\\"', '\\"'),
253+
('\\\\"', '\\"'),
254+
('\\\\\\"', '\\\\"')]:
255+
families = list(text_string_to_metric_families("""
256+
# TYPE a counter
257+
# HELP a %s
258+
a{foo="bar"} 1
259+
""" % escaped_val))
260+
metric_family = CounterMetricFamily("a", etalon_val, labels=["foo"])
261+
metric_family.add_metric(["bar"], 1)
262+
self.assertEqual([metric_family], list(families))
263+
203264
def test_escaping(self):
204265
families = text_string_to_metric_families("""# TYPE a counter
205266
# HELP a he\\n\\\\l\\tp

0 commit comments

Comments
 (0)
0