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