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