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