Project

General

Profile

Revision 6f6efdcd

ID6f6efdcd325be1f197f3f271ffeef4b2bc0a4560
Parent 88cac5bb
Child 0bd9c069

Added by Francois POIROTTE about 13 years ago

Fusion du travail fait dans la branche 'nested_sets' vers le trunk.

git-svn-id: https://vigilo-dev.si.c-s.fr/svn@6116 b22e2e97-25c9-44ff-b637-2e5ceca36478

View differences:

vigiboard/tests/functional/plugins/test_plugin_hls.py
7 7

  
8 8
from vigilo.models.session import DBSession
9 9
from vigilo.models.tables import Permission, DataPermission, StateName, \
10
                            SupItemGroup, Host, HighLevelService, \
10
                            Host, HighLevelService, \
11 11
                            Event, CorrEvent, ImpactedPath, ImpactedHLS, \
12 12
                            User, UserGroup
13
from vigilo.models.demo.functions import *
13 14
from vigiboard.tests import TestController
14 15

  
15 16
def populate_DB():
16 17
    """ Peuple la base de données. """
17 18

  
18 19
    # On ajoute un groupe d'hôtes
19
    hostmanagers = SupItemGroup(name=u'managersgroup')
20
    DBSession.add(hostmanagers)
21
    DBSession.flush()
20
    hostmanagers = add_supitemgroup(name=u'managersgroup')
22 21

  
23 22
    # On lui octroie les permissions
24 23
    usergroup = UserGroup.by_group_name(u'users_with_access')
......
31 30

  
32 31
    # On crée un hôte de test.
