vigiboard / vigiboard / tests / functional / plugins / test_plugin_hls.py @ 011743be
History | View | Annotate | Download (7.33 KB)
1 | 4f6c505f | Vincent QUEMENER | # -*- coding: utf-8 -*-
|
---|---|---|---|
2 | 011743be | Francois POIROTTE | # Copyright (C) 2006-2020 CS GROUP - France
|
3 | b373a5de | Aurelien BOMPARD | # License: GNU GPL v2 <http://www.gnu.org/licenses/gpl-2.0.html>
|
4 | |||
5 | 6ab72614 | Vincent QUEMENER | """ Test du plugin listant les services de haut niveau impactés. """
|
6 | 4f6c505f | Vincent QUEMENER | |
7 | import transaction |
||
8 | 6ab72614 | Vincent QUEMENER | from nose.tools import assert_equal |
9 | 0c8b0e15 | Francois POIROTTE | |
10 | e7e3d45e | Francois POIROTTE | from vigilo.models.session import DBSession |
11 | 9a05a743 | Francois POIROTTE | from vigilo.models.demo import functions |
12 | 8b2edebe | Aurelien BOMPARD | from vigilo.models.tables import Permission, DataPermission, SupItemGroup, \ |
13 | ImpactedPath, ImpactedHLS, User, UserGroup |
||
14 | 0c8b0e15 | Francois POIROTTE | from vigiboard.tests import TestController |
15 | 4f6c505f | Vincent QUEMENER | |
16 | def populate_DB(): |
||
17 | """ Peuple la base de données. """
|
||
18 | |||
19 | # On ajoute un groupe d'hôtes
|
||
20 | 03059edd | Francois POIROTTE | hostmanagers = SupItemGroup(name=u'managersgroup', parent=None) |
21 | 0bd9c069 | Francois POIROTTE | DBSession.add(hostmanagers) |
22 | DBSession.flush() |
||
23 | 4f6c505f | Vincent QUEMENER | |
24 | # On lui octroie les permissions
|
||
25 | 60d02e7f | Francois POIROTTE | usergroup = UserGroup.by_group_name(u'users_with_access')
|
26 | DBSession.add(DataPermission( |
||
27 | group=hostmanagers, |
||
28 | usergroup=usergroup, |
||
29 | access=u'r',
|
||
30 | )) |
||
31 | 4f6c505f | Vincent QUEMENER | DBSession.flush() |
32 | |||
33 | # On crée un hôte de test.
|
||
34 | 9a05a743 | Francois POIROTTE | host = functions.add_host(u'host')
|
35 | 4f6c505f | Vincent QUEMENER | |
36 | # On affecte cet hôte au groupe précédemment créé.
|
||
37 | 24d74687 | Francois POIROTTE | hostmanagers.supitems.append(host) |
38 | 4f6c505f | Vincent QUEMENER | DBSession.flush() |
39 | |||
40 | 9a05a743 | Francois POIROTTE | # On ajoute un évènement brut et un événement corrélé causé par cet hôte.
|
41 | event1 = functions.add_event(host, u'WARNING', u'foo') |
||
42 | aggregate = functions.add_correvent([event1]) |
||
43 | cf3c2494 | Vincent QUEMENER | |
44 | 4f6c505f | Vincent QUEMENER | transaction.commit() |
45 | return aggregate
|
||
46 | |||
47 | 6ab72614 | Vincent QUEMENER | def add_paths(path_number, path_length, idsupitem): |
48 | cf3c2494 | Vincent QUEMENER | """
|
49 | 4f6c505f | Vincent QUEMENER | Ajoute path_number chemins de services de haut niveau impactés
|
50 | dans la base de donnée. Leur longeur sera égale à path_length.
|
||
51 | La 3ème valeur passée en paramètre est l'id du supitem impactant.
|
||
52 | cf3c2494 | Vincent QUEMENER |
|
53 | path_number * path_length services de
|
||
54 | 4f6c505f | Vincent QUEMENER | haut niveau sont créés dans l'opération.
|
55 | """
|
||
56 | |||
57 | # Création des chemins de services de haut niveau impactés.
|
||
58 | for j in range(path_number): |
||
59 | cf3c2494 | Vincent QUEMENER | |
60 | 4f6c505f | Vincent QUEMENER | # On crée le chemin en lui-même
|
61 | path = ImpactedPath(idsupitem = idsupitem) |
||
62 | DBSession.add(path) |
||
63 | DBSession.flush() |
||
64 | cf3c2494 | Vincent QUEMENER | |
65 | 4f6c505f | Vincent QUEMENER | # Pour chaque étage du chemin,
|
66 | for i in range(path_length): |
||
67 | 9a05a743 | Francois POIROTTE | # on ajoute un service de haut niveau dans la BDD...
|
68 | hls = functions.add_highlevelservice( |
||
69 | u'HLS' + str(j + 1) + str(i + 1), None) |
||
70 | |||
71 | # ...et on ajoute un étage au chemin contenant ce service.
|
||
72 | 4f6c505f | Vincent QUEMENER | DBSession.add( |
73 | ImpactedHLS( |
||
74 | path = path, |
||
75 | hls = hls, |
||
76 | distance = i + 1,
|
||
77 | 9a05a743 | Francois POIROTTE | )) |
78 | cf3c2494 | Vincent QUEMENER | |
79 | 4f6c505f | Vincent QUEMENER | DBSession.flush() |
80 | transaction.commit() |
||
81 | |||
82 | |||
83 | class TestHLSPlugin(TestController): |
||
84 | """
|
||
85 | cf3c2494 | Vincent QUEMENER | Classe de test du contrôleur listant les services
|
86 | 4f6c505f | Vincent QUEMENER | de haut niveau impactés par un évènement corrélé.
|
87 | """
|
||
88 | 60d02e7f | Francois POIROTTE | def setUp(self): |
89 | super(TestHLSPlugin, self).setUp() |
||
90 | perm = Permission.by_permission_name(u'vigiboard-access')
|
||
91 | |||
92 | user = User( |
||
93 | user_name=u'access',
|
||
94 | fullname=u'',
|
||
95 | email=u'user.has@access',
|
||
96 | ) |
||
97 | 03059edd | Francois POIROTTE | usergroup = UserGroup(group_name=u'users_with_access')
|
98 | 60d02e7f | Francois POIROTTE | usergroup.permissions.append(perm) |
99 | user.usergroups.append(usergroup) |
||
100 | DBSession.add(user) |
||
101 | DBSession.add(usergroup) |
||
102 | DBSession.flush() |
||
103 | |||
104 | self.aggregate = populate_DB()
|
||
105 | |||
106 | 4f6c505f | Vincent QUEMENER | def test_no_impacted_hls(self): |
107 | """
|
||
108 | 20a6c56d | Francois POIROTTE | Données affichées par le plugin HLS pour 0 HLS impacté
|
109 | cf3c2494 | Vincent QUEMENER | Teste les données affichées par le plugin lorsque
|
110 | 4f6c505f | Vincent QUEMENER | aucun service de haut niveau n'est impacté.
|
111 | """
|
||
112 | cf3c2494 | Vincent QUEMENER | |
113 | 4f6c505f | Vincent QUEMENER | # On peuple la base de données avant le test.
|
114 | 60d02e7f | Francois POIROTTE | DBSession.add(self.aggregate)
|
115 | add_paths(0, 0, self.aggregate.events[0].idsupitem) |
||
116 | DBSession.add(self.aggregate)
|
||
117 | cf3c2494 | Vincent QUEMENER | |
118 | # On accède à la page principale de VigiBoard
|
||
119 | 4f6c505f | Vincent QUEMENER | resp = self.app.post(
|
120 | cf3c2494 | Vincent QUEMENER | '/', extra_environ={'REMOTE_USER': 'access'}) |
121 | |||
122 | # On s'assure que la colonne des HLS
|
||
123 | # impactés est vide pour notre évènement.
|
||
124 | 7bde24ad | Francois POIROTTE | plugin_data = resp.lxml.xpath( |
125 | '//table[contains(concat(" ", @class, " "), " vigitable ")]'
|
||
126 | cf3c2494 | Vincent QUEMENER | '/tbody/tr/td[@class="plugin_hls"]/text()')
|
127 | assert_equal(plugin_data[0].strip(), "") |
||
128 | |||
129 | 4f6c505f | Vincent QUEMENER | def test_1_impacted_hls_path(self): |
130 | """
|
||
131 | 20a6c56d | Francois POIROTTE | Données affichées par le plugin HLS pour 1 chemin impacté
|
132 | cf3c2494 | Vincent QUEMENER | Teste les données affichées par le plugin lorsque
|
133 | 1 chemin de services de haut niveau est impacté.
|
||
134 | 4f6c505f | Vincent QUEMENER | """
|
135 | cf3c2494 | Vincent QUEMENER | |
136 | 4f6c505f | Vincent QUEMENER | # On peuple la base de données avant le test.
|
137 | 60d02e7f | Francois POIROTTE | DBSession.add(self.aggregate)
|
138 | add_paths(1, 2, self.aggregate.events[0].idsupitem) |
||
139 | DBSession.add(self.aggregate)
|
||
140 | cf3c2494 | Vincent QUEMENER | |
141 | # On accède à la page principale de VigiBoard
|
||
142 | 4f6c505f | Vincent QUEMENER | resp = self.app.post(
|
143 | cf3c2494 | Vincent QUEMENER | '/', extra_environ={'REMOTE_USER': 'access'}) |
144 | |||
145 | # On s'assure que la colonne des HLS impactés contient
|
||
146 | # bien le nom de notre HLS de plus haut niveau impacté.
|
||
147 | 7bde24ad | Francois POIROTTE | plugin_data = resp.lxml.xpath( |
148 | '//table[contains(concat(" ", @class, " "), " vigitable ")]'
|
||
149 | cf3c2494 | Vincent QUEMENER | '/tbody/tr/td[@class="plugin_hls"]/text()')
|
150 | assert_equal(plugin_data[0].strip(), "HLS12") |
||
151 | |||
152 | 4f6c505f | Vincent QUEMENER | def test_2_impacted_hls_path(self): |
153 | """
|
||
154 | 20a6c56d | Francois POIROTTE | Données affichées par le plugin HLS pour 2 chemins impactés
|
155 | cf3c2494 | Vincent QUEMENER | Teste les données affichées par le plugin lorsque
|
156 | 2 chemins de services de haut niveau sont impactés.
|
||
157 | 4f6c505f | Vincent QUEMENER | """
|
158 | cf3c2494 | Vincent QUEMENER | |
159 | 4f6c505f | Vincent QUEMENER | # On peuple la base de données avant le test.
|
160 | 60d02e7f | Francois POIROTTE | DBSession.add(self.aggregate)
|
161 | add_paths(2, 2, self.aggregate.events[0].idsupitem) |
||
162 | DBSession.add(self.aggregate)
|
||
163 | cf3c2494 | Vincent QUEMENER | |
164 | # On accède à la page principale de VigiBoard
|
||
165 | 4f6c505f | Vincent QUEMENER | resp = self.app.post(
|
166 | cf3c2494 | Vincent QUEMENER | '/', extra_environ={'REMOTE_USER': 'access'}) |
167 | |||
168 | # On s'assure que la colonne des HLS contient bien
|
||
169 | # le nombre de HLS de plus haut niveau impactés,
|
||
170 | 7bde24ad | Francois POIROTTE | plugin_data = resp.lxml.xpath( |
171 | '//table[contains(concat(" ", @class, " "), " vigitable ")]'
|
||
172 | cf3c2494 | Vincent QUEMENER | '/tbody/tr/td[@class="plugin_hls"]/a/text()')
|
173 | assert_equal(plugin_data[0].strip(), "2") |
||
174 | 90c98ce4 | Vincent QUEMENER | |
175 | def test_same_hls_impacted_twice(self): |
||
176 | """
|
||
177 | Pas de doublons dans les HLS impactés.
|
||
178 | Ticket #732.
|
||
179 | """
|
||
180 | |||
181 | # On peuple la base de données avant le test.
|
||
182 | DBSession.add(self.aggregate)
|
||
183 | 9a05a743 | Francois POIROTTE | hls = functions.add_highlevelservice(u'HLS', None, u'Bar') |
184 | 90c98ce4 | Vincent QUEMENER | path1 = ImpactedPath(idsupitem = self.aggregate.events[0].idsupitem) |
185 | DBSession.add(path1) |
||
186 | path2 = ImpactedPath(idsupitem = self.aggregate.events[0].idsupitem) |
||
187 | DBSession.add(path2) |
||
188 | DBSession.flush() |
||
189 | DBSession.add( |
||
190 | ImpactedHLS( |
||
191 | path = path1, |
||
192 | hls = hls, |
||
193 | distance = 1,
|
||
194 | ) |
||
195 | ) |
||
196 | DBSession.add( |
||
197 | ImpactedHLS( |
||
198 | path = path2, |
||
199 | hls = hls, |
||
200 | distance = 2,
|
||
201 | ) |
||
202 | ) |
||
203 | DBSession.flush() |
||
204 | transaction.commit() |
||
205 | DBSession.add(self.aggregate)
|
||
206 | |||
207 | # On accède à la page principale de VigiBoard
|
||
208 | resp = self.app.post(
|
||
209 | '/', extra_environ={'REMOTE_USER': 'access'}) |
||
210 | |||
211 | # On s'assure que la colonne des HLS contient bien
|
||
212 | # le nom de notre HLS de plus haut niveau impacté.
|
||
213 | 7bde24ad | Francois POIROTTE | plugin_data = resp.lxml.xpath( |
214 | '//table[contains(concat(" ", @class, " "), " vigitable ")]'
|
||
215 | 90c98ce4 | Vincent QUEMENER | '/tbody/tr/td[@class="plugin_hls"]/text()')
|
216 | assert_equal(plugin_data[0].strip(), "HLS") |