replacing assertEquals into assertEqual
[nepi.git] / test / resources / omf / omf5_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 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, ResourceAction, ResourceState
22 from nepi.execution.ec import ExperimentController
23
24 from nepi.resources.omf.node import OMFNode
25 from nepi.resources.omf.application import OMFApplication
26 from nepi.resources.omf.interface import OMFWifiInterface
27 from nepi.resources.omf.channel import OMFChannel
28 from nepi.resources.omf.omf_api_factory import OMFAPIFactory
29
30 from nepi.util.timefuncs import *
31
32 import time
33 import unittest
34
35 class OMFVLCWrongCaseAllCritical(unittest.TestCase):
36
37     id = 1000
38
39     def setUp(self):
40         self.ec = ExperimentController(exp_id = str(OMFVLCWrongCaseAllCritical.id))
41         OMFVLCWrongCaseAllCritical.id += 1
42
43         self.node1 = self.ec.register_resource("omf::Node")
44         self.ec.set(self.node1, 'hostname', 'omf.plexus.wlab17')
45         self.ec.set(self.node1, 'xmppUser', "nepi")
46         self.ec.set(self.node1, 'xmppServer', "xmpp-plexus.onelab.eu")
47         self.ec.set(self.node1, 'xmppPort', "5222")
48         self.ec.set(self.node1, 'xmppPassword', "1234")
49         self.ec.set(self.node1, 'version', "5")
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.17/24")
57         self.ec.set(self.iface1, 'version', "5")
58
59         self.app1 = self.ec.register_resource("omf::Application")
60         self.ec.set(self.app1, 'appid', 'Vlc#1')
61         self.ec.set(self.app1, 'command', "/opt/vlc-1.1.13/cvlc /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         self.ec.set(self.app1, 'version', "5")
64
65         self.ec.register_connection(self.app1, self.node1)
66         self.ec.register_connection(self.node1, self.iface1)
67
68     def test_deploy_wo_node(self):
69         self.node2 = self.ec.register_resource("omf::Node")
70         self.ec.set(self.node2, 'version', "5")
71
72         self.iface2 = self.ec.register_resource("omf::WifiInterface")
73         self.ec.set(self.iface2, 'name', "wlan0")
74         self.ec.set(self.iface2, 'mode', "adhoc")
75         self.ec.set(self.iface2, 'hw_mode', "g")
76         self.ec.set(self.iface2, 'essid', "vlcexp")
77         self.ec.set(self.iface2, 'ip', "10.0.0.37/24")
78         self.ec.set(self.iface2, 'version', "5")
79         
80         self.channel = self.ec.register_resource("omf::Channel")
81         self.ec.set(self.channel, 'channel', "6")
82         self.ec.set(self.channel, 'xmppUser', "nepi")
83         self.ec.set(self.channel, 'xmppServer', "xmpp-plexus.onelab.eu")
84         self.ec.set(self.channel, 'xmppPort', "5222")
85         self.ec.set(self.channel, 'xmppPassword', "1234")
86         self.ec.set(self.channel, 'version', "5")
87
88         self.ec.register_connection(self.iface1, self.channel)
89         self.ec.register_connection(self.node2, self.iface2)
90         self.ec.register_connection(self.iface2, self.channel)
91
92         self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED , "2s")
93
94         self.ec.deploy()
95
96         self.ec.wait_finished([self.app1])
97
98         self.assertEqual(self.ec.get_resource(self.node2).state, ResourceState.FAILED)
99
100         self.ec.shutdown()
101
102         self.assertEqual(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
103         self.assertEqual(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
104         self.assertEqual(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
105         self.assertEqual(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
106         self.assertEqual(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
107         self.assertEqual(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
108
109     def test_deploy_wo_hostname(self):
110
111         self.node2 = self.ec.register_resource("omf::Node")
112         self.ec.set(self.node2, 'xmppUser', "nepi")
113         self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu")
114         self.ec.set(self.node2, 'xmppPort', "5222")
115         self.ec.set(self.node2, 'xmppPassword', "1234")
116         self.ec.set(self.node2, 'version', "5")
117
118         self.iface2 = self.ec.register_resource("omf::WifiInterface")
119         self.ec.set(self.iface2, 'name', "wlan0")
120         self.ec.set(self.iface2, 'mode', "adhoc")
121         self.ec.set(self.iface2, 'hw_mode', "g")
122         self.ec.set(self.iface2, 'essid', "vlcexp")
123         self.ec.set(self.iface2, 'ip', "10.0.0.37/24")
124         self.ec.set(self.iface2, 'version', "5")
125         
126         self.channel = self.ec.register_resource("omf::Channel")
127         self.ec.set(self.channel, 'channel', "6")
128         self.ec.set(self.channel, 'xmppUser', "nepi")
129         self.ec.set(self.channel, 'xmppServer', "xmpp-plexus.onelab.eu")
130         self.ec.set(self.channel, 'xmppPort', "5222")
131         self.ec.set(self.channel, 'xmppPassword', "1234")
132         self.ec.set(self.channel, 'version', "5")
133
134         self.ec.register_connection(self.iface1, self.channel)
135         self.ec.register_connection(self.node2, self.iface2)
136         self.ec.register_connection(self.iface2, self.channel)
137
138         self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED , "2s")
139
140         self.ec.deploy()
141
142         self.ec.wait_finished([self.app1])
143
144         self.assertEqual(self.ec.get_resource(self.node2).state, ResourceState.FAILED)
145
146         self.ec.shutdown()
147
148         self.assertEqual(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
149         self.assertEqual(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
150         self.assertEqual(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
151         self.assertEqual(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
152         self.assertEqual(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
153         self.assertEqual(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
154
155     def test_deploy_wo_iface(self):
156         self.node2 = self.ec.register_resource("omf::Node")
157         self.ec.set(self.node2, 'hostname', 'omf.plexus.wlab17')
158         self.ec.set(self.node2, 'xmppUser', "nepi")
159         self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu")
160         self.ec.set(self.node2, 'xmppPort', "5222")
161         self.ec.set(self.node2, 'xmppPassword', "1234")
162         self.ec.set(self.node2, 'version', "5")
163
164         self.iface2 = self.ec.register_resource("omf::WifiInterface")
165         self.ec.set(self.iface2, 'version', "5")
166         
167         self.channel = self.ec.register_resource("omf::Channel")
168         self.ec.set(self.channel, 'channel', "6")
169         self.ec.set(self.channel, 'xmppUser', "nepi")
170         self.ec.set(self.channel, 'xmppServer', "xmpp-plexus.onelab.eu")
171         self.ec.set(self.channel, 'xmppPort', "5222")
172         self.ec.set(self.channel, 'xmppPassword', "1234")
173         self.ec.set(self.channel, 'version', "5")
174
175         self.ec.register_connection(self.iface1, self.channel)
176         self.ec.register_connection(self.node2, self.iface2)
177         self.ec.register_connection(self.iface2, self.channel)
178
179         self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED , "2s")
180
181         self.ec.deploy()
182
183         self.ec.wait_finished([self.app1])
184
185         self.assertEqual(self.ec.get_resource(self.iface2).state, ResourceState.FAILED)
186
187         self.ec.shutdown()
188
189         self.assertEqual(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
190         self.assertEqual(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
191         self.assertEqual(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
192         self.assertEqual(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
193         self.assertEqual(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
194         self.assertEqual(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
195
196     def test_deploy_wo_ip(self):
197         self.node2 = self.ec.register_resource("omf::Node")
198         self.ec.set(self.node2, 'hostname', 'omf.plexus.wlab17')
199         self.ec.set(self.node2, 'xmppUser', "nepi")
200         self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu")
201         self.ec.set(self.node2, 'xmppPort', "5222")
202         self.ec.set(self.node2, 'xmppPassword', "1234")
203         self.ec.set(self.node2, 'version', "5")
204
205         self.iface2 = self.ec.register_resource("omf::WifiInterface")
206         self.ec.set(self.iface2, 'name', "wlan0")
207         self.ec.set(self.iface2, 'mode', "adhoc")
208         self.ec.set(self.iface2, 'hw_mode', "g")
209         self.ec.set(self.iface2, 'essid', "vlcexp")
210         self.ec.set(self.iface2, 'version', "5")
211
212         self.channel = self.ec.register_resource("omf::Channel")
213         self.ec.set(self.channel, 'channel', "6")
214         self.ec.set(self.channel, 'xmppUser', "nepi")
215         self.ec.set(self.channel, 'xmppServer', "xmpp-plexus.onelab.eu")
216         self.ec.set(self.channel, 'xmppPort', "5222")
217         self.ec.set(self.channel, 'xmppPassword', "1234")
218         self.ec.set(self.channel, 'version', "5")
219
220         self.ec.register_connection(self.iface1, self.channel)
221         self.ec.register_connection(self.node2, self.iface2)
222         self.ec.register_connection(self.iface2, self.channel)
223
224         self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED , "2s")
225
226         self.ec.deploy()
227
228         self.ec.wait_finished([self.app1])
229
230         self.assertEqual(self.ec.get_resource(self.iface2).state, ResourceState.FAILED)
231
232         self.ec.shutdown()
233
234         self.assertEqual(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
235         self.assertEqual(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
236         self.assertEqual(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
237         self.assertEqual(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
238         self.assertEqual(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
239         self.assertEqual(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
240
241     def test_deploy_wo_channel(self):
242         self.node2 = self.ec.register_resource("omf::Node")
243         self.ec.set(self.node2, 'hostname', 'omf.plexus.wlab17')
244         self.ec.set(self.node2, 'xmppUser', "nepi")
245         self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu")
246         self.ec.set(self.node2, 'xmppPort', "5222")
247         self.ec.set(self.node2, 'xmppPassword', "1234")
248         self.ec.set(self.node2, 'version', "5")
249
250         self.iface2 = self.ec.register_resource("omf::WifiInterface")
251         self.ec.set(self.iface2, 'name', "wlan0")
252         self.ec.set(self.iface2, 'mode', "adhoc")
253         self.ec.set(self.iface2, 'hw_mode', "g")
254         self.ec.set(self.iface2, 'essid', "vlcexp")
255         self.ec.set(self.iface2, 'version', "5")
256
257         self.channel = self.ec.register_resource("omf::Channel")
258         self.ec.set(self.channel, 'version', "5")
259
260         self.ec.register_connection(self.iface1, self.channel)
261         self.ec.register_connection(self.node2, self.iface2)
262         self.ec.register_connection(self.iface2, self.channel)
263
264         self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED , "2s")
265
266         self.ec.deploy()
267
268         self.ec.wait_finished([self.app1])
269
270         self.assertEqual(self.ec.get_resource(self.channel).state, ResourceState.FAILED)
271
272         self.ec.shutdown()
273
274         self.assertEqual(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
275         self.assertEqual(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
276         self.assertEqual(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
277         self.assertEqual(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
278         self.assertEqual(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
279         self.assertEqual(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
280
281     def test_deploy_wo_app(self):
282         self.node2 = self.ec.register_resource("omf::Node")
283         self.ec.set(self.node2, 'hostname', 'omf.plexus.wlab17')
284         self.ec.set(self.node2, 'xmppUser', "nepi")
285         self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu")
286         self.ec.set(self.node2, 'xmppPort', "5222")
287         self.ec.set(self.node2, 'xmppPassword', "1234")
288         self.ec.set(self.node2, 'version', "5")
289
290         self.iface2 = self.ec.register_resource("omf::WifiInterface")
291         self.ec.set(self.iface2, 'name', "wlan0")
292         self.ec.set(self.iface2, 'mode', "adhoc")
293         self.ec.set(self.iface2, 'hw_mode', "g")
294         self.ec.set(self.iface2, 'essid', "vlcexp")   
295         self.ec.set(self.iface2, 'ip', "10.0.0.37/24")
296         self.ec.set(self.iface2, 'version', "5")
297
298         self.channel = self.ec.register_resource("omf::Channel")
299         self.ec.set(self.channel, 'channel', "6")
300         self.ec.set(self.channel, 'xmppUser', "nepi")
301         self.ec.set(self.channel, 'xmppServer', "xmpp-plexus.onelab.eu")
302         self.ec.set(self.channel, 'xmppPort', "5222")
303         self.ec.set(self.channel, 'xmppPassword', "1234")
304         self.ec.set(self.channel, 'version', "5")
305
306         self.app2 = self.ec.register_resource("omf::Application")
307         self.ec.set(self.app2, 'version', "5")
308
309         self.ec.register_connection(self.iface1, self.channel)
310         self.ec.register_connection(self.iface2, self.channel)
311         self.ec.register_connection(self.node2, self.iface2)
312         self.ec.register_connection(self.app2, self.node2)
313
314         self.ec.register_condition(self.app2, ResourceAction.START, self.app1, ResourceState.STARTED , "2s")
315         self.ec.register_condition([self.app1, self.app2], ResourceAction.STOP, self.app1, ResourceState.STARTED , "4s")
316
317         self.ec.deploy()
318
319         self.ec.wait_finished([self.app1, self.app2])
320
321         self.assertEqual(self.ec.get_resource(self.app2).state, ResourceState.FAILED)
322
323         self.ec.shutdown()
324
325         self.assertEqual(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
326         self.assertEqual(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
327         self.assertEqual(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
328         self.assertEqual(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
329         self.assertEqual(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
330         self.assertEqual(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
331         self.assertEqual(self.ec.get_resource(self.app2).state, ResourceState.RELEASED)
332
333     def test_deploy_wo_app_path(self):
334         self.node2 = self.ec.register_resource("omf::Node")
335         self.ec.set(self.node2, 'hostname', 'omf.plexus.wlab17')
336         self.ec.set(self.node2, 'xmppUser', "nepi")
337         self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu")
338         self.ec.set(self.node2, 'xmppPort', "5222")
339         self.ec.set(self.node2, 'xmppPassword', "1234")
340         self.ec.set(self.node2, 'version', "5")
341
342         self.iface2 = self.ec.register_resource("omf::WifiInterface")
343         self.ec.set(self.iface2, 'name', "wlan0")
344         self.ec.set(self.iface2, 'mode', "adhoc")
345         self.ec.set(self.iface2, 'hw_mode', "g")
346         self.ec.set(self.iface2, 'essid', "vlcexp")   
347         self.ec.set(self.iface2, 'ip', "10.0.0.37/24")
348         self.ec.set(self.iface2, 'version', "5")
349
350         self.channel = self.ec.register_resource("omf::Channel")
351         self.ec.set(self.channel, 'channel', "6")
352         self.ec.set(self.channel, 'xmppUser', "nepi")
353         self.ec.set(self.channel, 'xmppServer', "xmpp-plexus.onelab.eu")
354         self.ec.set(self.channel, 'xmppPort', "5222")
355         self.ec.set(self.channel, 'xmppPassword', "1234")
356         self.ec.set(self.channel, 'version', "5")
357
358         self.app2 = self.ec.register_resource("omf::Application")
359         self.ec.set(self.app2, 'appid', 'Vlc#2')
360         self.ec.set(self.app2, 'version', "5")
361
362         self.ec.register_connection(self.iface1, self.channel)
363         self.ec.register_connection(self.iface2, self.channel)
364         self.ec.register_connection(self.node2, self.iface2)
365         self.ec.register_connection(self.app2, self.node2)
366
367         self.ec.register_condition(self.app2, ResourceAction.START, self.app1, ResourceState.STARTED , "2s")
368         self.ec.register_condition([self.app1, self.app2], ResourceAction.STOP, self.app1, ResourceState.STARTED , "4s")
369
370         self.ec.deploy()
371
372         self.ec.wait_finished([self.app1, self.app2])
373
374         self.assertEqual(self.ec.get_resource(self.app2).state, ResourceState.FAILED)
375
376         self.ec.shutdown()
377
378         self.assertEqual(self.ec.get_resource(self.node1).state, ResourceState.RELEASED)
379         self.assertEqual(self.ec.get_resource(self.node2).state, ResourceState.RELEASED)
380         self.assertEqual(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED)
381         self.assertEqual(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED)
382         self.assertEqual(self.ec.get_resource(self.channel).state, ResourceState.RELEASED)
383         self.assertEqual(self.ec.get_resource(self.app1).state, ResourceState.RELEASED)
384         self.assertEqual(self.ec.get_resource(self.app2).state, ResourceState.RELEASED)
385
386
387 if __name__ == '__main__':
388     unittest.main()
389
390
391