Debug the deploy part and start with condition
[nepi.git] / test / resources / omf / omf_vlc_exp.py
1 #!/usr/bin/env python
2 from neco.execution.resource import ResourceFactory, ResourceManager, ResourceAction, ResourceState
3 from neco.execution.ec import ExperimentController
4
5 from neco.resources.omf.omf_node import OMFNode
6 from neco.resources.omf.omf_application import OMFApplication
7 from neco.resources.omf.omf_interface import OMFWifiInterface
8 from neco.resources.omf.omf_channel import OMFChannel
9 from neco.resources.omf.omf_api import OMFAPIFactory
10
11 from neco.util import guid
12
13 import time
14 import unittest
15 import logging
16
17 logging.basicConfig()
18
19
20 class DummyEC(ExperimentController):
21     pass
22
23 class DummyRM(ResourceManager):
24     pass
25
26
27 class OMFResourceFactoryTestCase(unittest.TestCase):
28
29     def test_creation_phase(self):
30         ResourceFactory.register_type(OMFNode)
31         ResourceFactory.register_type(OMFWifiInterface)
32         ResourceFactory.register_type(OMFChannel)
33         ResourceFactory.register_type(OMFApplication)
34
35         self.assertEquals(OMFNode.rtype(), "OMFNode")
36         self.assertEquals(len(OMFNode._attributes), 7)
37
38         self.assertEquals(OMFWifiInterface.rtype(), "OMFWifiInterface")
39         self.assertEquals(len(OMFWifiInterface._attributes), 9)
40
41         self.assertEquals(OMFChannel.rtype(), "OMFChannel")
42         self.assertEquals(len(OMFChannel._attributes), 5)
43
44         self.assertEquals(OMFApplication.rtype(), "OMFApplication")
45         self.assertEquals(len(OMFApplication._attributes), 8)
46
47         self.assertEquals(len(ResourceFactory.resource_types()), 4)
48
49
50 class OMFVLCTestCase(unittest.TestCase):
51
52     def setUp(self):
53         self.ec = DummyEC()
54         ResourceFactory.register_type(OMFNode)
55         ResourceFactory.register_type(OMFWifiInterface)
56         ResourceFactory.register_type(OMFChannel)
57         ResourceFactory.register_type(OMFApplication)
58
59     def tearDown(self):
60         self.ec.shutdown()
61
62     def test_creation_and_configuration_node(self):
63
64         node1 = self.ec.register_resource("OMFNode")
65         self.ec.set(node1, 'hostname', 'omf.plexus.wlab17')
66         self.ec.set(node1, 'xmppSlice', "nepi")
67         self.ec.set(node1, 'xmppHost', "xmpp-plexus.onelab.eu")
68         self.ec.set(node1, 'xmppPort', "5222")
69         self.ec.set(node1, 'xmppPassword', "1234")
70
71         self.assertEquals(self.ec.get(node1, 'hostname'), 'omf.plexus.wlab17')
72         self.assertEquals(self.ec.get(node1, 'xmppSlice'), 'nepi')
73         self.assertEquals(self.ec.get(node1, 'xmppHost'), 'xmpp-plexus.onelab.eu')
74         self.assertEquals(self.ec.get(node1, 'xmppPort'), '5222')
75         self.assertEquals(self.ec.get(node1, 'xmppPassword'), '1234')
76
77     def test_creation_and_configuration_interface(self):
78
79         iface1 = self.ec.register_resource("OMFWifiInterface")
80         self.ec.set(iface1, 'alias', "w0")
81         self.ec.set(iface1, 'mode', "adhoc")
82         self.ec.set(iface1, 'type', "g")
83         self.ec.set(iface1, 'essid', "vlcexp")
84         self.ec.set(iface1, 'ip', "10.0.0.17")
85         self.ec.set(iface1, 'xmppSlice', "nepi")
86         self.ec.set(iface1, 'xmppHost', "xmpp-plexus.onelab.eu")
87         self.ec.set(iface1, 'xmppPort', "5222")
88         self.ec.set(iface1, 'xmppPassword', "1234")
89
90         self.assertEquals(self.ec.get(iface1, 'alias'), 'w0')
91         self.assertEquals(self.ec.get(iface1, 'mode'), 'adhoc')
92         self.assertEquals(self.ec.get(iface1, 'type'), 'g')
93         self.assertEquals(self.ec.get(iface1, 'essid'), 'vlcexp')
94         self.assertEquals(self.ec.get(iface1, 'ip'), '10.0.0.17')
95         self.assertEquals(self.ec.get(iface1, 'xmppSlice'), 'nepi')
96         self.assertEquals(self.ec.get(iface1, 'xmppHost'), 'xmpp-plexus.onelab.eu')
97         self.assertEquals(self.ec.get(iface1, 'xmppPort'), '5222')
98         self.assertEquals(self.ec.get(iface1, 'xmppPassword'), '1234')
99
100     def test_creation_and_configuration_channel(self):
101
102         channel = self.ec.register_resource("OMFChannel")
103         self.ec.set(channel, 'channel', "6")
104         self.ec.set(channel, 'xmppSlice', "nepi")
105         self.ec.set(channel, 'xmppHost', "xmpp-plexus.onelab.eu")
106         self.ec.set(channel, 'xmppPort', "5222")
107         self.ec.set(channel, 'xmppPassword', "1234")
108
109         self.assertEquals(self.ec.get(channel, 'channel'), '6')
110         self.assertEquals(self.ec.get(channel, 'xmppSlice'), 'nepi')
111         self.assertEquals(self.ec.get(channel, 'xmppHost'), 'xmpp-plexus.onelab.eu')
112         self.assertEquals(self.ec.get(channel, 'xmppPort'), '5222')
113         self.assertEquals(self.ec.get(channel, 'xmppPassword'), '1234')
114
115     def test_creation_and_configuration_application(self):
116
117         app1 = self.ec.register_resource("OMFApplication")
118         self.ec.set(app1, 'appid', 'Vlc#1')
119         self.ec.set(app1, 'path', "/opt/vlc-1.1.13/cvlc")
120         self.ec.set(app1, 'args', "/opt/10-by-p0d.avi --sout '#rtp{dst=10.0.0.37,port=1234,mux=ts}'")
121         self.ec.set(app1, 'env', "DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority")
122         self.ec.set(app1, 'xmppSlice', "nepi")
123         self.ec.set(app1, 'xmppHost', "xmpp-plexus.onelab.eu")
124         self.ec.set(app1, 'xmppPort', "5222")
125         self.ec.set(app1, 'xmppPassword', "1234")
126
127         self.assertEquals(self.ec.get(app1, 'appid'), 'Vlc#1')
128         self.assertEquals(self.ec.get(app1, 'path'), '/opt/vlc-1.1.13/cvlc')
129         self.assertEquals(self.ec.get(app1, 'args'), "/opt/10-by-p0d.avi --sout '#rtp{dst=10.0.0.37,port=1234,mux=ts}'")
130         self.assertEquals(self.ec.get(app1, 'env'), 'DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority')
131         self.assertEquals(self.ec.get(app1, 'xmppSlice'), 'nepi')
132         self.assertEquals(self.ec.get(app1, 'xmppHost'), 'xmpp-plexus.onelab.eu')
133         self.assertEquals(self.ec.get(app1, 'xmppPort'), '5222')
134         self.assertEquals(self.ec.get(app1, 'xmppPassword'), '1234')
135
136     def test_connection(self):
137
138         node1 = self.ec.register_resource("OMFNode")
139         iface1 = self.ec.register_resource("OMFWifiInterface")
140         channel = self.ec.register_resource("OMFChannel")
141         app1 = self.ec.register_resource("OMFApplication")
142         app2 = self.ec.register_resource("OMFApplication")
143
144         self.ec.register_connection(app1, node1)
145         self.ec.register_connection(app2, node1)
146         self.ec.register_connection(node1, iface1)
147         self.ec.register_connection(iface1, channel)
148
149         self.assertEquals(len(self.ec.get_resource(node1).connections), 3)
150         self.assertEquals(len(self.ec.get_resource(iface1).connections), 2)
151         self.assertEquals(len(self.ec.get_resource(channel).connections), 1)
152         self.assertEquals(len(self.ec.get_resource(app1).connections), 1)
153         self.assertEquals(len(self.ec.get_resource(app2).connections), 1)
154
155     def test_condition(self):
156
157         node1 = self.ec.register_resource("OMFNode")
158         iface1 = self.ec.register_resource("OMFWifiInterface")
159         channel = self.ec.register_resource("OMFChannel")
160         app1 = self.ec.register_resource("OMFApplication")
161         app2 = self.ec.register_resource("OMFApplication")
162
163         self.ec.register_connection(app1, node1)
164         self.ec.register_connection(app2, node1)
165         self.ec.register_connection(node1, iface1)
166         self.ec.register_connection(iface1, channel)
167
168         # For the moment
169         self.ec.register_condition([iface1, channel], ResourceAction.START, node1, ResourceState.STARTED , 2)
170         self.ec.register_condition(channel, ResourceAction.START, iface1, ResourceState.STARTED , 1)
171         self.ec.register_condition(app1, ResourceAction.START, channel, ResourceState.STARTED , 1)
172
173         # Real test
174         self.ec.register_condition(app2, ResourceAction.START, app1, ResourceState.STARTED , 4)
175
176         self.assertEquals(len(self.ec.get_resource(node1).conditions), 0)
177         self.assertEquals(len(self.ec.get_resource(iface1).conditions), 1)
178         self.assertEquals(len(self.ec.get_resource(channel).conditions), 1)
179         self.assertEquals(len(self.ec.get_resource(app1).conditions), 1)
180
181
182     def xtest_deploy(self):
183         ec.deploy()
184
185     #In order to release everythings
186         time.sleep(45)
187         ec.shutdown()
188
189
190 if __name__ == '__main__':
191     unittest.main()
192
193
194