summaryrefslogtreecommitdiffstats
path: root/monitoring/ceph-mixin/tests_alerts/test_syntax.py
blob: 966d768bdcd07dff6e414e57a9fa9db3828f1f00 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import pytest
import os
import yaml
from .utils import promtool_available, call
from .settings import ALERTS_FILE, UNIT_TESTS_FILE


def load_yaml(file_name):
    yaml_data = None
    with open(file_name, 'r') as alert_file:
        raw = alert_file.read()
        try:
            yaml_data = yaml.safe_load(raw)
        except yaml.YAMLError as e:
            pass

    return yaml_data


def test_alerts_present():
    assert os.path.exists(ALERTS_FILE), f"{ALERTS_FILE} not found"


def test_unittests_present():
    assert os.path.exists(UNIT_TESTS_FILE), f"{UNIT_TESTS_FILE} not found"


@pytest.mark.skipif(not os.path.exists(ALERTS_FILE), reason=f"{ALERTS_FILE} missing")
def test_rules_format():
    assert load_yaml(ALERTS_FILE)


@pytest.mark.skipif(not os.path.exists(UNIT_TESTS_FILE), reason=f"{UNIT_TESTS_FILE} missing")
def test_unittests_format():
    assert load_yaml(UNIT_TESTS_FILE)


@pytest.mark.skipif(not promtool_available(), reason="promtool is not installed. Unable to check syntax")
def test_rule_syntax():
    completion = call(f"promtool check rules {ALERTS_FILE}")
    assert completion.returncode == 0
    assert b"SUCCESS" in completion.stdout