Skip to content

Commit 0658b89

Browse files
authored
Merge pull request #3 from desultory/dev
Add more tests
2 parents 038ebe0 + 6b42201 commit 0658b89

File tree

1 file changed

+48
-1
lines changed

1 file changed

+48
-1
lines changed

tests/test_exporter.py

Lines changed: 48 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,53 @@ def test_random_metrics(self):
3636
for metric in random_metrics:
3737
self.assertIn(f"{metric} 0", export1)
3838

39+
def test_global_labels(self):
40+
"""Ensures that lables which are defined globally are applied to all metrics"""
41+
e = Exporter(labels={"global_label": "global_value"}, no_config_file=True)
42+
random_metrics = generate_random_metric_config(10)
43+
e.config["metrics"] = random_metrics
44+
export = run(e.export())
45+
for metric in random_metrics:
46+
self.assertIn(f'{metric}{{global_label="global_value"}} 0', export)
47+
48+
def test_global_labels_override(self):
49+
"""Ensures that global labels defined in a metric's config override the global labels"""
50+
e = Exporter(labels={"global_label": "global_value"}, no_config_file=True)
51+
random_metrics = generate_random_metric_config(10)
52+
e.config["metrics"] = {
53+
**random_metrics,
54+
"test_metric": {"type": "counter", "help": "test", "labels": {"global_label": "local_value"}},
55+
}
56+
export = run(e.export())
57+
self.assertIn('test_metric{global_label="local_value"} 0', export)
58+
for metric in random_metrics:
59+
self.assertIn(f'{metric}{{global_label="global_value"}} 0', export)
60+
61+
62+
def test_append_metrics(self):
63+
"""Ensures metrics can be appended after init"""
64+
e = Exporter(no_config_file=True)
65+
random_metrics_a = generate_random_metric_config(10)
66+
random_metrics_b = generate_random_metric_config(10)
67+
all_metrics = {**random_metrics_a, **random_metrics_b}
68+
e.config["metrics"] = random_metrics_a
69+
export1 = run(e.export())
70+
e.config["metrics"].update(random_metrics_b)
71+
export2 = run(e.export())
72+
self.assertNotEqual(export1, export2)
73+
for metric in all_metrics:
74+
self.assertIn(f"{metric} 0", export2)
75+
76+
def test_metric_filter(self):
77+
"""Ensure metrics can be filtered by label"""
78+
e = Exporter(config_file="tests/test_config.toml")
79+
label_filter = {"label1": "value1"}
80+
export = run(e.export(label_filter=label_filter))
81+
self.assertEqual(
82+
export,
83+
'# TYPE test_metric_with_labels untyped\ntest_metric_with_labels{label1="value1",label2="value2"} 300\n',
84+
)
85+
3986

4087
@loggify
4188
class TestExporterAsync(AioHTTPTestCase):
@@ -55,7 +102,7 @@ async def test_exporter(self):
55102
self.assertEqual(text, expected_response)
56103

57104
async def test_filter(self):
58-
"""Test the exporter server by sending a request to the /metrics endpoint"""
105+
"""Test the exporter webserver filter by sending a request with args to the /metrics endpoint"""
59106
expected_response = await self.exporter.export(label_filter={"label1": "value1"})
60107
async with self.client.get("/metrics?label1=value1") as response:
61108
self.assertEqual(response.status, 200)

0 commit comments

Comments
 (0)