6bb271f9c5ce7981368d0ee2209a07ac813f54d2
[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 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, \
22         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', '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("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.12/24")
57
58         self.app1 = self.ec.register_resource("omf::Application")
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("omf::Node")
68         self.ec.set(self.node2, "critical", False)
69
70         self.iface2 = self.ec.register_resource("omf::WifiInterface")
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("omf::Channel")
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("omf::Node")
104         self.ec.set(self.node2, "critical", False)
105
106         self.iface2 = self.ec.register_resource("omf::WifiInterface")
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("omf::Channel")
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("omf::Node")
141         self.ec.set(self.node2, "critical", False)
142         self.ec.set(self.node2, 'hostname', 'wlab49')
143
144         self.iface2 = self.ec.register_resource("omf::WifiInterface")
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("omf::Channel")
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("omf::Node")
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("omf::WifiInterface")
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("omf::Channel")
194         self.ec.set(self.channel, 'channel', "6")
195
196         self.app2 = self.ec.register_resource("omf::Application")
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("omf::Node")
227         self.ec.set(self.node2, "critical", False)
228         self.ec.set(self.node2, 'hostname', 'wlab49')
229
230         self.iface2 = self.ec.register_resource("omf::WifiInterface")
231         self.ec.set(self.iface2, "critical", False)
232         
233         self.channel = self.ec.register_resource("omf::Channel")
234         self.ec.set(self.channel, "critical", False)
235         self.ec.set(self.channel, 'channel', "6")
236
237         self.app2 = self.ec.register_resource("omf::Application")
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("omf::Node")
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("omf::WifiInterface")
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("omf::Application")
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("omf::Node")
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("omf::WifiInterface")
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("omf::Channel")
311         self.ec.set(self.channel, 'channel', "6")
312
313         self.app2 = self.ec.register_resource("omf::Application")
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("omf::Application")
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("omf::Node")
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("omf::WifiInterface")
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("omf::Channel")
364         self.ec.set(self.channel, 'channel', "6")
365
366         self.app2 = self.ec.register_resource("omf::Application")
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("omf::Application")
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("omf::Node")
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("omf::WifiInterface")
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("omf::Channel")
420         self.ec.set(self.channel, 'channel', "6")
421
422         self.app2 = self.ec.register_resource("omf::Application")
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("omf::Application")
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("omf::Application")
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("omf::Application")
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("omf::Application")
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