last modifications for OMF6 before test
[nepi.git] / test / resources / omf / vlc_wrong_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 OMFVLCWrongCaseAllCritical(unittest.TestCase):
37
38     id = 1000
39
40     def setUp(self):
41         self.ec = ExperimentController(exp_id = str(OMFVLCWrongCaseAllCritical.id))
42         OMFVLCWrongCaseAllCritical.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', 'Vlc#1')
60         self.ec.set(self.app1, 'path', "/opt/vlc-1.1.13/cvlc")
61         self.ec.set(self.app1, 'args', "/opt/10-by-p0d.avi --sout '#rtp{dst=10.0.0.37,port=1234,mux=ts}'")
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_wo_node(self):
68         self.node2 = self.ec.register_resource("OMFNode")
69
70         self.iface2 = self.ec.register_resource("OMFWifiInterface")
71         self.ec.set(self.iface2, 'alias', "w0")
72         self.ec.set(self.iface2, 'mode', "adhoc")
73         self.ec.set(self.iface2, 'type', "g")
74         self.ec.set(self.iface2, 'essid', "vlcexp")
75         self.ec.set(self.iface2, 'ip', "10.0.0.37")
76         
77         self.channel = self.ec.register_resource("OMFChannel")
78         self.ec.set(self.channel, 'channel', "6")
79         self.ec.set(self.channel, 'xmppSlice', "nepi")
80         self.ec.set(self.channel, 'xmppHost', "xmpp-plexus.onelab.eu")
81         self.ec.set(self.channel, 'xmppPort', "5222")
82         self.ec.set(self.channel, 'xmppPassword', "1234")
83
84         self.ec.register_connection(self.iface1, self.channel)
85         self.ec.register_connection(self.node2, self.iface2)
86         self.ec.register_connection(self.iface2, self.channel)
87
88         self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED , "2s")
89
90         self.ec.deploy()
91
92         self.ec.wait_finished([self.app1])
93
94         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.FAILED)
95
96         self.ec.shutdown()
97
98         self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
99         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
100         self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
101         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
102         self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
103         self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
104
105     def test_deploy_wo_hostname(self):
106
107         self.node2 = self.ec.register_resource("OMFNode")
108         self.ec.set(self.node2, 'xmppSlice', "nepi")
109         self.ec.set(self.node2, 'xmppHost', "xmpp-plexus.onelab.eu")
110         self.ec.set(self.node2, 'xmppPort', "5222")
111         self.ec.set(self.node2, 'xmppPassword', "1234")
112
113         self.iface2 = self.ec.register_resource("OMFWifiInterface")
114         self.ec.set(self.iface2, 'alias', "w0")
115         self.ec.set(self.iface2, 'mode', "adhoc")
116         self.ec.set(self.iface2, 'type', "g")
117         self.ec.set(self.iface2, 'essid', "vlcexp")
118         self.ec.set(self.iface2, 'ip', "10.0.0.37")
119         
120         self.channel = self.ec.register_resource("OMFChannel")
121         self.ec.set(self.channel, 'channel', "6")
122         self.ec.set(self.channel, 'xmppSlice', "nepi")
123         self.ec.set(self.channel, 'xmppHost', "xmpp-plexus.onelab.eu")
124         self.ec.set(self.channel, 'xmppPort', "5222")
125         self.ec.set(self.channel, 'xmppPassword', "1234")
126
127         self.ec.register_connection(self.iface1, self.channel)
128         self.ec.register_connection(self.node2, self.iface2)
129
130         self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED , "2s")
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
138         self.ec.shutdown()
139
140         self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
141         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
142         self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
143         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
144         self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
145         self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
146
147     def test_deploy_wo_iface(self):
148         self.node2 = self.ec.register_resource("OMFNode")
149         self.ec.set(self.node2, 'hostname', 'omf.plexus.wlab17')
150         self.ec.set(self.node2, 'xmppSlice', "nepi")
151         self.ec.set(self.node2, 'xmppHost', "xmpp-plexus.onelab.eu")
152         self.ec.set(self.node2, 'xmppPort', "5222")
153         self.ec.set(self.node2, 'xmppPassword', "1234")
154
155         self.iface2 = self.ec.register_resource("OMFWifiInterface")
156         
157         self.channel = self.ec.register_resource("OMFChannel")
158         self.ec.set(self.channel, 'channel', "6")
159         self.ec.set(self.channel, 'xmppSlice', "nepi")
160         self.ec.set(self.channel, 'xmppHost', "xmpp-plexus.onelab.eu")
161         self.ec.set(self.channel, 'xmppPort', "5222")
162         self.ec.set(self.channel, 'xmppPassword', "1234")
163
164         self.ec.register_connection(self.iface1, self.channel)
165         self.ec.register_connection(self.node2, self.iface2)
166
167         self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED , "2s")
168
169         self.ec.deploy()
170
171         self.ec.wait_finished([self.app1])
172
173         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.FAILED)
174
175         self.ec.shutdown()
176
177         self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
178         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
179         self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
180         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
181         self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
182         self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
183
184     def test_deploy_wo_ip(self):
185         self.node2 = self.ec.register_resource("OMFNode")
186         self.ec.set(self.node2, 'hostname', 'omf.plexus.wlab17')
187         self.ec.set(self.node2, 'xmppSlice', "nepi")
188         self.ec.set(self.node2, 'xmppHost', "xmpp-plexus.onelab.eu")
189         self.ec.set(self.node2, 'xmppPort', "5222")
190         self.ec.set(self.node2, 'xmppPassword', "1234")
191
192         self.iface2 = self.ec.register_resource("OMFWifiInterface")
193         self.ec.set(self.iface2, 'alias', "w0")
194         self.ec.set(self.iface2, 'mode', "adhoc")
195         self.ec.set(self.iface2, 'type', "g")
196         self.ec.set(self.iface2, 'essid', "vlcexp")     
197
198         self.channel = self.ec.register_resource("OMFChannel")
199         self.ec.set(self.channel, 'channel', "6")
200         self.ec.set(self.channel, 'xmppSlice', "nepi")
201         self.ec.set(self.channel, 'xmppHost', "xmpp-plexus.onelab.eu")
202         self.ec.set(self.channel, 'xmppPort', "5222")
203         self.ec.set(self.channel, 'xmppPassword', "1234")
204
205         self.ec.register_connection(self.iface1, self.channel)
206         self.ec.register_connection(self.node2, self.iface2)
207
208         self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED , "2s")
209
210         self.ec.deploy()
211
212         self.ec.wait_finished([self.app1])
213
214         self.assertEquals(self.ec.get_resource(self.iface2).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
225     def test_deploy_wo_app(self):
226         self.node2 = self.ec.register_resource("OMFNode")
227         self.ec.set(self.node2, 'hostname', 'omf.plexus.wlab17')
228         self.ec.set(self.node2, 'xmppSlice', "nepi")
229         self.ec.set(self.node2, 'xmppHost', "xmpp-plexus.onelab.eu")
230         self.ec.set(self.node2, 'xmppPort', "5222")
231         self.ec.set(self.node2, 'xmppPassword', "1234")
232
233         self.iface2 = self.ec.register_resource("OMFWifiInterface")
234         self.ec.set(self.iface2, 'alias', "w0")
235         self.ec.set(self.iface2, 'mode', "adhoc")
236         self.ec.set(self.iface2, 'type', "g")
237         self.ec.set(self.iface2, 'essid', "vlcexp")   
238         self.ec.set(self.iface2, 'ip', "10.0.0.37")  
239
240         self.channel = self.ec.register_resource("OMFChannel")
241         self.ec.set(self.channel, 'channel', "6")
242         self.ec.set(self.channel, 'xmppSlice', "nepi")
243         self.ec.set(self.channel, 'xmppHost', "xmpp-plexus.onelab.eu")
244         self.ec.set(self.channel, 'xmppPort', "5222")
245         self.ec.set(self.channel, 'xmppPassword', "1234")
246
247         self.app2 = self.ec.register_resource("OMFApplication")
248
249         self.ec.register_connection(self.iface1, self.channel)
250         self.ec.register_connection(self.iface2, self.channel)
251         self.ec.register_connection(self.node2, self.iface2)
252         self.ec.register_connection(self.app2, self.node2)
253
254         self.ec.register_condition(self.app2, ResourceAction.START, self.app1, ResourceState.STARTED , "2s")
255         self.ec.register_condition([self.app1, self.app2], ResourceAction.STOP, self.app1, ResourceState.STARTED , "4s")
256
257         self.ec.deploy()
258
259         self.ec.wait_finished([self.app1, self.app2])
260
261         self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.FAILED)
262
263         self.ec.shutdown()
264
265         self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
266         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
267         self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
268         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
269         self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
270         self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
271         self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.RELEASED)
272
273     def test_deploy_wo_app_path(self):
274         self.node2 = self.ec.register_resource("OMFNode")
275         self.ec.set(self.node2, 'hostname', 'omf.plexus.wlab17')
276         self.ec.set(self.node2, 'xmppSlice', "nepi")
277         self.ec.set(self.node2, 'xmppHost', "xmpp-plexus.onelab.eu")
278         self.ec.set(self.node2, 'xmppPort', "5222")
279         self.ec.set(self.node2, 'xmppPassword', "1234")
280
281         self.iface2 = self.ec.register_resource("OMFWifiInterface")
282         self.ec.set(self.iface2, 'alias', "w0")
283         self.ec.set(self.iface2, 'mode', "adhoc")
284         self.ec.set(self.iface2, 'type', "g")
285         self.ec.set(self.iface2, 'essid', "vlcexp")   
286         self.ec.set(self.iface2, 'ip', "10.0.0.37")  
287
288         self.channel = self.ec.register_resource("OMFChannel")
289         self.ec.set(self.channel, 'channel', "6")
290         self.ec.set(self.channel, 'xmppSlice', "nepi")
291         self.ec.set(self.channel, 'xmppHost', "xmpp-plexus.onelab.eu")
292         self.ec.set(self.channel, 'xmppPort', "5222")
293         self.ec.set(self.channel, 'xmppPassword', "1234")
294
295         self.app2 = self.ec.register_resource("OMFApplication")
296         self.ec.set(self.app2, 'appid', 'Vlc#2')
297
298         self.ec.register_connection(self.iface1, self.channel)
299         self.ec.register_connection(self.iface2, self.channel)
300         self.ec.register_connection(self.node2, self.iface2)
301         self.ec.register_connection(self.app2, self.node2)
302
303         self.ec.register_condition(self.app2, ResourceAction.START, self.app1, ResourceState.STARTED , "2s")
304         self.ec.register_condition([self.app1, self.app2], ResourceAction.STOP, self.app1, ResourceState.STARTED , "4s")
305
306         self.ec.deploy()
307
308         self.ec.wait_finished([self.app1, self.app2])
309
310         self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.FAILED)
311
312         self.ec.shutdown()
313
314         self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
315         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
316         self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
317         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
318         self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
319         self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
320         self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.RELEASED)
321
322
323 if __name__ == '__main__':
324     unittest.main()
325
326
327