last modifications for OMF6 before test
[nepi.git] / test / resources / omf / 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 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("OMFNode")
45         self.ec.set(self.node1, 'hostname', 'omf.plexus.wlab17')
46         self.ec.set(self.node1, 'xmppSlice', "nepi")
47         self.ec.set(self.node1, 'xmppHost', "xmpp-plexus.onelab.eu")
48         self.ec.set(self.node1, 'xmppPort', "5222")
49         self.ec.set(self.node1, 'xmppPassword', "1234")
50         
51         self.iface1 = self.ec.register_resource("OMFWifiInterface")
52         self.ec.set(self.iface1, 'alias', "w0")
53         self.ec.set(self.iface1, 'mode', "adhoc")
54         self.ec.set(self.iface1, 'type', "g")
55         self.ec.set(self.iface1, 'essid', "vlcexp")
56         self.ec.set(self.iface1, 'ip', "10.0.0.17")
57
58         self.app1 = self.ec.register_resource("OMFApplication")
59         self.ec.set(self.app1, 'appid', 'Kill#1')
60         self.ec.set(self.app1, 'path', "/usr/bin/test")
61         self.ec.set(self.app1, 'args', "-1")
62         self.ec.set(self.app1, 'env', "DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority")
63
64         self.ec.register_connection(self.app1, self.node1)
65         self.ec.register_connection(self.node1, self.iface1)
66
67     def test_deploy_with_node_nc(self):
68         self.node2 = self.ec.register_resource("OMFNode")
69         self.ec.set(self.node2, "critical", False)
70
71         self.iface2 = self.ec.register_resource("OMFWifiInterface")
72         self.ec.set(self.iface2, 'alias', "w0")
73         self.ec.set(self.iface2, 'mode', "adhoc")
74         self.ec.set(self.iface2, 'type', "g")
75         self.ec.set(self.iface2, 'essid', "vlcexp")
76         self.ec.set(self.iface2, 'ip', "10.0.0.37")
77         
78         self.channel = self.ec.register_resource("OMFChannel")
79         self.ec.set(self.channel, 'channel', "6")
80         self.ec.set(self.channel, 'xmppSlice', "nepi")
81         self.ec.set(self.channel, 'xmppHost', "xmpp-plexus.onelab.eu")
82         self.ec.set(self.channel, 'xmppPort', "5222")
83         self.ec.set(self.channel, 'xmppPassword', "1234")
84
85         self.ec.register_connection(self.iface1, self.channel)
86         self.ec.register_connection(self.node2, self.iface2)
87         self.ec.register_connection(self.iface2, self.channel)
88
89         self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED , "5s")
90
91         self.ec.deploy()
92
93         self.ec.wait_finished([self.app1])
94
95         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.FAILED)
96         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.FAILED)
97
98         self.ec.shutdown()
99
100         self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
101         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
102         self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
103         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
104         self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
105         self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
106
107     def test_deploy_with_node_and_iface_nc(self):
108         self.node2 = self.ec.register_resource("OMFNode")
109         self.ec.set(self.node2, "critical", False)
110
111         self.iface2 = self.ec.register_resource("OMFWifiInterface")
112         self.ec.set(self.node2, "critical", False)
113         self.ec.set(self.iface2, 'alias', "w0")
114         self.ec.set(self.iface2, 'mode', "adhoc")
115         self.ec.set(self.iface2, 'type', "g")
116         self.ec.set(self.iface2, 'essid', "vlcexp")
117         self.ec.set(self.iface2, 'ip', "10.0.0.37")
118         
119         self.channel = self.ec.register_resource("OMFChannel")
120         self.ec.set(self.channel, 'channel', "6")
121         self.ec.set(self.channel, 'xmppSlice', "nepi")
122         self.ec.set(self.channel, 'xmppHost', "xmpp-plexus.onelab.eu")
123         self.ec.set(self.channel, 'xmppPort', "5222")
124         self.ec.set(self.channel, 'xmppPassword', "1234")
125
126         self.ec.register_connection(self.iface1, self.channel)
127         self.ec.register_connection(self.node2, self.iface2)
128         self.ec.register_connection(self.iface2, self.channel)
129
130         self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED , "5s")
131
132         self.ec.deploy()
133
134         self.ec.wait_finished([self.app1])
135
136         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.FAILED)
137         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.FAILED)
138
139         self.ec.shutdown()
140
141         self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
142         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
143         self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
144         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
145         self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
146         self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
147
148     def test_deploy_with_node_iface_channel_nc(self):
149         self.node2 = self.ec.register_resource("OMFNode")
150         self.ec.set(self.node2, "critical", False)
151         self.ec.set(self.node2, 'hostname', 'omf.plexus.wlab37')
152
153         self.iface2 = self.ec.register_resource("OMFWifiInterface")
154         self.ec.set(self.node2, "critical", False)
155         self.ec.set(self.iface2, 'alias', "w0")
156         self.ec.set(self.iface2, 'mode', "adhoc")
157         self.ec.set(self.iface2, 'type', "g")
158         self.ec.set(self.iface2, 'essid', "vlcexp")
159         self.ec.set(self.iface2, 'ip', "10.0.0.37")
160         
161         self.channel = self.ec.register_resource("OMFChannel")
162         self.ec.set(self.channel, 'channel', "6")
163         self.ec.set(self.channel, "critical", False)
164
165         self.ec.register_connection(self.iface1, self.channel)
166         self.ec.register_connection(self.node2, self.iface2)
167         self.ec.register_connection(self.iface2, self.channel)
168
169         self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED , "10s")
170
171         self.ec.deploy()
172
173         self.ec.wait_finished([self.app1])
174
175         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.FAILED)
176         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.FAILED)
177         self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.FAILED)
178
179         self.ec.shutdown()
180
181         self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
182         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
183         self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
184         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
185         self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
186         self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
187
188     def test_deploy_with_app_nc(self):
189         self.node2 = self.ec.register_resource("OMFNode")
190         self.ec.set(self.node2, 'hostname', 'omf.plexus.wlab37')
191         self.ec.set(self.node2, 'xmppSlice', "nepi")
192         self.ec.set(self.node2, 'xmppHost', "xmpp-plexus.onelab.eu")
193         self.ec.set(self.node2, 'xmppPort', "5222")
194         self.ec.set(self.node2, 'xmppPassword', "1234")
195
196         self.iface2 = self.ec.register_resource("OMFWifiInterface")
197         self.ec.set(self.iface2, 'alias', "w0")
198         self.ec.set(self.iface2, 'mode', "adhoc")
199         self.ec.set(self.iface2, 'type', "g")
200         self.ec.set(self.iface2, 'essid', "vlcexp")
201         self.ec.set(self.iface2, 'ip', "10.0.0.37")
202         
203         self.channel = self.ec.register_resource("OMFChannel")
204         self.ec.set(self.channel, 'channel', "6")
205         self.ec.set(self.channel, 'xmppSlice', "nepi")
206         self.ec.set(self.channel, 'xmppHost', "xmpp-plexus.onelab.eu")
207         self.ec.set(self.channel, 'xmppPort', "5222")
208         self.ec.set(self.channel, 'xmppPassword', "1234")
209
210         self.app2 = self.ec.register_resource("OMFApplication")
211         self.ec.set(self.app2, "critical", False)
212         self.ec.set(self.app2, 'appid', 'Kill#22')
213
214         self.ec.register_connection(self.iface1, self.channel)
215         self.ec.register_connection(self.node2, self.iface2)
216         self.ec.register_connection(self.iface2, self.channel)
217         self.ec.register_connection(self.app2, self.node2)
218
219         self.ec.register_condition(self.app2, ResourceAction.START, self.app1, ResourceState.STARTED , "6s")
220         self.ec.register_condition([self.app1, self.app2], ResourceAction.STOP, self.app1, ResourceState.STARTED , "10s")
221
222         self.ec.deploy()
223
224         self.ec.wait_finished([self.app1, self.app2])
225
226         self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.STOPPED)
227         self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.FAILED)
228
229         self.ec.shutdown()
230
231         self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
232         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
233         self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
234         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
235         self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
236         self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
237         self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.RELEASED)
238
239     def test_deploy_with_all_nc_and_app_critical(self):
240         self.node2 = self.ec.register_resource("OMFNode")
241         self.ec.set(self.node2, "critical", False)
242         self.ec.set(self.node2, 'hostname', 'omf.plexus.wlab37')
243
244         self.iface2 = self.ec.register_resource("OMFWifiInterface")
245         self.ec.set(self.iface2, "critical", False)
246         
247         self.channel = self.ec.register_resource("OMFChannel")
248         self.ec.set(self.channel, "critical", False)
249         self.ec.set(self.channel, 'channel', "6")
250
251         self.app2 = self.ec.register_resource("OMFApplication")
252         self.ec.set(self.app2, 'appid', 'Kill#22')
253
254         self.ec.register_connection(self.iface1, self.channel)
255         self.ec.register_connection(self.node2, self.iface2)
256         self.ec.register_connection(self.iface2, self.channel)
257         self.ec.register_connection(self.app2, self.node2)
258
259         self.ec.register_condition(self.app2, ResourceAction.START, self.app1, ResourceState.STARTED , "6s")
260         self.ec.register_condition([self.app1, self.app2], ResourceAction.STOP, self.app1, ResourceState.STARTED , "10s")
261
262         self.ec.deploy()
263
264         self.ec.wait_finished([self.app1, self.app2])
265
266         self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.FAILED)
267
268         self.ec.shutdown()
269
270         self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
271         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
272         self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
273         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
274         self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
275         self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
276         self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.RELEASED)
277
278
279 class OMFVLCWrongCaseWithNonCriticalDep(unittest.TestCase):
280
281     id = 3000
282
283     def setUp(self):
284         self.ec = ExperimentController(exp_id = str(OMFVLCWrongCaseWithNonCriticalDep.id))
285         OMFVLCWrongCaseWithNonCriticalDep.id += 1
286
287         self.node1 = self.ec.register_resource("OMFNode")
288         self.ec.set(self.node1, 'hostname', 'omf.plexus.wlab17')
289         self.ec.set(self.node1, 'xmppSlice', "nepi")
290         self.ec.set(self.node1, 'xmppHost', "xmpp-plexus.onelab.eu")
291         self.ec.set(self.node1, 'xmppPort', "5222")
292         self.ec.set(self.node1, 'xmppPassword', "1234")
293         
294         self.iface1 = self.ec.register_resource("OMFWifiInterface")
295         self.ec.set(self.iface1, 'alias', "w0")
296         self.ec.set(self.iface1, 'mode', "adhoc")
297         self.ec.set(self.iface1, 'type', "g")
298         self.ec.set(self.iface1, 'essid', "vlcexp")
299         self.ec.set(self.iface1, 'ip', "10.0.0.17")
300
301         self.app1 = self.ec.register_resource("OMFApplication")
302         self.ec.set(self.app1, 'appid', 'Kill#1')
303         self.ec.set(self.app1, 'path', "/usr/bin/test")
304         self.ec.set(self.app1, 'args', "-1")
305         self.ec.set(self.app1, 'env', "DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority")
306
307         self.ec.register_connection(self.app1, self.node1)
308         self.ec.register_connection(self.node1, self.iface1)
309
310     def test_deploy_with_app_nc_and_critical_wrong(self):
311         self.node2 = self.ec.register_resource("OMFNode")
312         self.ec.set(self.node2, 'hostname', 'omf.plexus.wlab37')
313         self.ec.set(self.node2, 'xmppSlice', "nepi")
314         self.ec.set(self.node2, 'xmppHost', "xmpp-plexus.onelab.eu")
315         self.ec.set(self.node2, 'xmppPort', "5222")
316         self.ec.set(self.node2, 'xmppPassword', "1234")
317
318         self.iface2 = self.ec.register_resource("OMFWifiInterface")
319         self.ec.set(self.iface2, 'alias', "w0")
320         self.ec.set(self.iface2, 'mode', "adhoc")
321         self.ec.set(self.iface2, 'type', "g")
322         self.ec.set(self.iface2, 'essid', "vlcexp")
323         self.ec.set(self.iface2, 'ip', "10.0.0.37")
324         
325         self.channel = self.ec.register_resource("OMFChannel")
326         self.ec.set(self.channel, 'channel', "6")
327         self.ec.set(self.channel, 'xmppSlice', "nepi")
328         self.ec.set(self.channel, 'xmppHost', "xmpp-plexus.onelab.eu")
329         self.ec.set(self.channel, 'xmppPort', "5222")
330         self.ec.set(self.channel, 'xmppPassword', "1234")
331
332         self.app2 = self.ec.register_resource("OMFApplication")
333         self.ec.set(self.app2, "critical", False)
334         self.ec.set(self.app2, 'appid', 'Kill#32')
335
336         self.app3 = self.ec.register_resource("OMFApplication")
337         self.ec.set(self.app3, 'appid', 'Kill#33')
338
339         self.ec.register_connection(self.iface1, self.channel)
340         self.ec.register_connection(self.node2, self.iface2)
341         self.ec.register_connection(self.iface2, self.channel)
342         self.ec.register_connection(self.app2, self.node2)
343         self.ec.register_connection(self.app3, self.node2)
344
345         self.ec.register_condition(self.app2, ResourceAction.START, self.app1, ResourceState.STARTED , "5s")
346         self.ec.register_condition(self.app3, ResourceAction.START, self.app2, ResourceState.STARTED , "5s")
347         self.ec.register_condition([self.app1, self.app2, self.app3], ResourceAction.STOP, self.app1, ResourceState.STARTED , "15s")
348
349         self.ec.deploy()
350
351         self.ec.wait_finished([self.app1, self.app2, self.app3])
352
353         self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.FAILED)
354         self.assertEquals(self.ec.get_resource(self.app3).state, ResourceState.FAILED)
355
356         self.ec.shutdown()
357
358         self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
359         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
360         self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
361         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
362         self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
363         self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
364         self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.RELEASED)
365         self.assertEquals(self.ec.get_resource(self.app3).state, ResourceState.RELEASED)
366
367     def test_deploy_with_app_nc_and_critical_right(self):
368         self.node2 = self.ec.register_resource("OMFNode")
369         self.ec.set(self.node2, 'hostname', 'omf.plexus.wlab37')
370         self.ec.set(self.node2, 'xmppSlice', "nepi")
371         self.ec.set(self.node2, 'xmppHost', "xmpp-plexus.onelab.eu")
372         self.ec.set(self.node2, 'xmppPort', "5222")
373         self.ec.set(self.node2, 'xmppPassword', "1234")
374
375         self.iface2 = self.ec.register_resource("OMFWifiInterface")
376         self.ec.set(self.iface2, 'alias', "w0")
377         self.ec.set(self.iface2, 'mode', "adhoc")
378         self.ec.set(self.iface2, 'type', "g")
379         self.ec.set(self.iface2, 'essid', "vlcexp")
380         self.ec.set(self.iface2, 'ip', "10.0.0.37")
381         
382         self.channel = self.ec.register_resource("OMFChannel")
383         self.ec.set(self.channel, 'channel', "6")
384         self.ec.set(self.channel, 'xmppSlice', "nepi")
385         self.ec.set(self.channel, 'xmppHost', "xmpp-plexus.onelab.eu")
386         self.ec.set(self.channel, 'xmppPort', "5222")
387         self.ec.set(self.channel, 'xmppPassword', "1234")
388
389         self.app2 = self.ec.register_resource("OMFApplication")
390         self.ec.set(self.app2, "critical", False)
391         self.ec.set(self.app2, 'appid', 'Kill#32')
392
393         self.app3 = self.ec.register_resource("OMFApplication")
394         self.ec.set(self.app3, 'appid', 'Kill#3')
395         self.ec.set(self.app3, 'path', "/usr/bin/test")
396         self.ec.set(self.app3, 'args', "-1")
397         self.ec.set(self.app3, 'env', "DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority")
398
399         self.ec.register_connection(self.iface1, self.channel)
400         self.ec.register_connection(self.node2, self.iface2)
401         self.ec.register_connection(self.iface2, self.channel)
402         self.ec.register_connection(self.app2, self.node2)
403         self.ec.register_connection(self.app3, self.node2)
404
405         self.ec.register_condition(self.app2, ResourceAction.START, self.app1, ResourceState.STARTED , "5s")
406         self.ec.register_condition(self.app3, ResourceAction.START, self.app2, ResourceState.STARTED , "5s")
407         self.ec.register_condition([self.app1, self.app2, self.app3], ResourceAction.STOP, self.app1, ResourceState.STARTED , "15s")
408
409         self.ec.deploy()
410
411         self.ec.wait_finished([self.app1, self.app2, self.app3])
412
413         self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.STOPPED)
414         self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.FAILED)
415         self.assertEquals(self.ec.get_resource(self.app3).state, ResourceState.STOPPED)
416
417         self.ec.shutdown()
418
419         self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
420         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
421         self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
422         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
423         self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
424         self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
425         self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.RELEASED)
426         self.assertEquals(self.ec.get_resource(self.app3).state, ResourceState.RELEASED)
427
428
429     def test_deploy_with_many_app_nc_and_critical(self):
430         self.node2 = self.ec.register_resource("OMFNode")
431         self.ec.set(self.node2, 'hostname', 'omf.plexus.wlab37')
432         self.ec.set(self.node2, 'xmppSlice', "nepi")
433         self.ec.set(self.node2, 'xmppHost', "xmpp-plexus.onelab.eu")
434         self.ec.set(self.node2, 'xmppPort', "5222")
435         self.ec.set(self.node2, 'xmppPassword', "1234")
436
437         self.iface2 = self.ec.register_resource("OMFWifiInterface")
438         self.ec.set(self.iface2, 'alias', "w0")
439         self.ec.set(self.iface2, 'mode', "adhoc")
440         self.ec.set(self.iface2, 'type', "g")
441         self.ec.set(self.iface2, 'essid', "vlcexp")
442         self.ec.set(self.iface2, 'ip', "10.0.0.37")
443         
444         self.channel = self.ec.register_resource("OMFChannel")
445         self.ec.set(self.channel, 'channel', "6")
446         self.ec.set(self.channel, 'xmppSlice', "nepi")
447         self.ec.set(self.channel, 'xmppHost', "xmpp-plexus.onelab.eu")
448         self.ec.set(self.channel, 'xmppPort', "5222")
449         self.ec.set(self.channel, 'xmppPassword', "1234")
450
451         self.app2 = self.ec.register_resource("OMFApplication")
452         self.ec.set(self.app2, "critical", False)
453         self.ec.set(self.app2, 'appid', 'Kill#32')
454
455         self.app3 = self.ec.register_resource("OMFApplication")
456         self.ec.set(self.app3, "critical", False)
457         self.ec.set(self.app3, 'appid', 'Kill#3')
458         self.ec.set(self.app3, 'path', "/usr/bin/test")
459         self.ec.set(self.app3, 'args', "-1")
460         self.ec.set(self.app3, 'env', "DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority")
461
462         self.app4 = self.ec.register_resource("OMFApplication")
463         self.ec.set(self.app4, 'appid', 'Kill#4')
464         self.ec.set(self.app4, 'path', "/usr/bin/test")
465         self.ec.set(self.app4, 'args', "-1")
466         self.ec.set(self.app4, 'env', "DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority")
467
468         self.app5 = self.ec.register_resource("OMFApplication")
469         self.ec.set(self.app5, "critical", False)
470         self.ec.set(self.app5, 'appid', 'Kill#32')
471
472         self.app6 = self.ec.register_resource("OMFApplication")
473         self.ec.set(self.app6, 'appid', 'Kill#6')
474         self.ec.set(self.app6, 'path', "/usr/bin/test")
475         self.ec.set(self.app6, 'args', "-1")
476         self.ec.set(self.app6, 'env', "DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority")
477
478         self.ec.register_connection(self.iface1, self.channel)
479         self.ec.register_connection(self.node2, self.iface2)
480         self.ec.register_connection(self.iface2, self.channel)
481         self.ec.register_connection(self.app2, self.node1)
482         self.ec.register_connection(self.app3, self.node1)
483         self.ec.register_connection(self.app4, self.node2)
484         self.ec.register_connection(self.app5, self.node2)
485         self.ec.register_connection(self.app6, self.node2)
486
487         self.ec.register_condition(self.app2, ResourceAction.START, self.app1, ResourceState.STARTED , "4s")
488         self.ec.register_condition(self.app3, ResourceAction.START, self.app2, ResourceState.STARTED , "4s")
489         self.ec.register_condition(self.app4, ResourceAction.START, self.app1, ResourceState.STARTED , "4s")
490         self.ec.register_condition(self.app5, ResourceAction.START, self.app4, ResourceState.STARTED , "4s")
491         self.ec.register_condition(self.app6, ResourceAction.START, self.app5, ResourceState.STARTED , "4s")
492         self.ec.register_condition([self.app1, self.app2, self.app3, self.app4, self.app5, self.app6 ], ResourceAction.STOP, self.app1, ResourceState.STARTED , "30s")
493
494         self.ec.deploy()
495
496         self.ec.wait_finished([self.app1, self.app2, self.app3, self.app4, self.app5, self.app6])
497
498         self.assertEquals(self.ec.get_resource(self.app3).state, ResourceState.STOPPED)
499         self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.FAILED)
500         self.assertEquals(self.ec.get_resource(self.app3).state, ResourceState.STOPPED)
501         self.assertEquals(self.ec.get_resource(self.app3).state, ResourceState.STOPPED)
502         self.assertEquals(self.ec.get_resource(self.app5).state, ResourceState.FAILED)
503         self.assertEquals(self.ec.get_resource(self.app6).state, ResourceState.STOPPED)
504
505         self.ec.shutdown()
506
507         self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
508         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
509         self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
510         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
511         self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
512         self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
513         self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.RELEASED)
514         self.assertEquals(self.ec.get_resource(self.app3).state, ResourceState.RELEASED)
515         self.assertEquals(self.ec.get_resource(self.app4).state, ResourceState.RELEASED)
516         self.assertEquals(self.ec.get_resource(self.app5).state, ResourceState.RELEASED)
517         self.assertEquals(self.ec.get_resource(self.app6).state, ResourceState.RELEASED)
518
519
520 if __name__ == '__main__':
521     unittest.main()
522
523
524