d3fbae94397bf47059440f3584836966a40c0d6f
[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         self.ec.register_connection(self.app1, self.node1)
64         self.ec.register_connection(self.node1, self.iface1)
65
66     def test_deploy_wo_node(self):
67         self.node2 = self.ec.register_resource("OMFNode")
68
69         self.iface2 = self.ec.register_resource("OMFWifiInterface")
70         self.ec.set(self.iface2, 'name', "wlan0")
71         self.ec.set(self.iface2, 'mode', "adhoc")
72         self.ec.set(self.iface2, 'hw_mode', "g")
73         self.ec.set(self.iface2, 'essid', "vlcexp")
74         self.ec.set(self.iface2, 'ip', "10.0.0.49/24")
75         
76         self.channel = self.ec.register_resource("OMFChannel")
77         self.ec.set(self.channel, 'channel', "6")
78
79         self.ec.register_connection(self.iface1, self.channel)
80         self.ec.register_connection(self.node2, self.iface2)
81         self.ec.register_connection(self.iface2, self.channel)
82
83         self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED , "2s")
84
85         self.ec.deploy()
86
87         self.ec.wait_finished([self.app1])
88
89         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.FAILED)
90
91         self.ec.shutdown()
92
93         self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
94         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
95         self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
96         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
97         self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
98         self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
99
100     def test_deploy_wo_hostname(self):
101
102         self.node2 = self.ec.register_resource("OMFNode")
103         self.ec.set(self.node2, 'xmppUser', "nepi")
104         self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu")
105         self.ec.set(self.node2, 'xmppPort', "5222")
106         self.ec.set(self.node2, 'xmppPassword', "1234")
107
108         self.iface2 = self.ec.register_resource("OMFWifiInterface")
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("OMFChannel")
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 , "2s")
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
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_wo_iface(self):
140         self.node2 = self.ec.register_resource("OMFNode")
141         self.ec.set(self.node2, 'hostname', 'wlab49')
142         self.ec.set(self.node2, 'xmppUser', "nepi")
143         self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu")
144         self.ec.set(self.node2, 'xmppPort', "5222")
145         self.ec.set(self.node2, 'xmppPassword', "1234")
146
147         self.iface2 = self.ec.register_resource("OMFWifiInterface")
148         
149         self.channel = self.ec.register_resource("OMFChannel")
150         self.ec.set(self.channel, 'channel', "6")
151
152         self.ec.register_connection(self.iface1, self.channel)
153         self.ec.register_connection(self.node2, self.iface2)
154         self.ec.register_connection(self.iface2, self.channel)
155
156         self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED , "2s")
157
158         self.ec.deploy()
159
160         self.ec.wait_finished([self.app1])
161
162         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.FAILED)
163
164         self.ec.shutdown()
165
166         self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
167         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
168         self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
169         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
170         self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
171         self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
172
173     def test_deploy_wo_channel(self):
174         self.node2 = self.ec.register_resource("OMFNode")
175         self.ec.set(self.node2, 'hostname', 'wlab49')
176         self.ec.set(self.node2, 'xmppUser', "nepi")
177         self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu")
178         self.ec.set(self.node2, 'xmppPort', "5222")
179         self.ec.set(self.node2, 'xmppPassword', "1234")
180
181         self.iface2 = self.ec.register_resource("OMFWifiInterface")
182         self.ec.set(self.iface2, 'name', "wlan0")
183         self.ec.set(self.iface2, 'mode', "adhoc")
184         self.ec.set(self.iface2, 'hw_mode', "g")
185         self.ec.set(self.iface2, 'essid', "vlcexp")
186         self.ec.set(self.iface2, 'ip', "10.0.0.49/24")
187
188         self.channel = self.ec.register_resource("OMFChannel")
189
190         self.ec.register_connection(self.iface1, self.channel)
191         self.ec.register_connection(self.node2, self.iface2)
192         self.ec.register_connection(self.iface2, self.channel)
193
194         self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED , "2s")
195         self.ec.deploy()
196
197         self.ec.wait_finished([self.app1])
198
199         self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.FAILED)
200
201         self.ec.shutdown()
202
203         self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
204         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
205         self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
206         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
207         self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
208         self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
209
210     def test_deploy_wo_ip(self):
211         self.node2 = self.ec.register_resource("OMFNode")
212         self.ec.set(self.node2, 'hostname', 'wlab49')
213         self.ec.set(self.node2, 'xmppUser', "nepi")
214         self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu")
215         self.ec.set(self.node2, 'xmppPort', "5222")
216         self.ec.set(self.node2, 'xmppPassword', "1234")
217
218         self.iface2 = self.ec.register_resource("OMFWifiInterface")
219         self.ec.set(self.iface2, 'name', "wlan0")
220         self.ec.set(self.iface2, 'mode', "adhoc")
221         self.ec.set(self.iface2, 'hw_mode', "g")
222         self.ec.set(self.iface2, 'essid', "vlcexp")
223
224         self.channel = self.ec.register_resource("OMFChannel")
225         self.ec.set(self.channel, 'channel', "6")
226
227         self.ec.register_connection(self.iface1, self.channel)
228         self.ec.register_connection(self.node2, self.iface2)
229         self.ec.register_connection(self.iface2, self.channel)
230
231         self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED , "2s")
232
233         self.ec.deploy()
234
235         self.ec.wait_finished([self.app1])
236
237         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.FAILED)
238
239         self.ec.shutdown()
240
241         self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
242         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
243         self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
244         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
245         self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
246         self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
247
248     def test_deploy_wo_app(self):
249         self.node2 = self.ec.register_resource("OMFNode")
250         self.ec.set(self.node2, 'hostname', 'wlab49')
251         self.ec.set(self.node2, 'xmppUser', "nepi")
252         self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu")
253         self.ec.set(self.node2, 'xmppPort', "5222")
254         self.ec.set(self.node2, 'xmppPassword', "1234")
255
256         self.iface2 = self.ec.register_resource("OMFWifiInterface")
257         self.ec.set(self.iface2, 'name', "wlan0")
258         self.ec.set(self.iface2, 'mode', "adhoc")
259         self.ec.set(self.iface2, 'hw_mode', "g")
260         self.ec.set(self.iface2, 'essid', "vlcexp")   
261         self.ec.set(self.iface2, 'ip', "10.0.0.49/24")
262
263         self.channel = self.ec.register_resource("OMFChannel")
264         self.ec.set(self.channel, 'channel', "6")
265
266         self.app2 = self.ec.register_resource("OMFApplication")
267
268         self.ec.register_connection(self.iface1, self.channel)
269         self.ec.register_connection(self.iface2, self.channel)
270         self.ec.register_connection(self.node2, self.iface2)
271         self.ec.register_connection(self.app2, self.node2)
272
273         self.ec.register_condition(self.app2, ResourceAction.START, self.app1, ResourceState.STARTED , "2s")
274         self.ec.register_condition([self.app1, self.app2], ResourceAction.STOP, self.app1, ResourceState.STARTED , "4s")
275
276         self.ec.deploy()
277
278         self.ec.wait_finished([self.app1, self.app2])
279
280         self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.FAILED)
281
282         self.ec.shutdown()
283
284         self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
285         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
286         self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
287         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
288         self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
289         self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
290         self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.RELEASED)
291
292     def test_deploy_wo_app_path(self):
293         self.node2 = self.ec.register_resource("OMFNode")
294         self.ec.set(self.node2, 'hostname', 'wlab49')
295         self.ec.set(self.node2, 'xmppUser', "nepi")
296         self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu")
297         self.ec.set(self.node2, 'xmppPort', "5222")
298         self.ec.set(self.node2, 'xmppPassword', "1234")
299
300         self.iface2 = self.ec.register_resource("OMFWifiInterface")
301         self.ec.set(self.iface2, 'name', "wlan0")
302         self.ec.set(self.iface2, 'mode', "adhoc")
303         self.ec.set(self.iface2, 'hw_mode', "g")
304         self.ec.set(self.iface2, 'essid', "vlcexp")   
305         self.ec.set(self.iface2, 'ip', "10.0.0.49/24")
306
307         self.channel = self.ec.register_resource("OMFChannel")
308         self.ec.set(self.channel, 'channel', "6")
309
310         self.app2 = self.ec.register_resource("OMFApplication")
311         self.ec.set(self.app2, 'appid', 'Vlc#2')
312
313         self.ec.register_connection(self.iface1, self.channel)
314         self.ec.register_connection(self.iface2, self.channel)
315         self.ec.register_connection(self.node2, self.iface2)
316         self.ec.register_connection(self.app2, self.node2)
317
318         self.ec.register_condition(self.app2, ResourceAction.START, self.app1, ResourceState.STARTED , "2s")
319         self.ec.register_condition([self.app1, self.app2], ResourceAction.STOP, self.app1, ResourceState.STARTED , "4s")
320
321         self.ec.deploy()
322
323         self.ec.wait_finished([self.app1, self.app2])
324
325         self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.FAILED)
326
327         self.ec.shutdown()
328
329         self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
330         self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
331         self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
332         self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
333         self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
334         self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
335         self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.RELEASED)
336
337
338 if __name__ == '__main__':
339     unittest.main()
340
341
342