Skip to content

Commit d3fd7cd

Browse files
committed
More testing
1 parent 765685f commit d3fd7cd

File tree

1 file changed

+250
-4
lines changed

1 file changed

+250
-4
lines changed

tests/unittestpy3/test_icinga2_zones_conf.py

Lines changed: 250 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@
1414
#from icinga2_zones_conf import ActionModule
1515
from icinga2_zones_conf import get_sub_hierarchy
1616
from icinga2_zones_conf import get_best_endpoint_attrs
17+
from icinga2_zones_conf import get_zones_from_hierarchy
18+
from icinga2_zones_conf import get_endpoints_from_zones
1719

1820

1921
class TestActionPlugin(unittest.TestCase):
@@ -96,8 +98,252 @@ def test_get_best_endpoint_attrs(self):
9698
self.assertEqual(get_best_endpoint_attrs(test_inventory, name, host_options, port_variable), expected)
9799

98100

101+
def test_get_zones_from_hierarchy(self):
102+
test_cases = [
103+
# Hierarchy, ansible groups, expected
104+
(
105+
# Hierarchy
106+
{"master": None},
107+
# Ansible Groups
108+
{"master": ["master1"]},
109+
# Expected list of zones
110+
[{"name": "master", "endpoints": ["master1"]}]
111+
),
112+
(
113+
{"master": None},
114+
{"master": ["master1", "master2"]},
115+
[{"name": "master", "endpoints": ["master1", "master2"]}]
116+
),
117+
(
118+
{"inventory-name-master": None},
119+
{},
120+
[{"name": "inventory-name-master", "endpoints": ["inventory-name-master"]}]
121+
),
122+
(
123+
{},
124+
{"master": ["master1", "master2"], "eu": ["eu1", "eu2"], "us": ["us1", "us2"]},
125+
[]
126+
),
127+
(
128+
{"master": {"eu": None, "us": None}},
129+
{"master": ["master1", "master2"], "eu": ["eu1", "eu2"], "us": ["us1", "us2"]},
130+
[
131+
{
132+
"name": "master",
133+
"endpoints": [
134+
"master1",
135+
"master2"
136+
]
137+
},
138+
{
139+
"name": "eu",
140+
"parent": "master",
141+
"endpoints": [
142+
"eu1",
143+
"eu2"
144+
]
145+
},
146+
{
147+
"name": "us",
148+
"parent": "master",
149+
"endpoints": [
150+
"us1",
151+
"us2"
152+
]
153+
}
154+
]
155+
),
156+
(
157+
{"master": {"eu": {"germany": {"berlin": None}}}},
158+
{"master": ["master1", "master2"], "eu": ["eu1", "eu2"], "germany": ["ger1", "ger2"], "berlin": ["ber1"]},
159+
[
160+
{
161+
"name": "master",
162+
"endpoints": [
163+
"master1",
164+
"master2"
165+
]
166+
},
167+
{
168+
"name": "eu",
169+
"parent": "master",
170+
"endpoints": [
171+
"eu1",
172+
"eu2"
173+
]
174+
},
175+
{
176+
"name": "germany",
177+
"parent": "eu",
178+
"endpoints": [
179+
"ger1",
180+
"ger2"
181+
]
182+
},
183+
{
184+
"name": "berlin",
185+
"parent": "germany",
186+
"endpoints": [
187+
"ber1"
188+
]
189+
}
190+
]
191+
),
192+
]
193+
194+
for hierarchy, groups, expected in test_cases:
195+
self.assertEqual(get_zones_from_hierarchy(hierarchy, groups), expected, "foo: " + str(get_zones_from_hierarchy(hierarchy, groups)))
196+
197+
198+
#def get_endpoints_from_zones(zones, name, inventory, upper_host_options=list(), middle_host_options=list(), lower_host_options=list(), port_variable=None):
199+
def test_get_endpoints_from_zones(self):
200+
test_inventory = {
201+
"hostvars": {
202+
"master1": {
203+
"possible_port": "6556",
204+
},
205+
"master2": {
206+
"possible_port": "6557",
207+
},
208+
"eu1": {
209+
},
210+
"ger1": {
211+
}
212+
}
213+
}
214+
test_cases = [
215+
# Parameter dict, expected
216+
(
217+
{
218+
"zones": [],
219+
"name": "master1",
220+
},
221+
[]
222+
),
223+
(
224+
{
225+
"zones": [
226+
{
227+
"name": "master",
228+
"endpoints": [
229+
"master1"
230+
]
231+
},
232+
{
233+
"name": "eu",
234+
"endpoints": [
235+
"eu1"
236+
],
237+
"parent": "master"
238+
},
239+
{
240+
"name": "germany",
241+
"endpoints": [
242+
"ger1"
243+
],
244+
"parent": "eu"
245+
}
246+
],
247+
"name": "master1",
248+
},
249+
[{"name": "master1"}, {"host": "eu1", "name": "eu1", "port": "5665"}, {"name": "ger1"}]
250+
),
251+
(
252+
{
253+
"zones": [
254+
{
255+
"name": "master",
256+
"endpoints": [
257+
"master1"
258+
]
259+
},
260+
{
261+
"name": "eu",
262+
"endpoints": [
263+
"eu1"
264+
],
265+
"parent": "master"
266+
},
267+
{
268+
"name": "germany",
269+
"endpoints": [
270+
"ger1"
271+
],
272+
"parent": "eu"
273+
}
274+
],
275+
"name": "eu1",
276+
},
277+
[
278+
{"host": "master1", "name": "master1", "port": "5665"},
279+
{"name": "eu1"},
280+
{"host": "ger1", "name": "ger1", "port": "5665"}
281+
]
282+
),
283+
(
284+
{
285+
"zones": [
286+
{
287+
"name": "master",
288+
"endpoints": [
289+
"master1"
290+
]
291+
},
292+
{
293+
"name": "eu",
294+
"endpoints": [
295+
"eu1"
296+
],
297+
"parent": "master"
298+
},
299+
{
300+
"name": "germany",
301+
"endpoints": [
302+
"ger1"
303+
],
304+
"parent": "eu"
305+
}
306+
],
307+
"name": "ger1",
308+
},
309+
[
310+
{"name": "master1"},
311+
{"host": "eu1", "name": "eu1", "port": "5665"},
312+
{"name": "ger1"}
313+
]
314+
),
315+
(
316+
{
317+
"zones": [{"name": "master", "endpoints": ["master1", "master2"]}],
318+
"name": "master1",
319+
},
320+
[{"name": "master1"}, {"host": "master2", "name": "master2", "port": "5665"}]
321+
),
322+
(
323+
{
324+
"zones": [{"name": "master", "endpoints": ["master1", "master2"]}],
325+
"name": "master2",
326+
},
327+
[{"host": "master1", "name": "master1", "port": "5665"}, {"name": "master2"}, ]
328+
),
329+
(
330+
{
331+
"zones": [{"name": "master", "endpoints": ["master1", "master2"]}],
332+
"name": "master1",
333+
"port_variable": "possible_port",
334+
},
335+
[{"name": "master1"}, {"host": "master2", "name": "master2", "port": "6557"}]
336+
),
337+
(
338+
{
339+
"zones": [{"name": "master", "endpoints": ["master1", "master2"]}],
340+
"name": "master2",
341+
"port_variable": "possible_port",
342+
},
343+
[{"host": "master1", "name": "master1", "port": "6556"}, {"name": "master2"}, ]
344+
),
345+
]
99346

100-
## WIP
101-
#def test_get_best_endpoint_attrs(inventory, name, host_options=list(), port_variable=None)
102-
#def test_get_endpoints_from_zones(zones, name, inventory, upper_host_options=list(), middle_host_options=list(), lower_host_options=list(), port_variable=None)
103-
#def test_get_zones_from_hierarchy(hierarchy, groups, parent=None)
347+
for parameters, expected in test_cases:
348+
self.assertEqual(get_endpoints_from_zones(inventory=test_inventory, **parameters), expected)
349+
#self.assertEqual(get_endpoints_from_zones(zones, name, inventory, upper_host_options=list(), middle_host_options=list(), lower_host_options=list(), port_variable=None), expected)

0 commit comments

Comments
 (0)