@@ -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\n test_metric_with_labels{label1="value1",label2="value2"} 300\n ' ,
84+ )
85+
3986
4087@loggify
4188class 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