update test and examples for OMF6 in OMF section
[nepi.git] / test / resources / omf / omf6_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_factory 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', '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', 'Vlc#1')
60         self.ec.set(self.app1, 'command', "/opt/vlc-1.1.13/cvlc /opt/10-by-p0d.avi --sout '#rtp{dst=10.0.0.49,port=1234,mux=ts}'")
61         self.ec.set(self.app1, 'env', "DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority")
62
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, '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 , "2s")
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
92         self.ec.shutdown()
93
94         self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
95         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
96         self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
97         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
98         self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
99         self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
100
101     def test_deploy_wo_hostname(self):
102
103         self.node2 = self.ec.register_resource("OMFNode")
104         self.ec.set(self.node2, 'xmppUser', "nepi")
105         self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu")
106         self.ec.set(self.node2, 'xmppPort', "5222")
107         self.ec.set(self.node2, 'xmppPassword', "1234")
108
109         self.iface2 = self.ec.register_resource("OMFWifiInterface")
110         self.ec.set(self.iface2, 'name', "wlan0")
111         self.ec.set(self.iface2, 'mode', "adhoc")
112         self.ec.set(self.iface2, 'hw_mode', "g")
113         self.ec.set(self.iface2, 'essid', "vlcexp")
114         self.ec.set(self.iface2, 'ip', "10.0.0.49/24")
115         
116         self.channel = self.ec.register_resource("OMFChannel")
117         self.ec.set(self.channel, 'channel', "6")
118
119         self.ec.register_connection(self.iface1, self.channel)
120         self.ec.register_connection(self.node2, self.iface2)
121         self.ec.register_connection(self.iface2, self.channel)
122
123         self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED , "2s")
124
125         self.ec.deploy()
126
127         self.ec.wait_finished([self.app1])
128
129         self.assertEquals(self.ec.get_resource(self.node2).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_wo_iface(self):
141         self.node2 = self.ec.register_resource("OMFNode")
142         self.ec.set(self.node2, 'hostname', 'wlab49')
143         self.ec.set(self.node2, 'xmppUser', "nepi")
144         self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu")
145         self.ec.set(self.node2, 'xmppPort', "5222")
146         self.ec.set(self.node2, 'xmppPassword', "1234")
147
148         self.iface2 = self.ec.register_resource("OMFWifiInterface")
149         
150         self.channel = self.ec.register_resource("OMFChannel")
151         self.ec.set(self.channel, 'channel', "6")
152
153         self.ec.register_connection(self.iface1, self.channel)
154         self.ec.register_connection(self.node2, self.iface2)
155         self.ec.register_connection(self.iface2, self.channel)
156
157         self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED , "2s")
158
159         self.ec.deploy()
160
161         self.ec.wait_finished([self.app1])
162
163         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.FAILED)
164
165         self.ec.shutdown()
166
167         self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
168         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
169         self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
170         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
171         self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
172         self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
173
174     def test_deploy_wo_channel(self):
175         self.node2 = self.ec.register_resource("OMFNode")
176         self.ec.set(self.node2, 'hostname', 'wlab49')
177         self.ec.set(self.node2, 'xmppUser', "nepi")
178         self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu")
179         self.ec.set(self.node2, 'xmppPort', "5222")
180         self.ec.set(self.node2, 'xmppPassword', "1234")
181
182         self.iface2 = self.ec.register_resource("OMFWifiInterface")
183         self.ec.set(self.iface2, 'name', "wlan0")
184         self.ec.set(self.iface2, 'mode', "adhoc")
185         self.ec.set(self.iface2, 'hw_mode', "g")
186         self.ec.set(self.iface2, 'essid', "vlcexp")
187         self.ec.set(self.iface2, 'ip', "10.0.0.49/24")
188
189         self.channel = self.ec.register_resource("OMFChannel")
190
191         self.ec.register_connection(self.iface1, self.channel)
192         self.ec.register_connection(self.node2, self.iface2)
193         self.ec.register_connection(self.iface2, self.channel)
194
195         self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED , "2s")
196         self.ec.deploy()
197
198         self.ec.wait_finished([self.app1])
199
200         self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.FAILED)
201
202         self.ec.shutdown()
203
204         self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
205         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
206         self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
207         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
208         self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
209         self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
210
211     def test_deploy_wo_ip(self):
212         self.node2 = self.ec.register_resource("OMFNode")
213         self.ec.set(self.node2, 'hostname', 'wlab49')
214         self.ec.set(self.node2, 'xmppUser', "nepi")
215         self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu")
216         self.ec.set(self.node2, 'xmppPort', "5222")
217         self.ec.set(self.node2, 'xmppPassword', "1234")
218
219         self.iface2 = self.ec.register_resource("OMFWifiInterface")
220         self.ec.set(self.iface2, 'name', "wlan0")
221         self.ec.set(self.iface2, 'mode', "adhoc")
222         self.ec.set(self.iface2, 'hw_mode', "g")
223         self.ec.set(self.iface2, 'essid', "vlcexp")
224
225         self.channel = self.ec.register_resource("OMFChannel")
226         self.ec.set(self.channel, 'channel', "6")
227
228         self.ec.register_connection(self.iface1, self.channel)
229         self.ec.register_connection(self.node2, self.iface2)
230         self.ec.register_connection(self.iface2, self.channel)
231
232         self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED , "2s")
233
234         self.ec.deploy()
235
236         self.ec.wait_finished([self.app1])
237
238         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.FAILED)
239
240         self.ec.shutdown()
241
242         self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
243         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
244         self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
245         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
246         self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
247         self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
248
249     def test_deploy_wo_app(self):
250         self.node2 = self.ec.register_resource("OMFNode")
251         self.ec.set(self.node2, 'hostname', 'wlab49')
252         self.ec.set(self.node2, 'xmppUser', "nepi")
253         self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu")
254         self.ec.set(self.node2, 'xmppPort', "5222")
255         self.ec.set(self.node2, 'xmppPassword', "1234")
256
257         self.iface2 = self.ec.register_resource("OMFWifiInterface")
258         self.ec.set(self.iface2, 'name', "wlan0")
259         self.ec.set(self.iface2, 'mode', "adhoc")
260         self.ec.set(self.iface2, 'hw_mode', "g")
261         self.ec.set(self.iface2, 'essid', "vlcexp")   
262         self.ec.set(self.iface2, 'ip', "10.0.0.49/24")
263
264         self.channel = self.ec.register_resource("OMFChannel")
265         self.ec.set(self.channel, 'channel', "6")
266
267         self.app2 = self.ec.register_resource("OMFApplication")
268
269         self.ec.register_connection(self.iface1, self.channel)
270         self.ec.register_connection(self.iface2, self.channel)
271         self.ec.register_connection(self.node2, self.iface2)
272         self.ec.register_connection(self.app2, self.node2)
273
274         self.ec.register_condition(self.app2, ResourceAction.START, self.app1, ResourceState.STARTED , "2s")
275         self.ec.register_condition([self.app1, self.app2], ResourceAction.STOP, self.app1, ResourceState.STARTED , "4s")
276
277         self.ec.deploy()
278
279         self.ec.wait_finished([self.app1, self.app2])
280
281         self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.FAILED)
282
283         self.ec.shutdown()
284
285         self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
286         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
287         self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
288         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
289         self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
290         self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
291         self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.RELEASED)
292
293     def test_deploy_wo_app_path(self):
294         self.node2 = self.ec.register_resource("OMFNode")
295         self.ec.set(self.node2, 'hostname', 'wlab49')
296         self.ec.set(self.node2, 'xmppUser', "nepi")
297         self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu")
298         self.ec.set(self.node2, 'xmppPort', "5222")
299         self.ec.set(self.node2, 'xmppPassword', "1234")
300
301         self.iface2 = self.ec.register_resource("OMFWifiInterface")
302         self.ec.set(self.iface2, 'name', "wlan0")
303         self.ec.set(self.iface2, 'mode', "adhoc")
304         self.ec.set(self.iface2, 'hw_mode', "g")
305         self.ec.set(self.iface2, 'essid', "vlcexp")   
306         self.ec.set(self.iface2, 'ip', "10.0.0.49/24")
307
308         self.channel = self.ec.register_resource("OMFChannel")
309         self.ec.set(self.channel, 'channel', "6")
310
311         self.app2 = self.ec.register_resource("OMFApplication")
312         self.ec.set(self.app2, 'appid', 'Vlc#2')
313
314         self.ec.register_connection(self.iface1, self.channel)
315         self.ec.register_connection(self.iface2, self.channel)
316         self.ec.register_connection(self.node2, self.iface2)
317         self.ec.register_connection(self.app2, self.node2)
318
319         self.ec.register_condition(self.app2, ResourceAction.START, self.app1, ResourceState.STARTED , "2s")
320         self.ec.register_condition([self.app1, self.app2], ResourceAction.STOP, self.app1, ResourceState.STARTED , "4s")
321
322         self.ec.deploy()
323
324         self.ec.wait_finished([self.app1, self.app2])
325
326         self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.FAILED)
327
328         self.ec.shutdown()
329
330         self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
331         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
332         self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
333         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
334         self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
335         self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
336         self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.RELEASED)
337
338
339 if __name__ == '__main__':
340     unittest.main()
341
342
343