be6190600452e133b0780b6ad12e35307912da50
[nepi.git] / test / resources / omf / omf5_vlc_wrong_non_critical.py
1 #!/usr/bin/env python
2 #
3 #    NEPI, a framework to manage network experiments
4 #    Copyright (C) 2013 INRIA
5 #
6 #    This program is free software: you can redistribute it and/or modify
7 #    it under the terms of the GNU General Public License as published by
8 #    the Free Software Foundation, either version 3 of the License, or
9 #    (at your option) any later version.
10 #
11 #    This program is distributed in the hope that it will be useful,
12 #    but WITHOUT ANY WARRANTY; without even the implied warranty of
13 #    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 #    GNU General Public License for more details.
15 #
16 #    You should have received a copy of the GNU General Public License
17 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
18 #
19 # Author: Julien Tribino <julien.tribino@inria.fr>
20
21
22 from nepi.execution.resource import ResourceFactory, ResourceManager, ResourceAction, ResourceState
23 from nepi.execution.ec import ExperimentController
24
25 from nepi.resources.omf.node import OMFNode
26 from nepi.resources.omf.application import OMFApplication
27 from nepi.resources.omf.interface import OMFWifiInterface
28 from nepi.resources.omf.channel import OMFChannel
29 from nepi.resources.omf.omf_api_factory import OMFAPIFactory
30
31 from nepi.util.timefuncs import *
32
33 import time
34 import unittest
35
36 class OMFVLCWrongCaseWithNonCritical(unittest.TestCase):
37
38     id = 2000
39
40     def setUp(self):
41         self.ec = ExperimentController(exp_id = str(OMFVLCWrongCaseWithNonCritical.id))
42         OMFVLCWrongCaseWithNonCritical.id += 1
43
44         self.node1 = self.ec.register_resource("omf::Node")
45         self.ec.set(self.node1, 'hostname', 'omf.plexus.wlab17')
46         self.ec.set(self.node1, 'xmppUser', "nepi")
47         self.ec.set(self.node1, 'xmppServer', "xmpp-plexus.onelab.eu")
48         self.ec.set(self.node1, 'xmppPort', "5222")
49         self.ec.set(self.node1, 'xmppPassword', "1234")
50         self.ec.set(self.node1, 'version', "5")
51         
52         self.iface1 = self.ec.register_resource("omf::WifiInterface")
53         self.ec.set(self.iface1, 'name', "wlan0")
54         self.ec.set(self.iface1, 'mode', "adhoc")
55         self.ec.set(self.iface1, 'hw_mode', "g")
56         self.ec.set(self.iface1, 'essid', "vlcexp")
57         self.ec.set(self.iface1, 'ip', "10.0.0.17/24")
58         self.ec.set(self.iface1, 'version', "5")
59
60         self.app1 = self.ec.register_resource("omf::Application")
61         self.ec.set(self.app1, 'appid', 'Kill#1')
62         self.ec.set(self.app1, 'command', "/usr/bin/test -1")
63         self.ec.set(self.app1, 'env', "DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority")
64         self.ec.set(self.app1, 'version', "5")
65
66         self.ec.register_connection(self.app1, self.node1)
67         self.ec.register_connection(self.node1, self.iface1)
68
69     def test_deploy_with_node_nc(self):
70         self.node2 = self.ec.register_resource("omf::Node")
71         self.ec.set(self.node2, "critical", False)
72         self.ec.set(self.node2, 'version', "5")
73
74         self.iface2 = self.ec.register_resource("omf::WifiInterface")
75         self.ec.set(self.iface2, 'name', "wlan0")
76         self.ec.set(self.iface2, 'mode', "adhoc")
77         self.ec.set(self.iface2, 'hw_mode', "g")
78         self.ec.set(self.iface2, 'essid', "vlcexp")
79         self.ec.set(self.iface2, 'ip', "10.0.0.37/24")
80         self.ec.set(self.iface2, 'version', "5")
81         
82         self.channel = self.ec.register_resource("omf::Channel")
83         self.ec.set(self.channel, 'channel', "6")
84         self.ec.set(self.channel, 'xmppUser', "nepi")
85         self.ec.set(self.channel, 'xmppServer', "xmpp-plexus.onelab.eu")
86         self.ec.set(self.channel, 'xmppPort', "5222")
87         self.ec.set(self.channel, 'xmppPassword', "1234")
88         self.ec.set(self.channel, 'version', "5")
89
90         self.ec.register_connection(self.iface1, self.channel)
91         self.ec.register_connection(self.node2, self.iface2)
92         self.ec.register_connection(self.iface2, self.channel)
93
94         self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED , "5s")
95
96         self.ec.deploy()
97
98         self.ec.wait_finished([self.app1])
99
100         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.FAILED)
101         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.FAILED)
102
103         self.ec.shutdown()
104
105         self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
106         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
107         self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
108         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
109         self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
110         self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
111
112     def test_deploy_with_node_and_iface_nc(self):
113         self.node2 = self.ec.register_resource("omf::Node")
114         self.ec.set(self.node2, "critical", False)
115         self.ec.set(self.node2, 'version', "5")
116
117         self.iface2 = self.ec.register_resource("omf::WifiInterface")
118         self.ec.set(self.node2, "critical", False)
119         self.ec.set(self.iface2, 'name', "wlan0")
120         self.ec.set(self.iface2, 'mode', "adhoc")
121         self.ec.set(self.iface2, 'hw_mode', "g")
122         self.ec.set(self.iface2, 'essid', "vlcexp")
123         self.ec.set(self.iface2, 'ip', "10.0.0.37/24")
124         self.ec.set(self.iface2, 'version', "5")
125         
126         self.channel = self.ec.register_resource("omf::Channel")
127         self.ec.set(self.channel, 'channel', "6")
128         self.ec.set(self.channel, 'xmppUser', "nepi")
129         self.ec.set(self.channel, 'xmppServer', "xmpp-plexus.onelab.eu")
130         self.ec.set(self.channel, 'xmppPort', "5222")
131         self.ec.set(self.channel, 'xmppPassword', "1234")
132         self.ec.set(self.channel, 'version', "5")
133
134         self.ec.register_connection(self.iface1, self.channel)
135         self.ec.register_connection(self.node2, self.iface2)
136         self.ec.register_connection(self.iface2, self.channel)
137
138         self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED , "5s")
139
140         self.ec.deploy()
141
142         self.ec.wait_finished([self.app1])
143
144         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.FAILED)
145         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.FAILED)
146
147         self.ec.shutdown()
148
149         self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
150         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
151         self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
152         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
153         self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
154         self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
155
156     def test_deploy_with_node_iface_channel_nc(self):
157         self.node2 = self.ec.register_resource("omf::Node")
158         self.ec.set(self.node2, "critical", False)
159         self.ec.set(self.node2, 'hostname', 'omf.plexus.wlab37')
160         self.ec.set(self.node2, 'version', "5")
161
162         self.iface2 = self.ec.register_resource("omf::WifiInterface")
163         self.ec.set(self.node2, "critical", False)
164         self.ec.set(self.iface2, 'name', "wlan0")
165         self.ec.set(self.iface2, 'mode', "adhoc")
166         self.ec.set(self.iface2, 'hw_mode', "g")
167         self.ec.set(self.iface2, 'essid', "vlcexp")
168         self.ec.set(self.iface2, 'ip', "10.0.0.37/24")
169         self.ec.set(self.iface2, 'version', "5")
170         
171         self.channel = self.ec.register_resource("omf::Channel")
172         self.ec.set(self.channel, 'channel', "6")
173         self.ec.set(self.channel, "critical", False)
174         self.ec.set(self.channel, 'version', "5")
175
176         self.ec.register_connection(self.iface1, self.channel)
177         self.ec.register_connection(self.node2, self.iface2)
178         self.ec.register_connection(self.iface2, self.channel)
179
180         self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED , "10s")
181
182         self.ec.deploy()
183
184         self.ec.wait_finished([self.app1])
185
186         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.FAILED)
187         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.FAILED)
188         self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.FAILED)
189
190         self.ec.shutdown()
191
192         self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
193         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
194         self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
195         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
196         self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
197         self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
198
199     def test_deploy_with_app_nc(self):
200         self.node2 = self.ec.register_resource("omf::Node")
201         self.ec.set(self.node2, 'hostname', 'omf.plexus.wlab37')
202         self.ec.set(self.node2, 'xmppUser', "nepi")
203         self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu")
204         self.ec.set(self.node2, 'xmppPort', "5222")
205         self.ec.set(self.node2, 'xmppPassword', "1234")
206         self.ec.set(self.node2, 'version', "5")
207
208         self.iface2 = self.ec.register_resource("omf::WifiInterface")
209         self.ec.set(self.iface2, 'name', "wlan0")
210         self.ec.set(self.iface2, 'mode', "adhoc")
211         self.ec.set(self.iface2, 'hw_mode', "g")
212         self.ec.set(self.iface2, 'essid', "vlcexp")
213         self.ec.set(self.iface2, 'ip', "10.0.0.37/24")
214         self.ec.set(self.iface2, 'version', "5")
215         
216         self.channel = self.ec.register_resource("omf::Channel")
217         self.ec.set(self.channel, 'channel', "6")
218         self.ec.set(self.channel, 'xmppUser', "nepi")
219         self.ec.set(self.channel, 'xmppServer', "xmpp-plexus.onelab.eu")
220         self.ec.set(self.channel, 'xmppPort', "5222")
221         self.ec.set(self.channel, 'xmppPassword', "1234")
222         self.ec.set(self.channel, 'version', "5")
223
224         self.app2 = self.ec.register_resource("omf::Application")
225         self.ec.set(self.app2, "critical", False)
226         self.ec.set(self.app2, 'appid', 'Kill#22')
227         self.ec.set(self.app2, 'version', "5")
228
229         self.ec.register_connection(self.iface1, self.channel)
230         self.ec.register_connection(self.node2, self.iface2)
231         self.ec.register_connection(self.iface2, self.channel)
232         self.ec.register_connection(self.app2, self.node2)
233
234         self.ec.register_condition(self.app2, ResourceAction.START, self.app1, ResourceState.STARTED , "6s")
235         self.ec.register_condition([self.app1, self.app2], ResourceAction.STOP, self.app1, ResourceState.STARTED , "10s")
236
237         self.ec.deploy()
238
239         self.ec.wait_finished([self.app1, self.app2])
240
241         self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.STOPPED)
242         self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.FAILED)
243
244         self.ec.shutdown()
245
246         self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
247         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
248         self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
249         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
250         self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
251         self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
252         self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.RELEASED)
253
254     def test_deploy_with_all_nc_and_app_critical(self):
255         self.node2 = self.ec.register_resource("omf::Node")
256         self.ec.set(self.node2, "critical", False)
257         self.ec.set(self.node2, 'hostname', 'omf.plexus.wlab37')
258         self.ec.set(self.node2, 'version', "5")
259
260         self.iface2 = self.ec.register_resource("omf::WifiInterface")
261         self.ec.set(self.iface2, "critical", False)
262         self.ec.set(self.iface2, 'version', "5")
263         
264         self.channel = self.ec.register_resource("omf::Channel")
265         self.ec.set(self.channel, "critical", False)
266         self.ec.set(self.channel, 'channel', "6")
267         self.ec.set(self.channel, 'version', "5")
268
269         self.app2 = self.ec.register_resource("omf::Application")
270         self.ec.set(self.app2, 'appid', 'Kill#22')
271         self.ec.set(self.app2, 'version', "5")
272
273         self.ec.register_connection(self.iface1, self.channel)
274         self.ec.register_connection(self.node2, self.iface2)
275         self.ec.register_connection(self.iface2, self.channel)
276         self.ec.register_connection(self.app2, self.node2)
277
278         self.ec.register_condition(self.app2, ResourceAction.START, self.app1, ResourceState.STARTED , "6s")
279         self.ec.register_condition([self.app1, self.app2], ResourceAction.STOP, self.app1, ResourceState.STARTED , "10s")
280
281         self.ec.deploy()
282
283         self.ec.wait_finished([self.app1, self.app2])
284
285         self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.FAILED)
286
287         self.ec.shutdown()
288
289         self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
290         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
291         self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
292         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
293         self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
294         self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
295         self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.RELEASED)
296
297
298 class OMFVLCWrongCaseWithNonCriticalDep(unittest.TestCase):
299
300     id = 3000
301
302     def setUp(self):
303         self.ec = ExperimentController(exp_id = str(OMFVLCWrongCaseWithNonCriticalDep.id))
304         OMFVLCWrongCaseWithNonCriticalDep.id += 1
305
306         self.node1 = self.ec.register_resource("omf::Node")
307         self.ec.set(self.node1, 'hostname', 'omf.plexus.wlab17')
308         self.ec.set(self.node1, 'xmppUser', "nepi")
309         self.ec.set(self.node1, 'xmppServer', "xmpp-plexus.onelab.eu")
310         self.ec.set(self.node1, 'xmppPort', "5222")
311         self.ec.set(self.node1, 'xmppPassword', "1234")
312         self.ec.set(self.node1, 'version', "5")
313         
314         self.iface1 = self.ec.register_resource("omf::WifiInterface")
315         self.ec.set(self.iface1, 'name', "wlan0")
316         self.ec.set(self.iface1, 'mode', "adhoc")
317         self.ec.set(self.iface1, 'hw_mode', "g")
318         self.ec.set(self.iface1, 'essid', "vlcexp")
319         self.ec.set(self.iface1, 'ip', "10.0.0.17/24")
320         self.ec.set(self.iface1, 'version', "5")
321
322         self.app1 = self.ec.register_resource("omf::Application")
323         self.ec.set(self.app1, 'appid', 'Kill#1')
324         self.ec.set(self.app1, 'command', "/usr/bin/test -1")
325         self.ec.set(self.app1, 'env', "DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority")
326         self.ec.set(self.app1, 'version', "5")
327
328         self.ec.register_connection(self.app1, self.node1)
329         self.ec.register_connection(self.node1, self.iface1)
330
331     def test_deploy_with_app_nc_and_critical_wrong(self):
332         self.node2 = self.ec.register_resource("omf::Node")
333         self.ec.set(self.node2, 'hostname', 'omf.plexus.wlab37')
334         self.ec.set(self.node2, 'xmppUser', "nepi")
335         self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu")
336         self.ec.set(self.node2, 'xmppPort', "5222")
337         self.ec.set(self.node2, 'xmppPassword', "1234")
338         self.ec.set(self.node2, 'version', "5")
339
340         self.iface2 = self.ec.register_resource("omf::WifiInterface")
341         self.ec.set(self.iface2, 'name', "wlan0")
342         self.ec.set(self.iface2, 'mode', "adhoc")
343         self.ec.set(self.iface2, 'hw_mode', "g")
344         self.ec.set(self.iface2, 'essid', "vlcexp")
345         self.ec.set(self.iface2, 'ip', "10.0.0.37/24")
346         self.ec.set(self.iface2, 'version', "5")
347         
348         self.channel = self.ec.register_resource("omf::Channel")
349         self.ec.set(self.channel, 'channel', "6")
350         self.ec.set(self.channel, 'xmppUser', "nepi")
351         self.ec.set(self.channel, 'xmppServer', "xmpp-plexus.onelab.eu")
352         self.ec.set(self.channel, 'xmppPort', "5222")
353         self.ec.set(self.channel, 'xmppPassword', "1234")
354         self.ec.set(self.channel, 'version', "5")
355
356         self.app2 = self.ec.register_resource("omf::Application")
357         self.ec.set(self.app2, "critical", False)
358         self.ec.set(self.app2, 'appid', 'Kill#32')
359         self.ec.set(self.app2, 'version', "5")
360
361         self.app3 = self.ec.register_resource("omf::Application")
362         self.ec.set(self.app3, 'appid', 'Kill#33')
363         self.ec.set(self.app3, 'version', "5")
364
365         self.ec.register_connection(self.iface1, self.channel)
366         self.ec.register_connection(self.node2, self.iface2)
367         self.ec.register_connection(self.iface2, self.channel)
368         self.ec.register_connection(self.app2, self.node2)
369         self.ec.register_connection(self.app3, self.node2)
370
371         self.ec.register_condition(self.app2, ResourceAction.START, self.app1, ResourceState.STARTED , "5s")
372         self.ec.register_condition(self.app3, ResourceAction.START, self.app2, ResourceState.STARTED , "5s")
373         self.ec.register_condition([self.app1, self.app2, self.app3], ResourceAction.STOP, self.app1, ResourceState.STARTED , "15s")
374
375         self.ec.deploy()
376
377         self.ec.wait_finished([self.app1, self.app2, self.app3])
378
379         self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.FAILED)
380         self.assertEquals(self.ec.get_resource(self.app3).state, ResourceState.FAILED)
381
382         self.ec.shutdown()
383
384         self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
385         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
386         self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
387         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
388         self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
389         self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
390         self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.RELEASED)
391         self.assertEquals(self.ec.get_resource(self.app3).state, ResourceState.RELEASED)
392
393     def test_deploy_with_app_nc_and_critical_right(self):
394         self.node2 = self.ec.register_resource("omf::Node")
395         self.ec.set(self.node2, 'hostname', 'omf.plexus.wlab37')
396         self.ec.set(self.node2, 'xmppUser', "nepi")
397         self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu")
398         self.ec.set(self.node2, 'xmppPort', "5222")
399         self.ec.set(self.node2, 'xmppPassword', "1234")
400         self.ec.set(self.node2, 'version', "5")
401
402         self.iface2 = self.ec.register_resource("omf::WifiInterface")
403         self.ec.set(self.iface2, 'name', "wlan0")
404         self.ec.set(self.iface2, 'mode', "adhoc")
405         self.ec.set(self.iface2, 'hw_mode', "g")
406         self.ec.set(self.iface2, 'essid', "vlcexp")
407         self.ec.set(self.iface2, 'ip', "10.0.0.37/24")
408         self.ec.set(self.iface2, 'version', "5")
409         
410         self.channel = self.ec.register_resource("omf::Channel")
411         self.ec.set(self.channel, 'channel', "6")
412         self.ec.set(self.channel, 'xmppUser', "nepi")
413         self.ec.set(self.channel, 'xmppServer', "xmpp-plexus.onelab.eu")
414         self.ec.set(self.channel, 'xmppPort', "5222")
415         self.ec.set(self.channel, 'xmppPassword', "1234")
416         self.ec.set(self.channel, 'version', "5")
417
418         self.app2 = self.ec.register_resource("omf::Application")
419         self.ec.set(self.app2, "critical", False)
420         self.ec.set(self.app2, 'appid', 'Kill#32')
421         self.ec.set(self.app2, 'version', "5")
422
423         self.app3 = self.ec.register_resource("omf::Application")
424         self.ec.set(self.app3, 'appid', 'Kill#3')
425         self.ec.set(self.app3, 'command', "/usr/bin/test -1")
426         self.ec.set(self.app3, 'env', "DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority")
427         self.ec.set(self.app3, 'version', "5")
428
429         self.ec.register_connection(self.iface1, self.channel)
430         self.ec.register_connection(self.node2, self.iface2)
431         self.ec.register_connection(self.iface2, self.channel)
432         self.ec.register_connection(self.app2, self.node2)
433         self.ec.register_connection(self.app3, self.node2)
434
435         self.ec.register_condition(self.app2, ResourceAction.START, self.app1, ResourceState.STARTED , "5s")
436         self.ec.register_condition(self.app3, ResourceAction.START, self.app2, ResourceState.STARTED , "5s")
437         self.ec.register_condition([self.app1, self.app2, self.app3], ResourceAction.STOP, self.app1, ResourceState.STARTED , "15s")
438
439         self.ec.deploy()
440
441         self.ec.wait_finished([self.app1, self.app2, self.app3])
442
443         self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.STOPPED)
444         self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.FAILED)
445         self.assertEquals(self.ec.get_resource(self.app3).state, ResourceState.STOPPED)
446
447         self.ec.shutdown()
448
449         self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
450         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
451         self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
452         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
453         self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
454         self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
455         self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.RELEASED)
456         self.assertEquals(self.ec.get_resource(self.app3).state, ResourceState.RELEASED)
457
458
459     def test_deploy_with_many_app_nc_and_critical(self):
460         self.node2 = self.ec.register_resource("omf::Node")
461         self.ec.set(self.node2, 'hostname', 'omf.plexus.wlab37')
462         self.ec.set(self.node2, 'xmppUser', "nepi")
463         self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu")
464         self.ec.set(self.node2, 'xmppPort', "5222")
465         self.ec.set(self.node2, 'xmppPassword', "1234")
466         self.ec.set(self.node2, 'version', "5")
467
468         self.iface2 = self.ec.register_resource("omf::WifiInterface")
469         self.ec.set(self.iface2, 'name', "wlan0")
470         self.ec.set(self.iface2, 'mode', "adhoc")
471         self.ec.set(self.iface2, 'hw_mode', "g")
472         self.ec.set(self.iface2, 'essid', "vlcexp")
473         self.ec.set(self.iface2, 'ip', "10.0.0.37/24")
474         self.ec.set(self.iface2, 'version', "5")
475         
476         self.channel = self.ec.register_resource("omf::Channel")
477         self.ec.set(self.channel, 'channel', "6")
478         self.ec.set(self.channel, 'xmppUser', "nepi")
479         self.ec.set(self.channel, 'xmppServer', "xmpp-plexus.onelab.eu")
480         self.ec.set(self.channel, 'xmppPort', "5222")
481         self.ec.set(self.channel, 'xmppPassword', "1234")
482         self.ec.set(self.channel, 'version', "5")
483
484         self.app2 = self.ec.register_resource("omf::Application")
485         self.ec.set(self.app2, "critical", False)
486         self.ec.set(self.app2, 'appid', 'Kill#32')
487         self.ec.set(self.app2, 'version', "5")
488
489         self.app3 = self.ec.register_resource("omf::Application")
490         self.ec.set(self.app3, "critical", False)
491         self.ec.set(self.app3, 'appid', 'Kill#3')
492         self.ec.set(self.app3, 'command', "/usr/bin/test -1")
493         self.ec.set(self.app3, 'env', "DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority")
494         self.ec.set(self.app3, 'version', "5")
495
496         self.app4 = self.ec.register_resource("omf::Application")
497         self.ec.set(self.app4, 'appid', 'Kill#4')
498         self.ec.set(self.app4, 'command', "/usr/bin/test -1")
499         self.ec.set(self.app4, 'env', "DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority")
500         self.ec.set(self.app4, 'version', "5")
501
502         self.app5 = self.ec.register_resource("omf::Application")
503         self.ec.set(self.app5, "critical", False)
504         self.ec.set(self.app5, 'appid', 'Kill#32')
505         self.ec.set(self.app5, 'version', "5")
506
507         self.app6 = self.ec.register_resource("omf::Application")
508         self.ec.set(self.app6, 'appid', 'Kill#6')
509         self.ec.set(self.app6, 'command', "/usr/bin/test -1")
510         self.ec.set(self.app6, 'env', "DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority")
511         self.ec.set(self.app6, 'version', "5")
512
513         self.ec.register_connection(self.iface1, self.channel)
514         self.ec.register_connection(self.node2, self.iface2)
515         self.ec.register_connection(self.iface2, self.channel)
516         self.ec.register_connection(self.app2, self.node1)
517         self.ec.register_connection(self.app3, self.node1)
518         self.ec.register_connection(self.app4, self.node2)
519         self.ec.register_connection(self.app5, self.node2)
520         self.ec.register_connection(self.app6, self.node2)
521
522         self.ec.register_condition(self.app2, ResourceAction.START, self.app1, ResourceState.STARTED , "4s")
523         self.ec.register_condition(self.app3, ResourceAction.START, self.app2, ResourceState.STARTED , "4s")
524         self.ec.register_condition(self.app4, ResourceAction.START, self.app1, ResourceState.STARTED , "4s")
525         self.ec.register_condition(self.app5, ResourceAction.START, self.app4, ResourceState.STARTED , "4s")
526         self.ec.register_condition(self.app6, ResourceAction.START, self.app5, ResourceState.STARTED , "4s")
527         self.ec.register_condition([self.app1, self.app2, self.app3, self.app4, self.app5, self.app6 ], ResourceAction.STOP, self.app1, ResourceState.STARTED , "30s")
528
529         self.ec.deploy()
530
531         self.ec.wait_finished([self.app1, self.app2, self.app3, self.app4, self.app5, self.app6])
532
533         self.assertEquals(self.ec.get_resource(self.app3).state, ResourceState.STOPPED)
534         self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.FAILED)
535         self.assertEquals(self.ec.get_resource(self.app3).state, ResourceState.STOPPED)
536         self.assertEquals(self.ec.get_resource(self.app3).state, ResourceState.STOPPED)
537         self.assertEquals(self.ec.get_resource(self.app5).state, ResourceState.FAILED)
538         self.assertEquals(self.ec.get_resource(self.app6).state, ResourceState.STOPPED)
539
540         self.ec.shutdown()
541
542         self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
543         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
544         self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
545         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
546         self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
547         self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
548         self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.RELEASED)
549         self.assertEquals(self.ec.get_resource(self.app3).state, ResourceState.RELEASED)
550         self.assertEquals(self.ec.get_resource(self.app4).state, ResourceState.RELEASED)
551         self.assertEquals(self.ec.get_resource(self.app5).state, ResourceState.RELEASED)
552         self.assertEquals(self.ec.get_resource(self.app6).state, ResourceState.RELEASED)
553
554
555 if __name__ == '__main__':
556     unittest.main()
557
558
559