summaryrefslogtreecommitdiffstats
path: root/roles/openshift_health_checker/test/zz_failure_summary_test.py
blob: 69f27653ca90f40ef7dba4b1de165fbf61c13563 (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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
from zz_failure_summary import deduplicate_failures

import pytest


@pytest.mark.parametrize('failures,deduplicated', [
    (
        [
            {
                'host': 'master1',
                'msg': 'One or more checks failed',
            },
        ],
        [
            {
                'host': ('master1',),
                'msg': 'One or more checks failed',
            },
        ],
    ),
    (
        [
            {
                'host': 'master1',
                'msg': 'One or more checks failed',
            },
            {
                'host': 'node1',
                'msg': 'One or more checks failed',
            },
        ],
        [
            {
                'host': ('master1', 'node1'),
                'msg': 'One or more checks failed',
            },
        ],
    ),
    (
        [
            {
                'host': 'node1',
                'msg': 'One or more checks failed',
                'checks': (('test_check', 'error message'),),
            },
            {
                'host': 'master2',
                'msg': 'Some error happened',
            },
            {
                'host': 'master1',
                'msg': 'One or more checks failed',
                'checks': (('test_check', 'error message'),),
            },
        ],
        [
            {
                'host': ('master1', 'node1'),
                'msg': 'One or more checks failed',
                'checks': (('test_check', 'error message'),),
            },
            {
                'host': ('master2',),
                'msg': 'Some error happened',
            },
        ],
    ),
    # if a failure contain an unhashable value, it will not be deduplicated
    (
        [
            {
                'host': 'master1',
                'msg': {'unhashable': 'value'},
            },
        ],
        [
            {
                'host': 'master1',
                'msg': {'unhashable': 'value'},
            },
        ],
    ),
])
def test_deduplicate_failures(failures, deduplicated):
    assert deduplicate_failures(failures) == deduplicated