Project

General

Profile

Revision 0bd9c069

ID0bd9c06917b20932fbfd6f30384dd5018c50f3e6
Parent 6f6efdcd
Child 6707e733

Added by Francois POIROTTE about 13 years ago

Retrait des modifications liées à la fusion de la branche nested_sets du trunk (révisions r6116, r6121 et r6129).
Le nouveau mécanisme nécessite encore des ajustements pour être utilisable.

git-svn-id: https://vigilo-dev.si.c-s.fr/svn@6135 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
                            Host, HighLevelService, \
10
                            SupItemGroup, Host, HighLevelService, \
11 11
                            Event, CorrEvent, ImpactedPath, ImpactedHLS, \
12 12
                            User, UserGroup
13
from vigilo.models.demo.functions import *
14 13
from vigiboard.tests import TestController
15 14

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

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

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

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

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

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

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

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

  
......
88 89

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

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

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

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

  
115 116

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  

Also available in: Unified diff