]>
git.ipfire.org Git - thirdparty/pdns.git/blob - regression-tests.ixfrdist/test_Stats.py
1 from ixfrdisttests
import IXFRDistTest
7 class IXFRDistStatsTest(IXFRDistTest
):
9 This test makes sure we have statistics in ixfrdist
12 webserver_address
= '127.0.0.1:8080'
14 _config_params
= ['_ixfrDistPort', 'webserver_address']
16 _config_template
= """
24 work-dir: 'ixfrdist.dir'
29 _config_domains
= {'example': '127.0.0.1:' + str(xfrServerPort
)}
31 metric_prog_stats
= ["ixfrdist_uptime_seconds", "ixfrdist_domains"]
32 metric_domain_stats
= ["ixfrdist_soa_serial", "ixfrdist_soa_checks",
33 "ixfrdist_soa_checks_failed",
34 "ixfrdist_soa_inqueries",
35 "ixfrdist_axfr_inqueries", "ixfrdist_axfr_failures",
36 "ixfrdist_ixfr_inqueries", "ixfrdist_ixfr_failures"]
45 def tearDownClass(cls
):
46 cls
.tearDownIXFRDist()
48 def test_program_stats_exist(self
):
49 res
= requests
.get('http://{}/metrics'.format(self
.webserver_address
))
50 self
.assertEqual(res
.status_code
, 200)
51 for line
in res
.text
.splitlines():
56 self
.assertIn(line
.split(" ")[0],
57 self
.metric_prog_stats
+ self
.metric_domain_stats
)
59 def test_registered(self
):
60 res
= requests
.get('http://{}/metrics'.format(self
.webserver_address
))
61 self
.assertEqual(res
.status_code
, 200)
62 for line
in res
.text
.splitlines():
63 if line
.startswith('ixfrdist_domains'):
64 self
.assertEqual(line
, 'ixfrdist_domains 1')
70 self
.assertIn('{domain=example}', line
)
71 self
.assertIn(line
.split("{")[0], self
.metric_domain_stats
)
73 def test_metrics_have_help(self
):
74 res
= requests
.get('http://{}/metrics'.format(self
.webserver_address
))
75 self
.assertEqual(res
.status_code
, 200)
76 for s
in self
.metric_prog_stats
+ self
.metric_domain_stats
:
77 self
.assertIn('# HELP {}'.format(s
), res
.text
)
79 def test_metrics_have_type(self
):
80 res
= requests
.get('http://{}/metrics'.format(self
.webserver_address
))
81 self
.assertEqual(res
.status_code
, 200)
82 for s
in self
.metric_prog_stats
+ self
.metric_domain_stats
:
83 self
.assertIn('# TYPE {}'.format(s
), res
.text
)
85 def test_missing_metrics(self
):
88 res
= requests
.get('http://{}/metrics'.format(self
.webserver_address
))
89 self
.assertEqual(res
.status_code
, 200)
91 for line
in res
.text
.splitlines():
93 all_metrics
.add(line
.split(" ")[2])
96 all_metrics
.add(line
.split("{")[0])
98 all_metrics
.add(line
.split(" ")[0])
100 should_have_metrics
= set(self
.metric_prog_stats
+
101 self
.metric_domain_stats
)
103 unknown_metrics
= all_metrics
- should_have_metrics
105 self
.assertSetEqual(unknown_metrics
, set())