2 from neco.execution.resource import ResourceFactory, ResourceManager, ResourceAction, ResourceState
3 from neco.execution.ec import ExperimentController
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
11 from neco.util import guid
20 class DummyEC(ExperimentController):
23 class DummyRM(ResourceManager):
27 class OMFResourceFactoryTestCase(unittest.TestCase):
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)
35 self.assertEquals(OMFNode.rtype(), "OMFNode")
36 self.assertEquals(len(OMFNode._attributes), 7)
38 self.assertEquals(OMFWifiInterface.rtype(), "OMFWifiInterface")
39 self.assertEquals(len(OMFWifiInterface._attributes), 9)
41 self.assertEquals(OMFChannel.rtype(), "OMFChannel")
42 self.assertEquals(len(OMFChannel._attributes), 5)
44 self.assertEquals(OMFApplication.rtype(), "OMFApplication")
45 self.assertEquals(len(OMFApplication._attributes), 8)
47 self.assertEquals(len(ResourceFactory.resource_types()), 4)
50 class OMFVLCTestCase(unittest.TestCase):
54 ResourceFactory.register_type(OMFNode)
55 ResourceFactory.register_type(OMFWifiInterface)
56 ResourceFactory.register_type(OMFChannel)
57 ResourceFactory.register_type(OMFApplication)
62 def test_creation_and_configuration_node(self):
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")
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')
77 def test_creation_and_configuration_interface(self):
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")
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')
100 def test_creation_and_configuration_channel(self):
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")
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')
115 def test_creation_and_configuration_application(self):
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")
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')
136 def test_connection(self):
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")
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)
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)
155 def test_condition(self):
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")
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)
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)
174 self.ec.register_condition(app2, ResourceAction.START, app1, ResourceState.STARTED , 4)
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)
182 def xtest_deploy(self):
185 #In order to release everythings
190 if __name__ == '__main__':