|
39 | 39 | }
|
40 | 40 | },
|
41 | 41 | ],
|
42 |
| - True, |
| 42 | + False, |
43 | 43 | ),
|
44 | 44 | )
|
45 | 45 | operator_contains = (
|
46 | 46 | "pre.json",
|
47 | 47 | "operator",
|
48 | 48 | {"params": {"mode": "contains", "operator_data": "EVPN"}},
|
49 | 49 | "result[0].vrfs.default.peerList[*].[$peerAddress$,peerGroup]",
|
50 |
| - ([{"7.7.7.7": {"peerGroup": "EVPN-OVERLAY-SPINE"}}], False), |
| 50 | + ( |
| 51 | + [ |
| 52 | + {"10.1.0.0": {"peerGroup": "IPv4-UNDERLAY-SPINE"}}, |
| 53 | + {"10.2.0.0": {"peerGroup": "IPv4-UNDERLAY-SPINE"}}, |
| 54 | + {"10.64.207.255": {"peerGroup": "IPv4-UNDERLAY-MLAG-PEER"}}, |
| 55 | + ], |
| 56 | + False, |
| 57 | + ), |
51 | 58 | )
|
52 | 59 | operator_not_contains = (
|
53 | 60 | "pre.json",
|
|
56 | 63 | "result[0].vrfs.default.peerList[*].[$peerAddress$,peerGroup]",
|
57 | 64 | (
|
58 | 65 | [
|
59 |
| - {"10.1.0.0": {"peerGroup": "IPv4-UNDERLAY-SPINE"}}, |
60 |
| - {"10.2.0.0": {"peerGroup": "IPv4-UNDERLAY-SPINE"}}, |
61 |
| - {"10.64.207.255": {"peerGroup": "IPv4-UNDERLAY-MLAG-PEER"}}, |
| 66 | + {"7.7.7.7": {"peerGroup": "EVPN-OVERLAY-SPINE"}}, |
62 | 67 | ],
|
63 | 68 | False,
|
64 | 69 | ),
|
|
68 | 73 | "operator",
|
69 | 74 | {"params": {"mode": "is-gt", "operator_data": 20}},
|
70 | 75 | "result[0].vrfs.default.peerList[*].[$peerAddress$,prefixesSent]",
|
71 |
| - ( |
72 |
| - [ |
73 |
| - {"7.7.7.7": {"prefixesSent": 50}}, |
74 |
| - {"10.1.0.0": {"prefixesSent": 50}}, |
75 |
| - {"10.2.0.0": {"prefixesSent": 50}}, |
76 |
| - {"10.64.207.255": {"prefixesSent": 50}}, |
77 |
| - ], |
78 |
| - False, |
79 |
| - ), |
| 76 | + ([], True), |
80 | 77 | )
|
81 | 78 | operator_is_lt = (
|
82 | 79 | "pre.json",
|
83 | 80 | "operator",
|
84 | 81 | {"params": {"mode": "is-lt", "operator_data": 60}},
|
85 | 82 | "result[0].vrfs.default.peerList[*].[$peerAddress$,prefixesSent]",
|
86 |
| - ( |
87 |
| - [ |
88 |
| - {"7.7.7.7": {"prefixesSent": 50}}, |
89 |
| - {"10.1.0.0": {"prefixesSent": 50}}, |
90 |
| - {"10.2.0.0": {"prefixesSent": 50}}, |
91 |
| - {"10.64.207.255": {"prefixesSent": 50}}, |
92 |
| - ], |
93 |
| - False, |
94 |
| - ), |
| 83 | + ([], True), |
95 | 84 | )
|
96 | 85 | operator_is_in = (
|
97 | 86 | "pre.json",
|
98 | 87 | "operator",
|
99 | 88 | {"params": {"mode": "is-in", "operator_data": [20, 40, 50]}},
|
100 | 89 | "result[0].vrfs.default.peerList[*].[$peerAddress$,prefixesSent]",
|
101 |
| - ( |
102 |
| - [ |
103 |
| - {"7.7.7.7": {"prefixesSent": 50}}, |
104 |
| - {"10.1.0.0": {"prefixesSent": 50}}, |
105 |
| - {"10.2.0.0": {"prefixesSent": 50}}, |
106 |
| - {"10.64.207.255": {"prefixesSent": 50}}, |
107 |
| - ], |
108 |
| - False, |
109 |
| - ), |
| 90 | + ([], True), |
110 | 91 | )
|
111 | 92 | operator_not_in = (
|
112 | 93 | "pre.json",
|
113 | 94 | "operator",
|
114 |
| - {"params": {"mode": "not-in", "operator_data": [20, 40, 60]}}, |
| 95 | + {"params": {"mode": "not-in", "operator_data": [20, 40, 50]}}, |
115 | 96 | "result[0].vrfs.default.peerList[*].[$peerAddress$,prefixesSent]",
|
116 | 97 | (
|
117 | 98 | [
|
|
128 | 109 | "operator",
|
129 | 110 | {"params": {"mode": "in-range", "operator_data": (20, 60)}},
|
130 | 111 | "result[0].vrfs.default.peerList[*].[$peerAddress$,prefixesSent]",
|
131 |
| - ( |
132 |
| - [ |
133 |
| - {"7.7.7.7": {"prefixesSent": 50}}, |
134 |
| - {"10.1.0.0": {"prefixesSent": 50}}, |
135 |
| - {"10.2.0.0": {"prefixesSent": 50}}, |
136 |
| - {"10.64.207.255": {"prefixesSent": 50}}, |
137 |
| - ], |
138 |
| - False, |
139 |
| - ), |
| 112 | + ([], True), |
140 | 113 | )
|
141 | 114 | operator_not_in_range = (
|
142 | 115 | "pre.json",
|
143 | 116 | "operator",
|
144 |
| - {"params": {"mode": "not-in-range", "operator_data": (20, 40)}}, |
| 117 | + {"params": {"mode": "not-in-range", "operator_data": (20, 60)}}, |
145 | 118 | "result[0].vrfs.default.peerList[*].[$peerAddress$,prefixesSent]",
|
146 | 119 | (
|
147 | 120 | [
|
@@ -174,7 +147,63 @@ def test_operator(filename, check_type_str, evaluate_args, path, expected_result
|
174 | 147 | # There is not concept of "pre" and "post" in operator.
|
175 | 148 | data = load_json_file("api", filename)
|
176 | 149 | value = extract_data_from_json(data, path)
|
| 150 | + print(evaluate_args, value) |
177 | 151 | actual_results = check.evaluate(evaluate_args, value)
|
178 | 152 | assert actual_results == expected_result, ASSERT_FAIL_MESSAGE.format(
|
179 | 153 | output=actual_results, expected_output=expected_result
|
180 | 154 | )
|
| 155 | + |
| 156 | + |
| 157 | +@pytest.mark.parametrize( |
| 158 | + "value, operator_data, expected_result", |
| 159 | + [ |
| 160 | + ( |
| 161 | + [ |
| 162 | + {"7.7.7.7": {"peerGroup": "EVPN-OVERLAY-SPINE", "vrf": "default", "state": "Connected"}}, |
| 163 | + {"10.1.0.0": {"peerGroup": "EVPN-OVERLAY-SPINE", "vrf": "default", "state": "Connected"}}, |
| 164 | + ], |
| 165 | + True, |
| 166 | + ([], True), |
| 167 | + ), |
| 168 | + ( |
| 169 | + [ |
| 170 | + {"7.7.7.7": {"peerGroup": "EVPN-OVERLAY-SPINE", "vrf": "default", "state": "Connected"}}, |
| 171 | + {"10.1.0.0": {"peerGroup": "IPv4-UNDERLAY-SPINE", "vrf": "default", "state": "Connected"}}, |
| 172 | + ], |
| 173 | + True, |
| 174 | + ( |
| 175 | + [ |
| 176 | + {"7.7.7.7": {"peerGroup": "EVPN-OVERLAY-SPINE", "vrf": "default", "state": "Connected"}}, |
| 177 | + {"10.1.0.0": {"peerGroup": "IPv4-UNDERLAY-SPINE", "vrf": "default", "state": "Connected"}}, |
| 178 | + ], |
| 179 | + False, |
| 180 | + ), |
| 181 | + ), |
| 182 | + ( |
| 183 | + [ |
| 184 | + {"7.7.7.7": {"peerGroup": "EVPN-OVERLAY-SPINE", "vrf": "default", "state": "Connected"}}, |
| 185 | + {"10.1.0.0": {"peerGroup": "EVPN-OVERLAY-SPINE", "vrf": "default", "state": "Connected"}}, |
| 186 | + ], |
| 187 | + False, |
| 188 | + ( |
| 189 | + [ |
| 190 | + {"7.7.7.7": {"peerGroup": "EVPN-OVERLAY-SPINE", "vrf": "default", "state": "Connected"}}, |
| 191 | + {"10.1.0.0": {"peerGroup": "EVPN-OVERLAY-SPINE", "vrf": "default", "state": "Connected"}}, |
| 192 | + ], |
| 193 | + False, |
| 194 | + ), |
| 195 | + ), |
| 196 | + ( |
| 197 | + [ |
| 198 | + {"7.7.7.7": {"peerGroup": "EVPN-OVERLAY-SPINE", "vrf": "default", "state": "Connected"}}, |
| 199 | + {"10.1.0.0": {"peerGroup": "IPv4-UNDERLAY-SPINE", "vrf": "default", "state": "Connected"}}, |
| 200 | + ], |
| 201 | + False, |
| 202 | + ([], True), |
| 203 | + ), |
| 204 | + ], |
| 205 | +) |
| 206 | +def test_all_same(value, operator_data, expected_result): |
| 207 | + check_args = {"params": {"mode": "all-same", "operator_data": operator_data}} |
| 208 | + check = CheckType.create("operator") |
| 209 | + assert check.evaluate(check_args, value) == expected_result |
0 commit comments