matrix-ops-bot/tests/test_alertmanager.py

75 lines
2 KiB
Python
Raw Permalink Normal View History

import json
2023-11-07 15:38:19 +01:00
from ops_bot.alertmanager import prometheus_alert_to_markdown
payload = json.loads(
"""
{
"receiver": "matrix",
"status": "firing",
"alerts": [
{
"status": "firing",
"labels": {
"alertname": "InstanceDown",
"environment": "monitoring.example.com",
"instance": "webserver.example.com",
"job": "node_exporter",
"severity": "critical"
},
"annotations": {
"description": "webserver.example.com of job node_exporter has been down for more than 5 minutes.",
"summary": "THIS IS A TEST Instance webserver.example.com down"
},
"startsAt": "2022-06-23T11:53:14.318Z",
"endsAt": "0001-01-01T00:00:00Z",
"generatorURL": "http://monitoring.example.com:9090",
"fingerprint": "9cd7837114d58797"
}
],
"groupLabels": {
"alertname": "InstanceDown"
},
"commonLabels": {
"alertname": "InstanceDown",
"environment": "monitoring.example.com",
"instance": "webserver.example.com",
"job": "node_exporter",
"severity": "critical"
},
"commonAnnotations": {
"description": "webserver.example.com of job node_exporter has been down for more than 5 minutes.",
"summary": "Instance webserver.example.com down"
},
"externalURL": "https://alert.example",
"version": "4",
"groupKey": "",
"truncatedAlerts": 0
}"""
)
def test_alertmanager():
r = prometheus_alert_to_markdown(payload)
assert len(r) == 1
plain, formatted = r[0]
print(formatted)
2024-07-18 16:20:35 +02:00
assert (
"FIRING" in plain
and "Instance" in plain
and "webserver.example.com" in plain
2024-07-18 16:20:35 +02:00
and "THIS IS A TEST" in plain
and "critical" in plain
)
assert (
"FIRING" in formatted
and "Instance" in formatted
and "webserver.example.com" in formatted
and "Instance webserver.example.com down" in formatted
and "critical" in formatted
and "https://alert.example/#/silences/new?filter={alertname%3D%22InstanceDown%22}"
in formatted
)