Project

General

Profile

Revision 2d2d2c1a

ID2d2d2c1a2c4f9b3c46bc038136a78f14afdbfc56
Parent fed79c2f
Child 718be55e

Added by Vincent QUEMENER over 14 years ago

- Ajout d'un test de l'affichage de l'historique détaillé d'un évènement corrélé portant sur un hôte (/event/host.idhost).
- Ajout d'un test de l'affichage de l'historique détaillé d'un évènement corrélé portant sur un service de bas niveau (/event/service.idservice).
- Ajout d'un test de l'affichage de l'historique détaillé des évènements corrélés portant sur un hôte (/host_service/host.name/).
- Ajout d'un test de l'affichage de l'historique détaillé des évènements corrélés portant sur un service de bas niveau (/host_service/host.name/service.servicename).

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

View differences:

vigiboard/tests/functional/test_event_table.py
1
# -*- coding: utf-8 -*-
2
# vim:set expandtab tabstop=4 shiftwidth=4:
3
"""
4
Test du tableau d'événements de Vigiboard
5
"""
6

  
7
from nose.tools import assert_true, assert_equal
8
from datetime import datetime
9
import tg
10
import transaction
11

  
12
from vigiboard.model import DBSession, \
13
    Event, EventHistory, CorrEvent, \
14
    Permission, User, StateName, \
15
    Host, HostGroup, ServiceLowLevel, ServiceGroup
16
from vigiboard.tests import TestController
17
from vigiboard.controllers.vigiboardrequest import VigiboardRequest
18
from vigiboard.controllers.vigiboard_plugin.tests import MonPlugin
19

  
20

  
21
class TestEventTable(TestController):
22
    """
23
    Test du tableau d'événements de Vigiboard
24
    """
25

  
26
def populate_DB():
27
    """ Peuple la base de données. """
28

  
29
    # On ajoute des noms d'états.
30
    DBSession.add(StateName(statename=u'OK', order=0))
31
    DBSession.add(StateName(statename=u'WARNING', order=2))
32
    DBSession.flush()
33
    transaction.commit()
34

  
35
    # On ajoute les groupes et leurs dépendances
36
    hosteditors = HostGroup(name=u'editorsgroup')
37
    DBSession.add(hosteditors)
38
    hostmanagers = HostGroup(name=u'managersgroup', parent=hosteditors)
39
    DBSession.add(hostmanagers)
40
    DBSession.flush()
41

  
42
    manage_perm = Permission.by_permission_name(u'manage')
43
    edit_perm = Permission.by_permission_name(u'edit')
44

  
45
    hostmanagers.permissions.append(manage_perm)
46
    hosteditors.permissions.append(edit_perm)
47
    DBSession.flush()
48

  
49
    # Création des hôtes de test.
50
    host_template = {
51
        'checkhostcmd': u'halt',
52
        'snmpcommunity': u'public',
53
        'hosttpl': u'/dev/null',
54
        'mainip': u'192.168.1.1',
55
        'snmpport': 42,
56
        'weight': 42,
57
    }
58

  
59
    managerhost = Host(name=u'managerhost', **host_template)
60
    editorhost = Host(name=u'editorhost', **host_template)
61
    DBSession.add(managerhost)
62
    DBSession.add(editorhost)
63

  
64
    # Affectation des hôtes aux groupes.
65
    hosteditors.hosts.append(editorhost)
66
    hostmanagers.hosts.append(managerhost)
67
    DBSession.flush()
68

  
69
    # Ajout des événements eux-mêmes
70
    event_template = {
71
        'message': u'foo',
72
        'current_state': StateName.statename_to_value(u'WARNING'),
73
    }
74

  
75
    event1 = Event(supitem=service1, **event_template)
76
    event2 = Event(supitem=service2, **event_template)
77
    event3 = Event(supitem=service3, **event_template)
78
    event4 = Event(supitem=service4, **event_template)
79
    event5 = Event(supitem=editorhost, **event_template)
80
    event6 = Event(supitem=managerhost, **event_template)
81

  
82
    DBSession.add(event1)
83
    DBSession.add(event2)
84
    DBSession.add(event3)
85
    DBSession.add(event4)
86
    DBSession.add(event5)
87
    DBSession.add(event6)
88
    DBSession.flush()
89

  
90
    # Ajout des événements corrélés
91
    aggregate_template = {
92
        'timestamp_active': datetime.now(),
93
        'priority': 1,
94
        'status': u'None',
95
    }
96
    aggregate1 = CorrEvent(
97
        idcause=event1.idevent, **aggregate_template)
98
    aggregate2 = CorrEvent(
99
        idcause=event4.idevent, **aggregate_template)
100
    aggregate3 = CorrEvent(
101
        idcause=event5.idevent, **aggregate_template)
102
    aggregate4 = CorrEvent(
103
        idcause=event6.idevent, **aggregate_template)
104

  
105
    aggregate1.events.append(event1)
106
    aggregate1.events.append(event3)
107
    aggregate2.events.append(event4)
108
    aggregate2.events.append(event2)
109
    aggregate3.events.append(event5)
110
    aggregate4.events.append(event6)
111
    DBSession.add(aggregate1)
112
    DBSession.add(aggregate2)
113
    DBSession.add(aggregate3)
114
    DBSession.add(aggregate4)
115
    DBSession.flush()
116
    transaction.commit()
117

  
118
    def test_event_table(self):
119
        """
120
        Test du tableau d'évènements de la page d'accueil de Vigiboard.
121
        """
122

  
123
        populate_DB()
124

  
125
        ### 1er cas : L'utilisateur utilisé pour
126
        # se connecter à Vigiboard est 'editor'.
127
        environ = {'REMOTE_USER': 'editor'}
128
        response = self.app.get('/', extra_environ=environ)
129

  
130
        # Il doit y avoir 2 lignes de résultats.
131
        rows = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr')
132
        print "There are %d rows in the result set" % len(rows)
133
        assert_equal(len(rows), 2)
134

  
135
        # Il doit y avoir plusieurs colonnes dans la ligne de résultats.
136
        cols = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr/td')
137
        print "There are %d columns in the result set" % len(cols)
138
        assert_true(len(cols) > 1)
139

  
140
        ### 2nd cas : L'utilisateur utilisé pour
141
        # se connecter à Vigiboard est 'manager'.
142
        environ = {'REMOTE_USER': 'manager'}
143
        response = self.app.get('/', extra_environ=environ)
144

  
145
        # Il doit y avoir 4 lignes de résultats.
146
        rows = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr')
147
        print "There are %d rows in the result set" % len(rows)
148
        assert_equal(len(rows), 4)
149

  
150
        # Il doit y avoir plusieurs colonnes dans la ligne de résultats.
151
        cols = response.lxml.xpath('//table[@class="vigitable"]/tbody/tr/td')
152
        print "There are %d columns in the result set" % len(cols)
153
        assert_true(len(cols) > 1)
154

  
155

  
156

  

Also available in: Unified diff