33 32
    host = Host(
34
        name = u'host', 
33
        name = u'host',
35 34
        checkhostcmd = u'halt',
36 35
        snmpcommunity = u'public',
37 36
        hosttpl = u'/dev/null',
......
57 56

  
58 57
    # On ajoute un évènement corrélé causé par cet évènement 'brut'.
59 58
    aggregate = CorrEvent(
60
        idcause = event1.idevent, 
59
        idcause = event1.idevent,
61 60
        timestamp_active = datetime.now(),
62 61
        priority = 1,
63 62
        status = u'None')
64 63
    aggregate.events.append(event1)
65 64
    DBSession.add(aggregate)
66 65
    DBSession.flush()
67
    
66

  
68 67
    transaction.commit()
69 68
    return aggregate
70 69

  
71 70
def add_paths(path_number, path_length, idsupitem):
72
    """ 
71
    """
73 72
    Ajoute path_number chemins de services de haut niveau impactés
74 73
    dans la base de donnée. Leur longeur sera égale à path_length.
75 74
    La 3ème valeur passée en paramètre est l'id du supitem impactant.
76
     
77
    path_number * path_length services de 
75

  
76
    path_number * path_length services de
78 77
    haut niveau sont créés dans l'opération.
79 78
    """
80 79

  
......
89 88

  
90 89
    # Création des chemins de services de haut niveau impactés.
91 90
    for j in range(path_number):
92
        
91

  
93 92
        # On crée le chemin en lui-même
94 93
        path = ImpactedPath(idsupitem = idsupitem)
95 94
        DBSession.add(path)
96 95
        DBSession.flush()
97
        
96

  
98 97
        # Pour chaque étage du chemin,
99 98
        for i in range(path_length):
100 99
            # on ajoute un service de haut niveau dans la BDD,
101 100
            hls = HighLevelService(
102
                servicename = u'HLS' + str(j + 1) + str(i + 1), 
101
                servicename = u'HLS' + str(j + 1) + str(i + 1),
103 102
                **hls_template)
104 103
            DBSession.add(hls)
105
            # et on ajoute un étage au chemin contenant ce service. 
104
            # et on ajoute un étage au chemin contenant ce service.
106 105
            DBSession.add(
107 106
                ImpactedHLS(
108 107
                    path = path,
109 108
                    hls = hls,
110 109
                    distance = i + 1,
111 110
                    ))
112
    
111

  
113 112
    DBSession.flush()
114 113
    transaction.commit()
115 114

  
116 115

  
117 116
class TestHLSPlugin(TestController):
118 117
    """
119
    Classe de test du contrôleur listant les services 
118
    Classe de test du contrôleur listant les services
120 119
    de haut niveau impactés par un évènement corrélé.
121 120
    """
122 121
    def setUp(self):
......
159 158
        Teste la valeur de retour du plugin lorsque
160 159
        aucun service de haut niveau n'est impacté.
161 160
        """
162
        
161

  
163 162
        # On peuple la base de données avant le test.
164 163
        DBSession.add(self.aggregate)
165 164
        add_paths(0, 0, self.aggregate.events[0].idsupitem)
166 165
        DBSession.add(self.aggregate)
167
        
166

  
168 167
        ### 1er cas : l'utilisateur n'est pas connecté.
169 168
        # On vérifie que le plugin retourne bien une erreur 401.
170 169
        resp = self.app.post(
171
            '/get_plugin_value', 
170
            '/get_plugin_value',
172 171
            {"idcorrevent" : str(self.aggregate.idcorrevent),
173 172
             "plugin_name" : "hls"},
174 173
            status = 401,)
175
        
174

  
176 175
        ### 2ème cas : l'utilisateur n'a pas les
177 176
        ### droits sur l'hôte ayant causé le correvent.
178 177
        # On vérifie que le plugin retourne bien une erreur 404.
179 178
        resp = self.app.post(
180
            '/get_plugin_value', 
179
            '/get_plugin_value',
181 180
            {"idcorrevent" : str(self.aggregate.idcorrevent),
182 181
             "plugin_name" : "hls"},
183 182
            status = 404,
184 183
            extra_environ={'REMOTE_USER': 'no_access'})
185
        
184

  
186 185
        ### 3ème cas : l'utilisateur a cette fois les droits.
187 186
        resp = self.app.post(
188
            '/get_plugin_value', 
187
            '/get_plugin_value',
189 188
            {"idcorrevent" : str(self.aggregate.idcorrevent),
190 189
             "plugin_name" : "hls"},
191 190
            extra_environ={'REMOTE_USER': 'access'})
192 191
        # On vérifie que le plugin ne retourne toujours rien.
193 192
        assert_equal(resp.json, {"services": []})
194
    
193

  
195 194
    def test_1_impacted_hls_path(self):
196 195
        """
197 196
        Retour du plugin HLS pour 1 chemin impacté
198 197
        Teste la valeur de retour du plugin lorsqu'un
199 198
        chemin de services de haut niveau est impacté.
200 199
        """
201
        
200

  
202 201
        # On peuple la base de données avant le test.
203 202
        DBSession.add(self.aggregate)
204 203
        add_paths(1, 2, self.aggregate.events[0].idsupitem)
205 204
        DBSession.add(self.aggregate)
206
        
205

  
207 206
        ### 1er cas : l'utilisateur n'est pas connecté.
208 207
        # On vérifie que le plugin retourne bien une erreur 401.
209 208
        resp = self.app.post(
210
            '/get_plugin_value', 
209
            '/get_plugin_value',
211 210
            {"idcorrevent" : str(self.aggregate.idcorrevent),
212 211
             "plugin_name" : "hls"},
213 212
            status = 401,)
214
        
213

  
215 214
        ### 2ème cas : l'utilisateur n'a pas les droits
216 215
        ### sur l'hôte ayant causé le correvent, on doit
217 216
        ### obtenir une erreur 404 (pas d'événement trouvé
218 217
        ### avec les informations liées à cet utilisateur).
219 218
        resp = self.app.post(
220
            '/get_plugin_value', 
219
            '/get_plugin_value',
221 220
            {"idcorrevent" : str(self.aggregate.idcorrevent),
222 221
             "plugin_name" : "hls"},
223 222
            status = 404,
224 223
            extra_environ={'REMOTE_USER': 'no_access'})
225
        
224

  
226 225
        ### 3ème cas : l'utilisateur a cette fois les droits.
227 226
        resp = self.app.post(
228
            '/get_plugin_value', 
227
            '/get_plugin_value',
229 228
            {"idcorrevent" : str(self.aggregate.idcorrevent),
230 229
             "plugin_name" : "hls"},
231 230
            extra_environ={'REMOTE_USER': 'access'})
232 231
        # On vérifie que le plugin retourne bien les 2 HLS impactés.
233 232
        assert_equal(resp.json, {"services": ['HLS12']})
234
    
233

  
235 234
    def test_2_impacted_hls_path(self):
236 235
        """
237 236
        Retour du plugin HLS pour 2 chemins impactés
238 237
        Teste la valeur de retour du plugin lorsque deux
239 238
        chemins de services de haut niveau sont impactés.
240 239
        """
241
        
240

  
242 241
        # On peuple la base de données avant le test.
243 242
        DBSession.add(self.aggregate)
244 243
        add_paths(2, 2, self.aggregate.events[0].idsupitem)
245 244
        DBSession.add(self.aggregate)
246
        
245

  
247 246
        ### 1er cas : l'utilisateur n'est pas connecté.
248 247
        # On vérifie que le plugin retourne bien une erreur 401.
249 248
        resp = self.app.post(
250
            '/get_plugin_value', 
249
            '/get_plugin_value',
251 250
            {"idcorrevent" : str(self.aggregate.idcorrevent),
252 251
             "plugin_name" : "hls"},
253 252
            status = 401,)
254
        
253

  
255 254
        ### 2ème cas : l'utilisateur n'a pas les
256 255
        ### droits sur l'hôte ayant causé le correvent.
257 256
        resp = self.app.post(
258
            '/get_plugin_value', 
257
            '/get_plugin_value',
259 258
            {"idcorrevent" : str(self.aggregate.idcorrevent),
260 259
             "plugin_name" : "hls"},
261 260
            status = 404,
262 261
            extra_environ={'REMOTE_USER': 'no_access'})
263
        
262

  
264 263
        ### 3ème cas : l'utilisateur a cette fois les droits.
265 264
        resp = self.app.post(
266
            '/get_plugin_value', 
265
            '/get_plugin_value',
267 266
            {"idcorrevent" : str(self.aggregate.idcorrevent),
268 267
             "plugin_name" : "hls"},
269 268
            extra_environ={'REMOTE_USER': 'access'})
270 269
        # On vérifie que le plugin retourne bien les 4 HLS impactés.
271 270
        assert_equal(resp.json, {"services": ['HLS12', 'HLS22']})
272

  

Also available in: Unified diff