Revision 2d2d2c1a
- 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
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