def test_stop_with_condition(self): from nepi.execution.resource import ResourceFactory ResourceFactory.register_type(Application) ResourceFactory.register_type(Node) ResourceFactory.register_type(Interface) ec = ExperimentController() node = ec.register_resource("Node") app1 = ec.register_resource("Application") ec.register_connection(app1, node) app2 = ec.register_resource("Application") ec.register_connection(app2, node) ec.register_condition(app2, ResourceAction.START, app1, ResourceState.STOPPED) ec.deploy() ec.wait_finished([app1, app2]) rmapp1 = ec.get_resource(app1) rmapp2 = ec.get_resource(app2) self.assertTrue(rmapp2.start_time > rmapp1.stop_time) ec.shutdown()
def test_ccnpeek(self): ec = ExperimentController(exp_id="test-linux-ccnpeek") node = ec.register_resource("linux::Node") ec.set(node, "hostname", self.fedora_host) ec.set(node, "username", self.fedora_user) ec.set(node, "identity", self.fedora_identity) #ec.set(node, "cleanProcesses", True) #ec.set(node, "cleanExperiment", True) ccnd = ec.register_resource("linux::CCND") ec.register_connection(ccnd, node) peek = ec.register_resource("linux::CCNPeek") ec.set(peek, "contentName", "ccnx:/chunk0") ec.register_connection(peek, ccnd) poke = ec.register_resource("linux::CCNPoke") ec.set(poke, "contentName", "ccnx:/chunk0") ec.set(poke, "content", "DATA") ec.register_connection(poke, ccnd) ec.register_condition(peek, ResourceAction.START, poke, ResourceState.STARTED) ec.deploy() ec.wait_finished(peek) stdout = ec.trace(peek, "stdout") print stdout expected = "DATA" self.assertTrue(stdout.find(expected) > -1) ec.shutdown()
def test_stop_with_condition(self): from nepi.execution.resource import ResourceFactory ResourceFactory.register_type(Application) ResourceFactory.register_type(Node) ResourceFactory.register_type(Interface) ec = ExperimentController() node = ec.register_resource("Node") app1 = ec.register_resource("Application") ec.register_connection(app1, node) app2 = ec.register_resource("Application") ec.register_connection(app2, node) ec.register_condition(app2, ResourceAction.START, app1, ResourceState.STOPPED) ec.deploy() ec.wait_finished([app1, app2]) rmapp1 = ec.get_resource(app1) rmapp2 = ec.get_resource(app2) self.assertTrue(rmapp2.start_time > rmapp1.stop_time) ec.shutdown()
def test_ccnpeek(self): ec = ExperimentController(exp_id = "test-linux-ccnpeek") node = ec.register_resource("linux::Node") ec.set(node, "hostname", self.fedora_host) ec.set(node, "username", self.fedora_user) ec.set(node, "identity", self.fedora_identity) #ec.set(node, "cleanProcesses", True) #ec.set(node, "cleanExperiment", True) ccnd = ec.register_resource("linux::CCND") ec.register_connection(ccnd, node) peek = ec.register_resource("linux::CCNPeek") ec.set(peek, "contentName", "ccnx:/chunk0") ec.register_connection(peek, ccnd) poke = ec.register_resource("linux::CCNPoke") ec.set(poke, "contentName", "ccnx:/chunk0") ec.set(poke, "content", "DATA") ec.register_connection(poke, ccnd) ec.register_condition(peek, ResourceAction.START, poke, ResourceState.STARTED) ec.deploy() ec.wait_finished(peek) stdout = ec.trace(peek, "stdout") print stdout expected = "DATA" self.assertTrue(stdout.find(expected) > -1) ec.shutdown()
def t_condition(self, host, user, depends): ec = ExperimentController(exp_id="test-condition") node = ec.register_resource("linux::Node") ec.set(node, "hostname", host) ec.set(node, "username", user) ec.set(node, "cleanExperiment", True) ec.set(node, "cleanProcesses", True) server = ec.register_resource("linux::Application") cmd = "echo 'HOLA' | nc -l 3333" ec.set(server, "command", cmd) ec.set(server, "depends", depends) ec.register_connection(server, node) client = ec.register_resource("linux::Application") cmd = "nc 127.0.0.1 3333" ec.set(client, "command", cmd) ec.register_connection(client, node) ec.register_condition(client, ResourceAction.START, server, ResourceState.STARTED) apps = [client, server] ec.deploy() ec.wait_finished(apps) self.assertTrue(ec.state(node) == ResourceState.STARTED) self.assertTrue(ec.state(server) == ResourceState.STOPPED) self.assertTrue(ec.state(client) == ResourceState.STOPPED) stdout = ec.trace(client, "stdout") self.assertTrue(stdout.strip() == "HOLA") ec.shutdown()
def t_condition(self, host, user, depends): ec = ExperimentController(exp_id="test-condition") node = ec.register_resource("linux::Node") ec.set(node, "hostname", host) ec.set(node, "username", user) ec.set(node, "cleanExperiment", True) ec.set(node, "cleanProcesses", True) server = ec.register_resource("linux::Application") cmd = "echo 'HOLA' | nc -l 3333" ec.set(server, "command", cmd) ec.set(server, "depends", depends) ec.register_connection(server, node) client = ec.register_resource("linux::Application") cmd = "nc 127.0.0.1 3333" ec.set(client, "command", cmd) ec.register_connection(client, node) ec.register_condition(client, ResourceAction.START, server, ResourceState.STARTED) apps = [client, server] ec.deploy() ec.wait_finished(apps) self.assertTrue(ec.state(node) == ResourceState.STARTED) self.assertTrue(ec.state(server) == ResourceState.STOPPED) self.assertTrue(ec.state(client) == ResourceState.STOPPED) stdout = ec.trace(client, "stdout") self.assertTrue(stdout.strip() == "HOLA") ec.shutdown()
def t_condition_serialize(self, host, user, depends): dirpath = tempfile.mkdtemp() ec = ExperimentController(exp_id="test-condition-serial") node = ec.register_resource("linux::Node") ec.set(node, "hostname", host) ec.set(node, "username", user) ec.set(node, "cleanExperiment", True) ec.set(node, "cleanProcesses", True) server = ec.register_resource("linux::Application") cmd = "echo 'HOLA' | nc -l 3333" ec.set(server, "command", cmd) ec.set(server, "depends", depends) ec.register_connection(server, node) client = ec.register_resource("linux::Application") cmd = "nc 127.0.0.1 3333" ec.set(client, "command", cmd) ec.register_connection(client, node) ec.register_condition(client, ResourceAction.START, server, ResourceState.STARTED) apps = [client, server] filepath = ec.save(dirpath) ec.deploy() ec.wait_finished(apps) self.assertTrue(ec.state(node) == ResourceState.STARTED) self.assertTrue(ec.state(server) == ResourceState.STOPPED) self.assertTrue(ec.state(client) == ResourceState.STOPPED) stdout = ec.trace(client, "stdout") self.assertTrue(stdout.strip() == "HOLA") ec.shutdown() # Load serialized experiment ec2 = ExperimentController.load(filepath) ec2.deploy() ec2.wait_finished(apps) self.assertEquals(len(ec.resources), len(ec2.resources)) self.assertTrue(ec2.state(node) == ResourceState.STARTED) self.assertTrue(ec2.state(server) == ResourceState.STOPPED) self.assertTrue(ec2.state(client) == ResourceState.STOPPED) stdout = ec2.trace(client, "stdout") self.assertTrue(stdout.strip() == "HOLA") ec2.shutdown() shutil.rmtree(dirpath)
if mode == 'vod': update_file_wificenter = "echo -e 'new BUNNY vod enabled\\n"\ "setup BUNNY input rtsp://128.232.103.203:5554/BUNNY' > /root/wificenter.vlm" command_wificenter = "/root/vlc/vlc-1.1.13/cvlc --vlm-conf /root/wificenter.vlm --rtsp-host 192.168.0.1:5554" elif mode == 'broadcast': update_file_wificenter = "echo -e 'new BUNNY broadcast enabled loop\\n"\ "setup BUNNY input rtsp://128.232.103.203:8554/BUNNY\\n"\ "setup BUNNY output #rtp{access=udp,mux=ts,sdp=rtsp://0.0.0.0:8554/BUNNY}\\n\\n"\ "new test_sched schedule enabled\\n"\ "setup test_sched append control BUNNY play' > /root/wificenter.vlm" command_wificenter = "/root/vlc/vlc-1.1.13/cvlc --vlm-conf /root/wificenter.vlm --rtsp-host 192.168.0.1:8554" upload_conf = create_omf_app(ec, update_file_wificenter , wifi_center) vlc_wificenter = create_omf_app(ec, command_wificenter , wifi_center) ec.register_condition(upload_conf, ResourceAction.START, vlc_server, ResourceState.STARTED , "2s") ec.register_condition(vlc_wificenter, ResourceAction.START, upload_conf, ResourceState.STARTED , "2s") # measurements in video server (PL node) measure_videoserver = ec.register_resource("linux::Application") ec.set(measure_videoserver, "depends", "tcpdump") ec.set(measure_videoserver, "sudo", True) command = "tcpdump -i eth0 not arp -n -w /tmp/capplserver_%s.pcap" % ("$(date +'%Y%m%d%H%M%S')") ec.set(measure_videoserver, "command", command) ec.register_connection(measure_videoserver, video_server) # Deploy servers ec.deploy([vlc_server, upload_conf, vlc_wificenter, measure_videoserver]) ec.wait_started([vlc_server, upload_conf, vlc_wificenter, measure_videoserver])
ccnd1 = add_ccnd(ec, peers) ec.register_connection(ccnd1, node1) # Register content producer application (ccnseqwriter) ## Push the file into the repository local_path_to_content = os.path.join( os.path.dirname(os.path.realpath(__file__)), "..", "big_buck_bunny_240p_mpeg4_lq.ts") content_name = "ccnx:/test/FILE" pub = add_publish(ec, local_path_to_content, content_name) ec.register_connection(pub, node1) # The movie can only be published after ccnd is running ec.register_condition(pub, ResourceAction.START, ccnd1, ResourceState.STARTED) # Register Linux host node2 = add_node(ec, hostname2, username, ssh_key) # Register CCN setup for Linux host peers = [hostname1] ccnd2 = add_ccnd(ec, peers) ec.register_connection(ccnd2, node2) # Register consumer application (ccncat) ccncat = add_ccncat(ec, content_name) ec.register_connection(ccncat, node2) # The file can only be retrieved after ccnd is running ec.register_condition(ccncat, ResourceAction.START,
app1 = ec.register_resource("LinuxApplication") file = "../big_file.geo" ec.set(app1, "sources", file) command = "scp $SRC/big_file.geo %s" % destination ec.set(app1, "command", command) ec.register_connection(app1, node1) app2 = ec.register_resource("LinuxApplication") ec.set(app, "sudo", sudo) ec.set(app, "depends", "ifstat") command = "ifstat -b eth0 > ifstat.txt" command = "iperf ..." ec.set(app2, "command", command) ec.register_connection(app2, node1) ec.register_condition(app2, ResourceAction.START, app1, ResourceState.STARTED) # Deploy ec.deploy() ec.wait_finished([app1, app2]) trace_file = "examples/planetlab/ifstat.txt" trace = ec.trace(app2, "ifstat.txt") f = open(trace_file, "w") f.write(trace) f.close() ec.shutdown()
command = "wget -O server.out ftp://159.226.40.196/server.out && echo \"$HOSTNAME is OK.\" >report && chmod 777 server.out && ./server.out" #wangyang,create an app that will execute the command above,this function connect app and node and return a gid representing this connection app_getserver = add_app(ec,command,node) #wangyang,other nodes in this slice,if there are 2 nodes,i from 0-1 i = 0 for i in range(3) : node = create_node(ec, username, pl_user, pl_password) #second_set_nodes.append(node) command = "wget -O ~/client.out ftp://159.226.40.196/client.out && echo \"$HOSTNAME is OK.\" > ~/report" app_getclient = add_app(ec,command,node) apps.append(app_getclient) command = "chmod 777 ~/client.out && cd ~ && ./client.out 202.119.236.130" app_startclient = add_app(ec,command,node) apps.append(app_startclient) #wangyang,startclient must execute after getclient and startserver ec.register_condition(app_startclient, ResourceAction.START, app_getclient, ResourceState. STOPPED) ec.register_condition(app_startclient, ResourceAction.START, app_getserver, ResourceState. STARTED) # Deploy the experiment: #wangyang,run all apps ec.deploy() # Wait until the applications are finish to retrive the traces: ec.wait_finished(apps) #wangyang,retrive the trace in the server node named report,then save this record into local machine for trace in ec.get_traces(app_getserver): trace_stream = ec.trace(app_getserver, 'report') f = open("./report.txt", "w") f.write(trace_stream)
def test_deploy(self): ec = ExperimentController(exp_id="5421") self.node1 = ec.register_resource("omf::Node") ec.set(self.node1, 'hostname', 'wlab12') ec.set(self.node1, 'xmppUser', "nepi") ec.set(self.node1, 'xmppServer', "xmpp-plexus.onelab.eu") ec.set(self.node1, 'xmppPort', "5222") ec.set(self.node1, 'xmppPassword', "1234") self.iface1 = ec.register_resource("omf::WifiInterface") ec.set(self.iface1, 'name', "wlan0") ec.set(self.iface1, 'mode', "adhoc") ec.set(self.iface1, 'hw_mode', "g") ec.set(self.iface1, 'essid', "vlcexp") ec.set(self.iface1, 'ip', "10.0.0.17/24") self.channel = ec.register_resource("omf::Channel") ec.set(self.channel, 'channel', "6") ec.set(self.channel, 'xmppUser', "nepi") ec.set(self.channel, 'xmppServer', "xmpp-plexus.onelab.eu") ec.set(self.channel, 'xmppPort', "5222") ec.set(self.channel, 'xmppPassword', "1234") self.app1 = ec.register_resource("omf::Application") ec.set(self.app1, 'appid', 'Vlc#1') 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}'" ) ec.set(self.app1, 'env', "DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority") self.app2 = ec.register_resource("omf::Application") ec.set(self.app2, 'appid', 'Test#1') ec.set(self.app2, 'command', "/usr/bin/test -1") ec.set(self.app2, 'env', " ") self.app3 = ec.register_resource("omf::Application") ec.set(self.app3, 'appid', 'Test#2') ec.set(self.app3, 'command', "/usr/bin/test -2") ec.set(self.app3, 'env', " ") self.app4 = ec.register_resource("omf::Application") ec.set(self.app4, 'appid', 'Test#3') ec.set(self.app4, 'command', "/usr/bin/test -3") ec.set(self.app4, 'env', " ") self.app5 = ec.register_resource("omf::Application") ec.set(self.app5, 'appid', 'Kill#2') ec.set(self.app5, 'command', "/usr/bin/killall vlc") ec.set(self.app5, 'env', " ") ec.register_connection(self.app1, self.node1) ec.register_connection(self.app2, self.node1) ec.register_connection(self.app3, self.node1) ec.register_connection(self.app4, self.node1) ec.register_connection(self.app5, self.node1) ec.register_connection(self.node1, self.iface1) ec.register_connection(self.iface1, self.channel) ec.register_condition(self.app2, ResourceAction.START, self.app1, ResourceState.STARTED, "3s") ec.register_condition(self.app3, ResourceAction.START, self.app2, ResourceState.STARTED, "2s") ec.register_condition(self.app4, ResourceAction.START, self.app3, ResourceState.STARTED, "3s") ec.register_condition(self.app5, ResourceAction.START, [self.app3, self.app2], ResourceState.STARTED, "2s") ec.register_condition(self.app5, ResourceAction.START, self.app1, ResourceState.STARTED, "25s") ec.register_condition( [self.app1, self.app2, self.app3, self.app4, self.app5], ResourceAction.STOP, self.app5, ResourceState.STARTED, "1s") ec.deploy() ec.wait_finished( [self.app1, self.app2, self.app3, self.app4, self.app5]) self.assertGreaterEqual( round( tdiffsec( ec.get_resource(self.app2).start_time, ec.get_resource(self.app1).start_time), 0), 3.0) self.assertGreaterEqual( round( tdiffsec( ec.get_resource(self.app3).start_time, ec.get_resource(self.app2).start_time), 0), 2.0) self.assertGreaterEqual( round( tdiffsec( ec.get_resource(self.app4).start_time, ec.get_resource(self.app3).start_time), 0), 3.0) self.assertGreaterEqual( round( tdiffsec( ec.get_resource(self.app5).start_time, ec.get_resource(self.app3).start_time), 0), 2.0) self.assertGreaterEqual( round( tdiffsec( ec.get_resource(self.app5).start_time, ec.get_resource(self.app1).start_time), 0), 25.0) self.assertEquals( ec.get_resource(self.node1).state, ResourceState.STARTED) self.assertEquals( ec.get_resource(self.iface1).state, ResourceState.STARTED) self.assertEquals( ec.get_resource(self.channel).state, ResourceState.STARTED) self.assertEquals( ec.get_resource(self.app1).state, ResourceState.STOPPED) self.assertEquals( ec.get_resource(self.app2).state, ResourceState.STOPPED) self.assertEquals( ec.get_resource(self.app3).state, ResourceState.STOPPED) self.assertEquals( ec.get_resource(self.app4).state, ResourceState.STOPPED) self.assertEquals( ec.get_resource(self.app5).state, ResourceState.STOPPED) ec.shutdown() self.assertEquals( ec.get_resource(self.node1).state, ResourceState.RELEASED) self.assertEquals( ec.get_resource(self.iface1).state, ResourceState.RELEASED) self.assertEquals( ec.get_resource(self.channel).state, ResourceState.RELEASED) self.assertEquals( ec.get_resource(self.app1).state, ResourceState.RELEASED) self.assertEquals( ec.get_resource(self.app2).state, ResourceState.RELEASED) self.assertEquals( ec.get_resource(self.app3).state, ResourceState.RELEASED) self.assertEquals( ec.get_resource(self.app4).state, ResourceState.RELEASED) self.assertEquals( ec.get_resource(self.app5).state, ResourceState.RELEASED)
class OMFVLCWrongCaseWithNonCritical(unittest.TestCase): id = 2000 def setUp(self): self.ec = ExperimentController( exp_id=str(OMFVLCWrongCaseWithNonCritical.id)) OMFVLCWrongCaseWithNonCritical.id += 1 self.node1 = self.ec.register_resource("omf::Node") self.ec.set(self.node1, 'hostname', 'omf.plexus.wlab17') self.ec.set(self.node1, 'xmppUser', "nepi") self.ec.set(self.node1, 'xmppServer', "xmpp-plexus.onelab.eu") self.ec.set(self.node1, 'xmppPort', "5222") self.ec.set(self.node1, 'xmppPassword', "1234") self.ec.set(self.node1, 'version', "5") self.iface1 = self.ec.register_resource("omf::WifiInterface") self.ec.set(self.iface1, 'name', "wlan0") self.ec.set(self.iface1, 'mode', "adhoc") self.ec.set(self.iface1, 'hw_mode', "g") self.ec.set(self.iface1, 'essid', "vlcexp") self.ec.set(self.iface1, 'ip', "10.0.0.17/24") self.ec.set(self.iface1, 'version', "5") self.app1 = self.ec.register_resource("omf::Application") self.ec.set(self.app1, 'appid', 'Kill#1') self.ec.set(self.app1, 'command', "/usr/bin/test -1") self.ec.set(self.app1, 'env', "DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority") self.ec.set(self.app1, 'version', "5") self.ec.register_connection(self.app1, self.node1) self.ec.register_connection(self.node1, self.iface1) def test_deploy_with_node_nc(self): self.node2 = self.ec.register_resource("omf::Node") self.ec.set(self.node2, "critical", False) self.ec.set(self.node2, 'version', "5") self.iface2 = self.ec.register_resource("omf::WifiInterface") self.ec.set(self.iface2, 'name', "wlan0") self.ec.set(self.iface2, 'mode', "adhoc") self.ec.set(self.iface2, 'hw_mode', "g") self.ec.set(self.iface2, 'essid', "vlcexp") self.ec.set(self.iface2, 'ip', "10.0.0.37/24") self.ec.set(self.iface2, 'version', "5") self.channel = self.ec.register_resource("omf::Channel") self.ec.set(self.channel, 'channel', "6") self.ec.set(self.channel, 'xmppUser', "nepi") self.ec.set(self.channel, 'xmppServer', "xmpp-plexus.onelab.eu") self.ec.set(self.channel, 'xmppPort', "5222") self.ec.set(self.channel, 'xmppPassword', "1234") self.ec.set(self.channel, 'version', "5") self.ec.register_connection(self.iface1, self.channel) self.ec.register_connection(self.node2, self.iface2) self.ec.register_connection(self.iface2, self.channel) self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED, "5s") self.ec.deploy() self.ec.wait_finished([self.app1]) self.assertEquals( self.ec.get_resource(self.node2).state, ResourceState.FAILED) self.assertEquals( self.ec.get_resource(self.iface2).state, ResourceState.FAILED) self.ec.shutdown() self.assertEquals( self.ec.get_resource(self.node1).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.node2).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.iface1).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.iface2).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.channel).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.app1).state, ResourceState.RELEASED) def test_deploy_with_node_and_iface_nc(self): self.node2 = self.ec.register_resource("omf::Node") self.ec.set(self.node2, "critical", False) self.ec.set(self.node2, 'version', "5") self.iface2 = self.ec.register_resource("omf::WifiInterface") self.ec.set(self.node2, "critical", False) self.ec.set(self.iface2, 'name', "wlan0") self.ec.set(self.iface2, 'mode', "adhoc") self.ec.set(self.iface2, 'hw_mode', "g") self.ec.set(self.iface2, 'essid', "vlcexp") self.ec.set(self.iface2, 'ip', "10.0.0.37/24") self.ec.set(self.iface2, 'version', "5") self.channel = self.ec.register_resource("omf::Channel") self.ec.set(self.channel, 'channel', "6") self.ec.set(self.channel, 'xmppUser', "nepi") self.ec.set(self.channel, 'xmppServer', "xmpp-plexus.onelab.eu") self.ec.set(self.channel, 'xmppPort', "5222") self.ec.set(self.channel, 'xmppPassword', "1234") self.ec.set(self.channel, 'version', "5") self.ec.register_connection(self.iface1, self.channel) self.ec.register_connection(self.node2, self.iface2) self.ec.register_connection(self.iface2, self.channel) self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED, "5s") self.ec.deploy() self.ec.wait_finished([self.app1]) self.assertEquals( self.ec.get_resource(self.node2).state, ResourceState.FAILED) self.assertEquals( self.ec.get_resource(self.iface2).state, ResourceState.FAILED) self.ec.shutdown() self.assertEquals( self.ec.get_resource(self.node1).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.node2).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.iface1).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.iface2).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.channel).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.app1).state, ResourceState.RELEASED) def test_deploy_with_node_iface_channel_nc(self): self.node2 = self.ec.register_resource("omf::Node") self.ec.set(self.node2, "critical", False) self.ec.set(self.node2, 'hostname', 'omf.plexus.wlab37') self.ec.set(self.node2, 'version', "5") self.iface2 = self.ec.register_resource("omf::WifiInterface") self.ec.set(self.node2, "critical", False) self.ec.set(self.iface2, 'name', "wlan0") self.ec.set(self.iface2, 'mode', "adhoc") self.ec.set(self.iface2, 'hw_mode', "g") self.ec.set(self.iface2, 'essid', "vlcexp") self.ec.set(self.iface2, 'ip', "10.0.0.37/24") self.ec.set(self.iface2, 'version', "5") self.channel = self.ec.register_resource("omf::Channel") self.ec.set(self.channel, 'channel', "6") self.ec.set(self.channel, "critical", False) self.ec.set(self.channel, 'version', "5") self.ec.register_connection(self.iface1, self.channel) self.ec.register_connection(self.node2, self.iface2) self.ec.register_connection(self.iface2, self.channel) self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED, "10s") self.ec.deploy() self.ec.wait_finished([self.app1]) self.assertEquals( self.ec.get_resource(self.node2).state, ResourceState.FAILED) self.assertEquals( self.ec.get_resource(self.iface2).state, ResourceState.FAILED) self.assertEquals( self.ec.get_resource(self.channel).state, ResourceState.FAILED) self.ec.shutdown() self.assertEquals( self.ec.get_resource(self.node1).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.node2).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.iface1).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.iface2).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.channel).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.app1).state, ResourceState.RELEASED) def test_deploy_with_app_nc(self): self.node2 = self.ec.register_resource("omf::Node") self.ec.set(self.node2, 'hostname', 'omf.plexus.wlab37') self.ec.set(self.node2, 'xmppUser', "nepi") self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu") self.ec.set(self.node2, 'xmppPort', "5222") self.ec.set(self.node2, 'xmppPassword', "1234") self.ec.set(self.node2, 'version', "5") self.iface2 = self.ec.register_resource("omf::WifiInterface") self.ec.set(self.iface2, 'name', "wlan0") self.ec.set(self.iface2, 'mode', "adhoc") self.ec.set(self.iface2, 'hw_mode', "g") self.ec.set(self.iface2, 'essid', "vlcexp") self.ec.set(self.iface2, 'ip', "10.0.0.37/24") self.ec.set(self.iface2, 'version', "5") self.channel = self.ec.register_resource("omf::Channel") self.ec.set(self.channel, 'channel', "6") self.ec.set(self.channel, 'xmppUser', "nepi") self.ec.set(self.channel, 'xmppServer', "xmpp-plexus.onelab.eu") self.ec.set(self.channel, 'xmppPort', "5222") self.ec.set(self.channel, 'xmppPassword', "1234") self.ec.set(self.channel, 'version', "5") self.app2 = self.ec.register_resource("omf::Application") self.ec.set(self.app2, "critical", False) self.ec.set(self.app2, 'appid', 'Kill#22') self.ec.set(self.app2, 'version', "5") self.ec.register_connection(self.iface1, self.channel) self.ec.register_connection(self.node2, self.iface2) self.ec.register_connection(self.iface2, self.channel) self.ec.register_connection(self.app2, self.node2) self.ec.register_condition(self.app2, ResourceAction.START, self.app1, ResourceState.STARTED, "6s") self.ec.register_condition([self.app1, self.app2], ResourceAction.STOP, self.app1, ResourceState.STARTED, "10s") self.ec.deploy() self.ec.wait_finished([self.app1, self.app2]) self.assertEquals( self.ec.get_resource(self.app1).state, ResourceState.STOPPED) self.assertEquals( self.ec.get_resource(self.app2).state, ResourceState.FAILED) self.ec.shutdown() self.assertEquals( self.ec.get_resource(self.node1).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.node2).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.iface1).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.iface2).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.channel).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.app1).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.app2).state, ResourceState.RELEASED) def test_deploy_with_all_nc_and_app_critical(self): self.node2 = self.ec.register_resource("omf::Node") self.ec.set(self.node2, "critical", False) self.ec.set(self.node2, 'hostname', 'omf.plexus.wlab37') self.ec.set(self.node2, 'version', "5") self.iface2 = self.ec.register_resource("omf::WifiInterface") self.ec.set(self.iface2, "critical", False) self.ec.set(self.iface2, 'version', "5") self.channel = self.ec.register_resource("omf::Channel") self.ec.set(self.channel, "critical", False) self.ec.set(self.channel, 'channel', "6") self.ec.set(self.channel, 'version', "5") self.app2 = self.ec.register_resource("omf::Application") self.ec.set(self.app2, 'appid', 'Kill#22') self.ec.set(self.app2, 'version', "5") self.ec.register_connection(self.iface1, self.channel) self.ec.register_connection(self.node2, self.iface2) self.ec.register_connection(self.iface2, self.channel) self.ec.register_connection(self.app2, self.node2) self.ec.register_condition(self.app2, ResourceAction.START, self.app1, ResourceState.STARTED, "6s") self.ec.register_condition([self.app1, self.app2], ResourceAction.STOP, self.app1, ResourceState.STARTED, "10s") self.ec.deploy() self.ec.wait_finished([self.app1, self.app2]) self.assertEquals( self.ec.get_resource(self.app2).state, ResourceState.FAILED) self.ec.shutdown() self.assertEquals( self.ec.get_resource(self.node1).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.node2).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.iface1).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.iface2).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.channel).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.app1).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.app2).state, ResourceState.RELEASED)
perfclient1 = add_app(ec, nodes[all_hosts[i]], "#perfclient1", cmd, env, xmpp_slice, xmpp_host) iperfclient[all_hosts[i]].append(perfclient1) if i < (len(all_hosts)-1): cmd = "iperf -c " + all_ip[i+1] + " > /opt/iperclient2.txt" perfclient2 = add_app(ec, nodes[all_hosts[i]], "#perfclient2", cmd, env, xmpp_slice, xmpp_host) iperfclient[all_hosts[i]].append(perfclient2) iperfserv[all_hosts[i]] = perfserv for i in xrange(len(all_hosts)): #ec.register_condition(iperfserv[all_hosts[i]], ResourceAction.START, link, ResourceState.STARTED, "2s") for elt in iperfclient[all_hosts[i]]: ec.register_condition(elt, ResourceAction.START, iperfserv[all_hosts[i]], ResourceState.STARTED, "3s") ## Streaming Server # pub = add_publish(ec, nodes[host5], movie, xmpp_slice, xmpp_host) ## Streaming client # stream = add_stream(ec, nodes[host6], xmpp_slice, xmpp_host) ## Streaming conditions # ec.register_condition(pub, ResourceAction.START, link, ResourceState.STARTED, "2s") # ec.register_condition(stream, ResourceAction.START, link, ResourceState.STARTED, "2s") # ec.register_condition(stream, ResourceAction.START, pub, ResourceState.STARTED, "2s")
xmpp_host) ec.register_connection(ccndstart1, node1) peers = [receiver_ip] ccnd1 = add_ccnd(ec, peers, xmpp_slice, xmpp_host) ec.register_connection(ccnd1, node1) ccnr1 = add_app(ec, "#ccnr", "ccnr &", env, xmpp_slice, xmpp_host) ec.register_connection(ccnr1, node1) # Register content producer application (ccnseqwriter) pub = add_publish(ec, movie, xmpp_slice, xmpp_host) ec.register_connection(pub, node1) # The movie can only be published after ccnd is running ec.register_condition(ccnd1, ResourceAction.START, ccndstart1, ResourceState.STARTED, "1s") ec.register_condition(ccnr1, ResourceAction.START, ccnd1, ResourceState.STARTED, "1s") ec.register_condition(pub, ResourceAction.START, ccnr1, ResourceState.STARTED, "2s") # CCN setup for the receiver ccndstart2 = add_app(ec, "#ccndstart", "ccndstart &", env, xmpp_slice, xmpp_host) ec.register_connection(ccndstart2, node2) peers = [sender_ip] ccnd2 = add_ccnd(ec, peers, xmpp_slice, xmpp_host) ec.register_connection(ccnd2, node2) ccnr2 = add_app(ec, "#ccnr", "ccnr &", env, xmpp_slice, xmpp_host)
def test_deploy(self): ec = ExperimentController(exp_id = "5421" ) self.node1 = ec.register_resource("omf::Node") ec.set(self.node1, 'hostname', 'wlab12') ec.set(self.node1, 'xmppUser', "nepi") ec.set(self.node1, 'xmppServer', "xmpp-plexus.onelab.eu") ec.set(self.node1, 'xmppPort', "5222") ec.set(self.node1, 'xmppPassword', "1234") self.iface1 = ec.register_resource("omf::WifiInterface") ec.set(self.iface1, 'name', "wlan0") ec.set(self.iface1, 'mode', "adhoc") ec.set(self.iface1, 'hw_mode', "g") ec.set(self.iface1, 'essid', "vlcexp") ec.set(self.iface1, 'ip', "10.0.0.17/24") self.channel = ec.register_resource("omf::Channel") ec.set(self.channel, 'channel', "6") ec.set(self.channel, 'xmppUser', "nepi") ec.set(self.channel, 'xmppServer', "xmpp-plexus.onelab.eu") ec.set(self.channel, 'xmppPort', "5222") ec.set(self.channel, 'xmppPassword', "1234") self.app1 = ec.register_resource("omf::Application") ec.set(self.app1, 'appid', 'Vlc#1') ec.set(self.app1, 'command', "ping -c5 10.0.0.17") ec.register_connection(self.app1, self.node1) ec.register_connection(self.node1, self.iface1) ec.register_connection(self.iface1, self.channel) ec.register_condition(self.app1, ResourceAction.STOP, self.app1, ResourceState.STARTED , "10s") ec.deploy() ec.wait_finished(self.app1) stdout_1 = ec.trace(self.app1, "stdout") stderr_1 = ec.trace(self.app1, "stderr") if stdout_1: f = open("app1_out.txt", "w") f.write(stdout_1) f.close() if stderr_1: f = open("app1_err.txt", "w") f.write(stderr_1) f.close() self.assertEquals(ec.get_resource(self.node1).state, ResourceState.STARTED) self.assertEquals(ec.get_resource(self.iface1).state, ResourceState.STARTED) self.assertEquals(ec.get_resource(self.channel).state, ResourceState.STARTED) self.assertEquals(ec.get_resource(self.app1).state, ResourceState.STOPPED) ec.shutdown() self.assertEquals(ec.get_resource(self.node1).state, ResourceState.RELEASED) self.assertEquals(ec.get_resource(self.iface1).state, ResourceState.RELEASED) self.assertEquals(ec.get_resource(self.channel).state, ResourceState.RELEASED) self.assertEquals(ec.get_resource(self.app1).state, ResourceState.RELEASED) t = open("app1_out.txt", "r") l = t.readlines() self.assertEquals(l[0], "PING 10.0.0.17 (10.0.0.17) 56(84) bytes of data.\n") self.assertIn("5 packets transmitted, 5 received, 0% packet loss, time", l[-2]) self.assertIn("rtt min/avg/max/mdev = ", l[-1]) t.close() os.remove("app1_out.txt")
class OMFVLCWrongCaseAllCritical(unittest.TestCase): id = 1000 def setUp(self): self.ec = ExperimentController(exp_id = str(OMFVLCWrongCaseAllCritical.id)) OMFVLCWrongCaseAllCritical.id += 1 self.node1 = self.ec.register_resource("omf::Node") self.ec.set(self.node1, 'hostname', 'wlab12') self.ec.set(self.node1, 'xmppUser', "nepi") self.ec.set(self.node1, 'xmppServer', "xmpp-plexus.onelab.eu") self.ec.set(self.node1, 'xmppPort', "5222") self.ec.set(self.node1, 'xmppPassword', "1234") self.iface1 = self.ec.register_resource("omf::WifiInterface") self.ec.set(self.iface1, 'name', "wlan0") self.ec.set(self.iface1, 'mode', "adhoc") self.ec.set(self.iface1, 'hw_mode', "g") self.ec.set(self.iface1, 'essid', "vlcexp") self.ec.set(self.iface1, 'ip', "10.0.0.12/24") self.app1 = self.ec.register_resource("omf::Application") self.ec.set(self.app1, 'appid', 'Vlc#1') 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}'") self.ec.set(self.app1, 'env', "DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority") self.ec.register_connection(self.app1, self.node1) self.ec.register_connection(self.node1, self.iface1) def test_deploy_wo_node(self): self.node2 = self.ec.register_resource("omf::Node") self.iface2 = self.ec.register_resource("omf::WifiInterface") self.ec.set(self.iface2, 'name', "wlan0") self.ec.set(self.iface2, 'mode', "adhoc") self.ec.set(self.iface2, 'hw_mode', "g") self.ec.set(self.iface2, 'essid', "vlcexp") self.ec.set(self.iface2, 'ip', "10.0.0.49/24") self.channel = self.ec.register_resource("omf::Channel") self.ec.set(self.channel, 'channel', "6") self.ec.register_connection(self.iface1, self.channel) self.ec.register_connection(self.node2, self.iface2) self.ec.register_connection(self.iface2, self.channel) self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED , "2s") self.ec.deploy() self.ec.wait_finished([self.app1]) self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.FAILED) self.ec.shutdown() self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED) def test_deploy_wo_hostname(self): self.node2 = self.ec.register_resource("omf::Node") self.ec.set(self.node2, 'xmppUser', "nepi") self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu") self.ec.set(self.node2, 'xmppPort', "5222") self.ec.set(self.node2, 'xmppPassword', "1234") self.iface2 = self.ec.register_resource("omf::WifiInterface") self.ec.set(self.iface2, 'name', "wlan0") self.ec.set(self.iface2, 'mode', "adhoc") self.ec.set(self.iface2, 'hw_mode', "g") self.ec.set(self.iface2, 'essid', "vlcexp") self.ec.set(self.iface2, 'ip', "10.0.0.49/24") self.channel = self.ec.register_resource("omf::Channel") self.ec.set(self.channel, 'channel', "6") self.ec.register_connection(self.iface1, self.channel) self.ec.register_connection(self.node2, self.iface2) self.ec.register_connection(self.iface2, self.channel) self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED , "2s") self.ec.deploy() self.ec.wait_finished([self.app1]) self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.FAILED) self.ec.shutdown() self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED) def test_deploy_wo_iface(self): self.node2 = self.ec.register_resource("omf::Node") self.ec.set(self.node2, 'hostname', 'wlab49') self.ec.set(self.node2, 'xmppUser', "nepi") self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu") self.ec.set(self.node2, 'xmppPort', "5222") self.ec.set(self.node2, 'xmppPassword', "1234") self.iface2 = self.ec.register_resource("omf::WifiInterface") self.channel = self.ec.register_resource("omf::Channel") self.ec.set(self.channel, 'channel', "6") self.ec.register_connection(self.iface1, self.channel) self.ec.register_connection(self.node2, self.iface2) self.ec.register_connection(self.iface2, self.channel) self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED , "2s") self.ec.deploy() self.ec.wait_finished([self.app1]) self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.FAILED) self.ec.shutdown() self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED) def test_deploy_wo_channel(self): self.node2 = self.ec.register_resource("omf::Node") self.ec.set(self.node2, 'hostname', 'wlab49') self.ec.set(self.node2, 'xmppUser', "nepi") self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu") self.ec.set(self.node2, 'xmppPort', "5222") self.ec.set(self.node2, 'xmppPassword', "1234") self.iface2 = self.ec.register_resource("omf::WifiInterface") self.ec.set(self.iface2, 'name', "wlan0") self.ec.set(self.iface2, 'mode', "adhoc") self.ec.set(self.iface2, 'hw_mode', "g") self.ec.set(self.iface2, 'essid', "vlcexp") self.ec.set(self.iface2, 'ip', "10.0.0.49/24") self.channel = self.ec.register_resource("omf::Channel") self.ec.register_connection(self.iface1, self.channel) self.ec.register_connection(self.node2, self.iface2) self.ec.register_connection(self.iface2, self.channel) self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED , "2s") self.ec.deploy() self.ec.wait_finished([self.app1]) self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.FAILED) self.ec.shutdown() self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED) def test_deploy_wo_ip(self): self.node2 = self.ec.register_resource("omf::Node") self.ec.set(self.node2, 'hostname', 'wlab49') self.ec.set(self.node2, 'xmppUser', "nepi") self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu") self.ec.set(self.node2, 'xmppPort', "5222") self.ec.set(self.node2, 'xmppPassword', "1234") self.iface2 = self.ec.register_resource("omf::WifiInterface") self.ec.set(self.iface2, 'name', "wlan0") self.ec.set(self.iface2, 'mode', "adhoc") self.ec.set(self.iface2, 'hw_mode', "g") self.ec.set(self.iface2, 'essid', "vlcexp") self.channel = self.ec.register_resource("omf::Channel") self.ec.set(self.channel, 'channel', "6") self.ec.register_connection(self.iface1, self.channel) self.ec.register_connection(self.node2, self.iface2) self.ec.register_connection(self.iface2, self.channel) self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED , "2s") self.ec.deploy() self.ec.wait_finished([self.app1]) self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.FAILED) self.ec.shutdown() self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED) def test_deploy_wo_app(self): self.node2 = self.ec.register_resource("omf::Node") self.ec.set(self.node2, 'hostname', 'wlab49') self.ec.set(self.node2, 'xmppUser', "nepi") self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu") self.ec.set(self.node2, 'xmppPort', "5222") self.ec.set(self.node2, 'xmppPassword', "1234") self.iface2 = self.ec.register_resource("omf::WifiInterface") self.ec.set(self.iface2, 'name', "wlan0") self.ec.set(self.iface2, 'mode', "adhoc") self.ec.set(self.iface2, 'hw_mode', "g") self.ec.set(self.iface2, 'essid', "vlcexp") self.ec.set(self.iface2, 'ip', "10.0.0.49/24") self.channel = self.ec.register_resource("omf::Channel") self.ec.set(self.channel, 'channel', "6") self.app2 = self.ec.register_resource("omf::Application") self.ec.register_connection(self.iface1, self.channel) self.ec.register_connection(self.iface2, self.channel) self.ec.register_connection(self.node2, self.iface2) self.ec.register_connection(self.app2, self.node2) self.ec.register_condition(self.app2, ResourceAction.START, self.app1, ResourceState.STARTED , "2s") self.ec.register_condition([self.app1, self.app2], ResourceAction.STOP, self.app1, ResourceState.STARTED , "4s") self.ec.deploy() self.ec.wait_finished([self.app1, self.app2]) self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.FAILED) self.ec.shutdown() self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.RELEASED) def test_deploy_wo_app_path(self): self.node2 = self.ec.register_resource("omf::Node") self.ec.set(self.node2, 'hostname', 'wlab49') self.ec.set(self.node2, 'xmppUser', "nepi") self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu") self.ec.set(self.node2, 'xmppPort', "5222") self.ec.set(self.node2, 'xmppPassword', "1234") self.iface2 = self.ec.register_resource("omf::WifiInterface") self.ec.set(self.iface2, 'name', "wlan0") self.ec.set(self.iface2, 'mode', "adhoc") self.ec.set(self.iface2, 'hw_mode', "g") self.ec.set(self.iface2, 'essid', "vlcexp") self.ec.set(self.iface2, 'ip', "10.0.0.49/24") self.channel = self.ec.register_resource("omf::Channel") self.ec.set(self.channel, 'channel', "6") self.app2 = self.ec.register_resource("omf::Application") self.ec.set(self.app2, 'appid', 'Vlc#2') self.ec.register_connection(self.iface1, self.channel) self.ec.register_connection(self.iface2, self.channel) self.ec.register_connection(self.node2, self.iface2) self.ec.register_connection(self.app2, self.node2) self.ec.register_condition(self.app2, ResourceAction.START, self.app1, ResourceState.STARTED , "2s") self.ec.register_condition([self.app1, self.app2], ResourceAction.STOP, self.app1, ResourceState.STARTED , "4s") self.ec.deploy() self.ec.wait_finished([self.app1, self.app2]) self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.FAILED) self.ec.shutdown() self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.RELEASED)
iface = add_interface(ec, all_ip[i], xmpp_slice, xmpp_host) ec.register_connection(node, iface) ec.register_connection(iface, chann) nodes[all_hosts[i]] = node # CCN setup for the node ccnds = dict() ccnrs = dict() for i in xrange(len(all_hosts)): ccndstart = add_app(ec, nodes[all_hosts[i]], "#ccndstart", "ccndstart &", env, xmpp_slice, xmpp_host) ccnr = add_app(ec, nodes[all_hosts[i]], "#ccnr", "ccnr &", env, xmpp_slice, xmpp_host) ccnds[all_hosts[i]] = ccndstart ccnrs[all_hosts[i]] = ccnr ec.register_condition(ccnr, ResourceAction.START, ccndstart, ResourceState.STARTED, "1s") # CCNDC setup # l1 : h1 - h2 , h2 - h1 l1u = add_ccnd(ec, nodes[host1], ip2, xmpp_slice, xmpp_host) l1d = add_ccnd(ec, nodes[host2], ip1, xmpp_slice, xmpp_host) # l2 : h2 - h3 , h3 - h2 l2u = add_ccnd(ec, nodes[host2], ip3, xmpp_slice, xmpp_host) l2d = add_ccnd(ec, nodes[host3], ip2, xmpp_slice, xmpp_host) # l3 : h3 - h4 , h4 - h3 l3u = add_ccnd(ec, nodes[host3], ip4, xmpp_slice, xmpp_host) l3d = add_ccnd(ec, nodes[host4], ip3, xmpp_slice, xmpp_host) # l4 : h4 - h1 , h1 - h4
## Add a OMFApplication to count the number of bytes in the transmitted video app3 = ec.register_resource("omf::Application") ## Send the transmitted video to a file. ec.set(app3, "command", "ls -lah /root/video.ts") ec.register_connection(app3, node2) app4 = ec.register_resource("omf::Application") ec.set(app4, "command", "/usr/bin/killall vlc_app") ec.register_connection(app4, node1) app5 = ec.register_resource("omf::Application") ec.set(app5, "command", "/usr/bin/killall vlc_app") ec.register_connection(app5, node2) ## start app2 5s after app1 ec.register_condition(app2, ResourceAction.START, app1, ResourceState.STARTED , "5s") # start app3 after app2 stopped ec.register_condition(app3, ResourceAction.START, app2, ResourceState.STOPPED , "5s") # start the kill of vlc processes after they stopped ec.register_condition(app4, ResourceAction.START, app1, ResourceState.STOPPED , "5s") ec.register_condition(app5, ResourceAction.START, app2, ResourceState.STOPPED , "5s") ## We need to explicitly STOP all applications ## stop app1 65s after it started ec.register_condition(app1, ResourceAction.STOP, app1, ResourceState.STARTED , "65s") ## stop app2 5 seconds after app2 ec.register_condition(app2, ResourceAction.STOP, app1, ResourceState.STOPPED , "5s") # stop app3 after 5s ec.register_condition(app3, ResourceAction.STOP, app3, ResourceState.STOPPED , "5s") # stop app4 ec.register_condition(app4, ResourceAction.STOP, app4, ResourceState.STARTED , "5s")
def t_cross_ping(self, host, user=None, identity=None): ec = ExperimentController(exp_id="test-linux-ns3-tap-fd") node = ec.register_resource("linux::Node") if host == "localhost": ec.set(node, "hostname", "localhost") else: ec.set(node, "hostname", host) ec.set(node, "username", user) ec.set(node, "identity", identity) ec.set(node, "cleanProcesses", True) ec.set(node, "cleanExperiment", True) simu = ec.register_resource("linux::ns3::Simulation") ec.set(simu, "simulatorImplementationType", "ns3::RealtimeSimulatorImpl") ec.set(simu, "checksumEnabled", True) ec.set(simu, "verbose", True) #ec.set(simu, "buildMode", "debug") #ec.set(simu, "nsLog", "FdNetDevice") ec.register_connection(simu, node) nsnode1 = add_ns3_node(ec, simu) dev1 = add_point2point_device(ec, nsnode1, "10.0.0.1", "30") nsnode2 = add_ns3_node(ec, simu) dev2 = add_point2point_device(ec, nsnode2, "10.0.0.2", "30") # Add routes on the NS3 side r1 = ec.register_resource("ns3::Route") ec.set(r1, "network", "10.0.1.0") ec.set(r1, "prefix", "30") ec.set(r1, "nexthop", "10.0.0.1") ec.register_connection(r1, nsnode2) # Create channel chan = ec.register_resource("ns3::PointToPointChannel") ec.set(chan, "Delay", "0s") ec.register_connection(chan, dev1) ec.register_connection(chan, dev2) fddev = add_fd_device(ec, nsnode1, "10.0.1.2", "30") ec.enable_trace(fddev, "pcap") ec.enable_trace(fddev, "promiscPcap") ec.enable_trace(fddev, "ascii") tap = add_tap_device(ec, node, "10.0.1.1", "30") crosslink = ec.register_resource("linux::ns3::TapFdLink") ec.register_connection(crosslink, tap) ec.register_connection(crosslink, fddev) # Add routes on the localhost side r2 = ec.register_resource("linux::Route") ec.set(r2, "network", "10.0.0.0") ec.set(r2, "prefix", "30") ec.set(r2, "nexthop", "10.0.1.2") ec.register_connection(r2, tap) app = ec.register_resource("linux::Application") ec.set(app, "command", "ping -c3 10.0.0.1") ec.register_connection(app, node) ec.register_condition(app, ResourceAction.START, simu, ResourceState.STARTED, time="5s") ec.deploy() ec.wait_finished([app]) stdout = ec.trace(app, "stdout") expected = "3 packets transmitted, 3 received, 0% packet loss" self.assertTrue(stdout.find(expected) > -1) ## Releasing to force ns3 to flush the traces ec.release() pcap = ec.trace(fddev, "pcap") self.assertTrue(len(pcap) > 4000) ec.shutdown()
ec.set(client, "depends", "nc") ec.set(client, "command", command) ec.register_connection(client, node2) # Register a tcpdump in the server node to monitor the file transfer command = "tcpdump -ni eth0 -w file_transfer.pcap -s0 port 1234 2>&1" capture = ec.register_resource("linux::Application") ec.set(capture, "depends", "tcpdump") ec.set(capture, "command", command) ec.set(capture, "sudo", True) ec.register_connection(capture, node1) # Register conditions 1. nodes ; 2. start tcpdump capture ; 3. client listen port 1234 ; # 4. server start sending video ec.register_condition(server, ResourceAction.START, client, ResourceState.STARTED) ec.register_condition(client, ResourceAction.START, capture, ResourceState.STARTED) # Deploy ec.deploy() # Wait until the applications are finish to retrive the traces ec.wait_finished([server, client]) # Retrieve traces from nc and tcpdump bw = ec.trace(server, "bw.txt") pcap = ec.trace(capture, "file_transfer.pcap") # Choose a directory to store the traces, example f = open("/home/<user>/bw.txt", "w") f = open("bw.txt", "w")
ec.set(chan, 'channel', "6") # Create and Configure the Application app1 = ec.register_resource("omf::Application") ec.set(app1, 'command', "DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority /root/vlc/vlc-1.1.13/cvlc /root/10-by-p0d.avi --sout '#rtp{dst=192.168.0.27,port=1234,mux=ts}'") app2 = ec.register_resource("omf::Application") ec.set(app2, 'command', "DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority /root/vlc/vlc-1.1.13/cvlc rtp://192.168.0.27:1234") # Connection ec.register_connection(iface1, node1) ec.register_connection(iface2, node2) ec.register_connection(iface1, chan) ec.register_connection(iface2, chan) ec.register_connection(app1, node1) ec.register_connection(app2, node2) ec.register_condition([app2], ResourceAction.START, app1, ResourceState.STARTED , "4s") ec.register_condition([app1,app2], ResourceAction.STOP, app2, ResourceState.STARTED , "30s") # Deploy ec.deploy() ec.wait_finished([app1,app2]) # Stop Experiment ec.shutdown()
ec.set(client, "depends", "nc") ec.set(client, "command", command) ec.register_connection(client, node2) # Register a tcpdump in the server node to monitor the file transfer command = "tcpdump -ni eth0 -w file_transfer.pcap -s0 port 1234 2>&1" capture = ec.register_resource("linux::Application") ec.set(capture, "depends", "tcpdump") ec.set(capture, "command", command) ec.set(capture, "sudo", True) ec.register_connection(capture, node1) # Register conditions 1. nodes ; 2. start tcpdump capture ; 3. client listen port 1234 ; # 4. server start sending video ec.register_condition(server, ResourceAction.START, client, ResourceState.STARTED) ec.register_condition(client, ResourceAction.START, capture, ResourceState.STARTED) # Deploy ec.deploy() # Wait until the applications are finish to retrive the traces ec.wait_finished([server, client]) # Retrieve traces from nc and tcpdump bw = ec.trace(server, "bw.txt") pcap = ec.trace(capture, "file_transfer.pcap") # Choose a directory to store the traces, example f = open("/home/<user>/bw.txt", "w") f = open("bw.txt", "w") f.write(bw)
class OMFVLCWrongCaseWithNonCriticalDep(unittest.TestCase): id = 3000 def setUp(self): self.ec = ExperimentController( exp_id=str(OMFVLCWrongCaseWithNonCriticalDep.id)) OMFVLCWrongCaseWithNonCriticalDep.id += 1 self.node1 = self.ec.register_resource("omf::Node") self.ec.set(self.node1, 'hostname', 'wlab12') self.ec.set(self.node1, 'xmppUser', "nepi") self.ec.set(self.node1, 'xmppServer', "xmpp-plexus.onelab.eu") self.ec.set(self.node1, 'xmppPort', "5222") self.ec.set(self.node1, 'xmppPassword', "1234") self.iface1 = self.ec.register_resource("omf::WifiInterface") self.ec.set(self.iface1, 'name', "wlan0") self.ec.set(self.iface1, 'mode', "adhoc") self.ec.set(self.iface1, 'hw_mode', "g") self.ec.set(self.iface1, 'essid', "vlcexp") self.ec.set(self.iface1, 'ip', "10.0.0.12/24") self.app1 = self.ec.register_resource("omf::Application") self.ec.set(self.app1, 'appid', 'Kill#1') self.ec.set(self.app1, 'command', "/usr/bin/test -1") self.ec.set(self.app1, 'env', "DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority") self.ec.register_connection(self.app1, self.node1) self.ec.register_connection(self.node1, self.iface1) def test_deploy_with_app_nc_and_critical_wrong(self): self.node2 = self.ec.register_resource("omf::Node") self.ec.set(self.node2, 'hostname', 'wlab49') self.ec.set(self.node2, 'xmppUser', "nepi") self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu") self.ec.set(self.node2, 'xmppPort', "5222") self.ec.set(self.node2, 'xmppPassword', "1234") self.iface2 = self.ec.register_resource("omf::WifiInterface") self.ec.set(self.iface2, 'name', "wlan0") self.ec.set(self.iface2, 'mode', "adhoc") self.ec.set(self.iface2, 'hw_mode', "g") self.ec.set(self.iface2, 'essid', "vlcexp") self.ec.set(self.iface2, 'ip', "10.0.0.49/24") self.channel = self.ec.register_resource("omf::Channel") self.ec.set(self.channel, 'channel', "6") self.app2 = self.ec.register_resource("omf::Application") self.ec.set(self.app2, "critical", False) self.ec.set(self.app2, 'appid', 'Kill#32') self.app3 = self.ec.register_resource("omf::Application") self.ec.set(self.app3, 'appid', 'Kill#33') self.ec.register_connection(self.iface1, self.channel) self.ec.register_connection(self.node2, self.iface2) self.ec.register_connection(self.iface2, self.channel) self.ec.register_connection(self.app2, self.node2) self.ec.register_connection(self.app3, self.node2) self.ec.register_condition(self.app2, ResourceAction.START, self.app1, ResourceState.STARTED, "5s") self.ec.register_condition(self.app3, ResourceAction.START, self.app2, ResourceState.STARTED, "5s") self.ec.register_condition([self.app1, self.app2, self.app3], ResourceAction.STOP, self.app1, ResourceState.STARTED, "15s") self.ec.deploy() self.ec.wait_finished([self.app1, self.app2, self.app3]) self.assertEquals( self.ec.get_resource(self.app2).state, ResourceState.FAILED) self.assertEquals( self.ec.get_resource(self.app3).state, ResourceState.FAILED) self.ec.shutdown() self.assertEquals( self.ec.get_resource(self.node1).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.node2).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.iface1).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.iface2).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.channel).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.app1).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.app2).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.app3).state, ResourceState.RELEASED) def test_deploy_with_app_nc_and_critical_right(self): self.node2 = self.ec.register_resource("omf::Node") self.ec.set(self.node2, 'hostname', 'wlab49') self.ec.set(self.node2, 'xmppUser', "nepi") self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu") self.ec.set(self.node2, 'xmppPort', "5222") self.ec.set(self.node2, 'xmppPassword', "1234") self.iface2 = self.ec.register_resource("omf::WifiInterface") self.ec.set(self.iface2, 'name', "wlan0") self.ec.set(self.iface2, 'mode', "adhoc") self.ec.set(self.iface2, 'hw_mode', "g") self.ec.set(self.iface2, 'essid', "vlcexp") self.ec.set(self.iface2, 'ip', "10.0.0.49/24") self.channel = self.ec.register_resource("omf::Channel") self.ec.set(self.channel, 'channel', "6") self.app2 = self.ec.register_resource("omf::Application") self.ec.set(self.app2, "critical", False) self.ec.set(self.app2, 'appid', 'Kill#32') self.app3 = self.ec.register_resource("omf::Application") self.ec.set(self.app3, 'appid', 'Kill#3') self.ec.set(self.app3, 'command', "/usr/bin/test -3") self.ec.set(self.app3, 'env', "DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority") self.ec.register_connection(self.iface1, self.channel) self.ec.register_connection(self.node2, self.iface2) self.ec.register_connection(self.iface2, self.channel) self.ec.register_connection(self.app2, self.node2) self.ec.register_connection(self.app3, self.node2) self.ec.register_condition(self.app2, ResourceAction.START, self.app1, ResourceState.STARTED, "5s") self.ec.register_condition(self.app3, ResourceAction.START, self.app2, ResourceState.STARTED, "5s") self.ec.register_condition([self.app1, self.app2, self.app3], ResourceAction.STOP, self.app1, ResourceState.STARTED, "15s") self.ec.deploy() self.ec.wait_finished([self.app1, self.app2, self.app3]) self.assertEquals( self.ec.get_resource(self.app2).state, ResourceState.FAILED) #self.assertEquals(self.ec.get_resource(self.app3).state, ResourceState.STOPPED) self.ec.shutdown() self.assertEquals( self.ec.get_resource(self.node1).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.node2).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.iface1).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.iface2).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.channel).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.app1).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.app2).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.app3).state, ResourceState.RELEASED) def test_deploy_with_many_app_nc_and_critical(self): self.node2 = self.ec.register_resource("omf::Node") self.ec.set(self.node2, 'hostname', 'wlab49') self.ec.set(self.node2, 'xmppUser', "nepi") self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu") self.ec.set(self.node2, 'xmppPort', "5222") self.ec.set(self.node2, 'xmppPassword', "1234") self.iface2 = self.ec.register_resource("omf::WifiInterface") self.ec.set(self.iface2, 'name', "wlan0") self.ec.set(self.iface2, 'mode', "adhoc") self.ec.set(self.iface2, 'hw_mode', "g") self.ec.set(self.iface2, 'essid', "vlcexp") self.ec.set(self.iface2, 'ip', "10.0.0.49/24") self.channel = self.ec.register_resource("omf::Channel") self.ec.set(self.channel, 'channel', "6") self.app2 = self.ec.register_resource("omf::Application") self.ec.set(self.app2, "critical", False) self.ec.set(self.app2, 'appid', 'Kill#32') self.app3 = self.ec.register_resource("omf::Application") self.ec.set(self.app3, "critical", False) self.ec.set(self.app3, 'appid', 'Kill#3') self.ec.set(self.app3, 'command', "/usr/bin/test -3") self.ec.set(self.app3, 'env', "DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority") self.app4 = self.ec.register_resource("omf::Application") self.ec.set(self.app4, 'appid', 'Kill#4') self.ec.set(self.app4, 'command', "/usr/bin/test -4") self.ec.set(self.app4, 'env', "DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority") self.app5 = self.ec.register_resource("omf::Application") self.ec.set(self.app5, "critical", False) self.ec.set(self.app5, 'appid', 'Kill#32') self.app6 = self.ec.register_resource("omf::Application") self.ec.set(self.app6, 'appid', 'Kill#6') self.ec.set(self.app6, 'command', "/usr/bin/test -6") self.ec.set(self.app6, 'env', "DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority") self.ec.register_connection(self.iface1, self.channel) self.ec.register_connection(self.node2, self.iface2) self.ec.register_connection(self.iface2, self.channel) self.ec.register_connection(self.app2, self.node1) self.ec.register_connection(self.app3, self.node1) self.ec.register_connection(self.app4, self.node2) self.ec.register_connection(self.app5, self.node2) self.ec.register_connection(self.app6, self.node2) self.ec.register_condition(self.app2, ResourceAction.START, self.app1, ResourceState.STARTED, "4s") self.ec.register_condition(self.app3, ResourceAction.START, self.app2, ResourceState.STARTED, "4s") self.ec.register_condition(self.app4, ResourceAction.START, self.app1, ResourceState.STARTED, "4s") self.ec.register_condition(self.app5, ResourceAction.START, self.app4, ResourceState.STARTED, "4s") self.ec.register_condition(self.app6, ResourceAction.START, self.app5, ResourceState.STARTED, "4s") self.ec.register_condition( [self.app1, self.app2, self.app3, self.app4, self.app5, self.app6], ResourceAction.STOP, [self.app1, self.app2, self.app3, self.app4, self.app5, self.app6], ResourceState.STARTED, "5s") self.ec.deploy() self.ec.wait_finished( [self.app1, self.app2, self.app3, self.app4, self.app5, self.app6]) #self.assertEquals(self.ec.get_resource(self.app3).state, ResourceState.STOPPED) self.assertEquals( self.ec.get_resource(self.app2).state, ResourceState.FAILED) #self.assertEquals(self.ec.get_resource(self.app4).state, ResourceState.STOPPED) self.assertEquals( self.ec.get_resource(self.app5).state, ResourceState.FAILED) #self.assertEquals(self.ec.get_resource(self.app6).state, ResourceState.STOPPED) self.ec.shutdown() self.assertEquals( self.ec.get_resource(self.node1).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.node2).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.iface1).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.iface2).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.channel).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.app1).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.app2).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.app3).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.app4).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.app5).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.app6).state, ResourceState.RELEASED)
# border node 2 bnode2 = add_node(ec, host6, pl_user, pl_ssh_key) ccndb2 = add_ccnd(ec, bnode2) ccnrb2 = add_ccnr(ec, ccndb2) ccnds[host6] = ccndb2 app = add_stream(ec, ccndb2, content_name) # connect border nodes add_fib_entry(ec, ccndb1, host1) add_fib_entry(ec, ccnds[host1], host5) add_fib_entry(ec, ccndb2, host3) add_fib_entry(ec, ccnds[host3], host6) # Put down l5 10s after transfer started ec.register_condition(l5u, ResourceAction.STOP, app, ResourceState.STARTED, time = "10s") ec.register_condition(l5d, ResourceAction.STOP, app, ResourceState.STARTED, time = "10s") # Register a collector to automatically collect traces collector = add_collector(ec, "stderr") for ccnd in ccnds.values(): ec.register_connection(collector, ccnd) # deploy all ResourceManagers ec.deploy() # Wait until ccncat has started retrieving the content ec.wait_started([app]) rvideo_path = ec.trace(app, "stdout", attr = TraceAttr.PATH)
class OMFEachTestCase(unittest.TestCase): def setUp(self): self.ec = ExperimentController(exp_id="99999") self.node1 = self.ec.register_resource("omf::Node") self.ec.set(self.node1, 'hostname', 'wlab12') self.ec.set(self.node1, 'xmppUser', "nepi") self.ec.set(self.node1, 'xmppServer', "xmpp-plexus.onelab.eu") self.ec.set(self.node1, 'xmppPort', "5222") self.ec.set(self.node1, 'xmppPassword', "1234") self.iface1 = self.ec.register_resource("omf::WifiInterface") self.ec.set(self.iface1, 'name', "wlan0") self.ec.set(self.iface1, 'mode', "adhoc") self.ec.set(self.iface1, 'hw_mode', "g") self.ec.set(self.iface1, 'essid', "vlcexp") self.ec.set(self.iface1, 'ip', "10.0.0.17/24") self.channel = self.ec.register_resource("omf::Channel") self.ec.set(self.channel, 'channel', "6") self.ec.set(self.channel, 'xmppUser', "nepi") self.ec.set(self.channel, 'xmppServer', "xmpp-plexus.onelab.eu") self.ec.set(self.channel, 'xmppPort', "5222") self.ec.set(self.channel, 'xmppPassword', "1234") self.app1 = self.ec.register_resource("omf::Application") self.ec.set(self.app1, 'appid', 'Vlc#1') 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}'" ) self.ec.set(self.app1, 'env', "DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority") self.app2 = self.ec.register_resource("omf::Application") self.app3 = self.ec.register_resource("omf::Application") self.app4 = self.ec.register_resource("omf::Application") self.app5 = self.ec.register_resource("omf::Application") self.ec.register_connection(self.app1, self.node1) self.ec.register_connection(self.app2, self.node1) self.ec.register_connection(self.app3, self.node1) self.ec.register_connection(self.app4, self.node1) self.ec.register_connection(self.app5, self.node1) self.ec.register_connection(self.node1, self.iface1) self.ec.register_connection(self.iface1, self.channel) self.ec.register_condition(self.app2, ResourceAction.START, self.app1, ResourceState.STARTED, "3s") self.ec.register_condition(self.app3, ResourceAction.START, self.app2, ResourceState.STARTED, "2s") self.ec.register_condition(self.app4, ResourceAction.START, self.app3, ResourceState.STARTED, "3s") self.ec.register_condition(self.app5, ResourceAction.START, [self.app3, self.app2], ResourceState.STARTED, "2s") self.ec.register_condition(self.app5, ResourceAction.START, self.app1, ResourceState.STARTED, "25s") self.ec.register_condition( [self.app1, self.app2, self.app3, self.app4, self.app5], ResourceAction.STOP, self.app5, ResourceState.STARTED, "1s") def tearDown(self): self.ec.shutdown() def test_creation_and_configuration_node(self): self.assertEquals(self.ec.get(self.node1, 'hostname'), 'wlab12') self.assertEquals(self.ec.get(self.node1, 'xmppUser'), 'nepi') self.assertEquals(self.ec.get(self.node1, 'xmppServer'), 'xmpp-plexus.onelab.eu') self.assertEquals(self.ec.get(self.node1, 'xmppPort'), '5222') self.assertEquals(self.ec.get(self.node1, 'xmppPassword'), '1234') self.assertEquals(self.ec.get(self.node1, 'version'), '6') def test_creation_and_configuration_interface(self): self.assertEquals(self.ec.get(self.iface1, 'name'), 'wlan0') self.assertEquals(self.ec.get(self.iface1, 'mode'), 'adhoc') self.assertEquals(self.ec.get(self.iface1, 'hw_mode'), 'g') self.assertEquals(self.ec.get(self.iface1, 'essid'), 'vlcexp') self.assertEquals(self.ec.get(self.iface1, 'ip'), '10.0.0.17/24') self.assertEquals(self.ec.get(self.iface1, 'version'), '6') def test_creation_and_configuration_channel(self): self.assertEquals(self.ec.get(self.channel, 'channel'), '6') self.assertEquals(self.ec.get(self.channel, 'xmppUser'), 'nepi') self.assertEquals(self.ec.get(self.channel, 'xmppServer'), 'xmpp-plexus.onelab.eu') self.assertEquals(self.ec.get(self.channel, 'xmppPort'), '5222') self.assertEquals(self.ec.get(self.channel, 'xmppPassword'), '1234') self.assertEquals(self.ec.get(self.channel, 'version'), '6') def test_creation_and_configuration_application(self): self.assertEquals(self.ec.get(self.app1, 'appid'), 'Vlc#1') self.assertEquals( self.ec.get(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}'" ) self.assertEquals( self.ec.get(self.app1, 'env'), 'DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority') self.assertEquals(self.ec.get(self.app1, 'version'), '6') def test_connection(self): self.assertEquals(len(self.ec.get_resource(self.node1).connections), 6) self.assertEquals(len(self.ec.get_resource(self.iface1).connections), 2) self.assertEquals(len(self.ec.get_resource(self.channel).connections), 1) self.assertEquals(len(self.ec.get_resource(self.app1).connections), 1) self.assertEquals(len(self.ec.get_resource(self.app2).connections), 1) def test_condition(self): self.assertEquals( len( self.ec.get_resource( self.app1).conditions[ResourceAction.STOP]), 1) self.assertEquals( len( self.ec.get_resource( self.app2).conditions[ResourceAction.START]), 1) self.assertEquals( len( self.ec.get_resource( self.app3).conditions[ResourceAction.START]), 1) self.assertEquals( len( self.ec.get_resource( self.app4).conditions[ResourceAction.STOP]), 1) self.assertEquals( len( self.ec.get_resource( self.app5).conditions[ResourceAction.START]), 2)
def test_deploy(self): ec = ExperimentController(exp_id="5421") self.node1 = ec.register_resource("omf::Node") ec.set(self.node1, 'hostname', 'wlab12') ec.set(self.node1, 'xmppUser', "nepi") ec.set(self.node1, 'xmppServer', "xmpp-plexus.onelab.eu") ec.set(self.node1, 'xmppPort', "5222") ec.set(self.node1, 'xmppPassword', "1234") self.iface1 = ec.register_resource("omf::WifiInterface") ec.set(self.iface1, 'name', "wlan0") ec.set(self.iface1, 'mode', "adhoc") ec.set(self.iface1, 'hw_mode', "g") ec.set(self.iface1, 'essid', "vlcexp") ec.set(self.iface1, 'ip', "10.0.0.17/24") self.channel = ec.register_resource("omf::Channel") ec.set(self.channel, 'channel', "6") ec.set(self.channel, 'xmppUser', "nepi") ec.set(self.channel, 'xmppServer', "xmpp-plexus.onelab.eu") ec.set(self.channel, 'xmppPort', "5222") ec.set(self.channel, 'xmppPassword', "1234") self.app1 = ec.register_resource("omf::Application") ec.set(self.app1, 'appid', 'Vlc#1') ec.set(self.app1, 'command', "ping -c5 10.0.0.17") ec.register_connection(self.app1, self.node1) ec.register_connection(self.node1, self.iface1) ec.register_connection(self.iface1, self.channel) ec.register_condition(self.app1, ResourceAction.STOP, self.app1, ResourceState.STARTED, "10s") ec.deploy() ec.wait_finished(self.app1) stdout_1 = ec.trace(self.app1, "stdout") stderr_1 = ec.trace(self.app1, "stderr") if stdout_1: f = open("app1_out.txt", "w") f.write(stdout_1) f.close() if stderr_1: f = open("app1_err.txt", "w") f.write(stderr_1) f.close() self.assertEquals( ec.get_resource(self.node1).state, ResourceState.STARTED) self.assertEquals( ec.get_resource(self.iface1).state, ResourceState.STARTED) self.assertEquals( ec.get_resource(self.channel).state, ResourceState.STARTED) self.assertEquals( ec.get_resource(self.app1).state, ResourceState.STOPPED) ec.shutdown() self.assertEquals( ec.get_resource(self.node1).state, ResourceState.RELEASED) self.assertEquals( ec.get_resource(self.iface1).state, ResourceState.RELEASED) self.assertEquals( ec.get_resource(self.channel).state, ResourceState.RELEASED) self.assertEquals( ec.get_resource(self.app1).state, ResourceState.RELEASED) t = open("app1_out.txt", "r") l = t.readlines() self.assertEquals( l[0], "PING 10.0.0.17 (10.0.0.17) 56(84) bytes of data.\n") self.assertIn( "5 packets transmitted, 5 received, 0% packet loss, time", l[-2]) self.assertIn("rtt min/avg/max/mdev = ", l[-1]) t.close() os.remove("app1_out.txt")
class OMFVLCWrongCaseWithNonCriticalDep(unittest.TestCase): id = 3000 def setUp(self): self.ec = ExperimentController(exp_id = str(OMFVLCWrongCaseWithNonCriticalDep.id)) OMFVLCWrongCaseWithNonCriticalDep.id += 1 self.node1 = self.ec.register_resource("omf::Node") self.ec.set(self.node1, 'hostname', 'wlab12') self.ec.set(self.node1, 'xmppUser', "nepi") self.ec.set(self.node1, 'xmppServer', "xmpp-plexus.onelab.eu") self.ec.set(self.node1, 'xmppPort', "5222") self.ec.set(self.node1, 'xmppPassword', "1234") self.iface1 = self.ec.register_resource("omf::WifiInterface") self.ec.set(self.iface1, 'name', "wlan0") self.ec.set(self.iface1, 'mode', "adhoc") self.ec.set(self.iface1, 'hw_mode', "g") self.ec.set(self.iface1, 'essid', "vlcexp") self.ec.set(self.iface1, 'ip', "10.0.0.12/24") self.app1 = self.ec.register_resource("omf::Application") self.ec.set(self.app1, 'appid', 'Kill#1') self.ec.set(self.app1, 'command', "/usr/bin/test -1") self.ec.set(self.app1, 'env', "DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority") self.ec.register_connection(self.app1, self.node1) self.ec.register_connection(self.node1, self.iface1) def test_deploy_with_app_nc_and_critical_wrong(self): self.node2 = self.ec.register_resource("omf::Node") self.ec.set(self.node2, 'hostname', 'wlab49') self.ec.set(self.node2, 'xmppUser', "nepi") self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu") self.ec.set(self.node2, 'xmppPort', "5222") self.ec.set(self.node2, 'xmppPassword', "1234") self.iface2 = self.ec.register_resource("omf::WifiInterface") self.ec.set(self.iface2, 'name', "wlan0") self.ec.set(self.iface2, 'mode', "adhoc") self.ec.set(self.iface2, 'hw_mode', "g") self.ec.set(self.iface2, 'essid', "vlcexp") self.ec.set(self.iface2, 'ip', "10.0.0.49/24") self.channel = self.ec.register_resource("omf::Channel") self.ec.set(self.channel, 'channel', "6") self.app2 = self.ec.register_resource("omf::Application") self.ec.set(self.app2, "critical", False) self.ec.set(self.app2, 'appid', 'Kill#32') self.app3 = self.ec.register_resource("omf::Application") self.ec.set(self.app3, 'appid', 'Kill#33') self.ec.register_connection(self.iface1, self.channel) self.ec.register_connection(self.node2, self.iface2) self.ec.register_connection(self.iface2, self.channel) self.ec.register_connection(self.app2, self.node2) self.ec.register_connection(self.app3, self.node2) self.ec.register_condition(self.app2, ResourceAction.START, self.app1, ResourceState.STARTED , "5s") self.ec.register_condition(self.app3, ResourceAction.START, self.app2, ResourceState.STARTED , "5s") self.ec.register_condition([self.app1, self.app2, self.app3], ResourceAction.STOP, self.app1, ResourceState.STARTED , "15s") self.ec.deploy() self.ec.wait_finished([self.app1, self.app2, self.app3]) self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.FAILED) self.assertEquals(self.ec.get_resource(self.app3).state, ResourceState.FAILED) self.ec.shutdown() self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.app3).state, ResourceState.RELEASED) def test_deploy_with_app_nc_and_critical_right(self): self.node2 = self.ec.register_resource("omf::Node") self.ec.set(self.node2, 'hostname', 'wlab49') self.ec.set(self.node2, 'xmppUser', "nepi") self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu") self.ec.set(self.node2, 'xmppPort', "5222") self.ec.set(self.node2, 'xmppPassword', "1234") self.iface2 = self.ec.register_resource("omf::WifiInterface") self.ec.set(self.iface2, 'name', "wlan0") self.ec.set(self.iface2, 'mode', "adhoc") self.ec.set(self.iface2, 'hw_mode', "g") self.ec.set(self.iface2, 'essid', "vlcexp") self.ec.set(self.iface2, 'ip', "10.0.0.49/24") self.channel = self.ec.register_resource("omf::Channel") self.ec.set(self.channel, 'channel', "6") self.app2 = self.ec.register_resource("omf::Application") self.ec.set(self.app2, "critical", False) self.ec.set(self.app2, 'appid', 'Kill#32') self.app3 = self.ec.register_resource("omf::Application") self.ec.set(self.app3, 'appid', 'Kill#3') self.ec.set(self.app3, 'command', "/usr/bin/test -3") self.ec.set(self.app3, 'env', "DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority") self.ec.register_connection(self.iface1, self.channel) self.ec.register_connection(self.node2, self.iface2) self.ec.register_connection(self.iface2, self.channel) self.ec.register_connection(self.app2, self.node2) self.ec.register_connection(self.app3, self.node2) self.ec.register_condition(self.app2, ResourceAction.START, self.app1, ResourceState.STARTED , "5s") self.ec.register_condition(self.app3, ResourceAction.START, self.app2, ResourceState.STARTED , "5s") self.ec.register_condition([self.app1, self.app2, self.app3], ResourceAction.STOP, self.app1, ResourceState.STARTED , "15s") self.ec.deploy() self.ec.wait_finished([self.app1, self.app2, self.app3]) self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.FAILED) #self.assertEquals(self.ec.get_resource(self.app3).state, ResourceState.STOPPED) self.ec.shutdown() self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.app3).state, ResourceState.RELEASED) def test_deploy_with_many_app_nc_and_critical(self): self.node2 = self.ec.register_resource("omf::Node") self.ec.set(self.node2, 'hostname', 'wlab49') self.ec.set(self.node2, 'xmppUser', "nepi") self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu") self.ec.set(self.node2, 'xmppPort', "5222") self.ec.set(self.node2, 'xmppPassword', "1234") self.iface2 = self.ec.register_resource("omf::WifiInterface") self.ec.set(self.iface2, 'name', "wlan0") self.ec.set(self.iface2, 'mode', "adhoc") self.ec.set(self.iface2, 'hw_mode', "g") self.ec.set(self.iface2, 'essid', "vlcexp") self.ec.set(self.iface2, 'ip', "10.0.0.49/24") self.channel = self.ec.register_resource("omf::Channel") self.ec.set(self.channel, 'channel', "6") self.app2 = self.ec.register_resource("omf::Application") self.ec.set(self.app2, "critical", False) self.ec.set(self.app2, 'appid', 'Kill#32') self.app3 = self.ec.register_resource("omf::Application") self.ec.set(self.app3, "critical", False) self.ec.set(self.app3, 'appid', 'Kill#3') self.ec.set(self.app3, 'command', "/usr/bin/test -3") self.ec.set(self.app3, 'env', "DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority") self.app4 = self.ec.register_resource("omf::Application") self.ec.set(self.app4, 'appid', 'Kill#4') self.ec.set(self.app4, 'command', "/usr/bin/test -4") self.ec.set(self.app4, 'env', "DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority") self.app5 = self.ec.register_resource("omf::Application") self.ec.set(self.app5, "critical", False) self.ec.set(self.app5, 'appid', 'Kill#32') self.app6 = self.ec.register_resource("omf::Application") self.ec.set(self.app6, 'appid', 'Kill#6') self.ec.set(self.app6, 'command', "/usr/bin/test -6") self.ec.set(self.app6, 'env', "DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority") self.ec.register_connection(self.iface1, self.channel) self.ec.register_connection(self.node2, self.iface2) self.ec.register_connection(self.iface2, self.channel) self.ec.register_connection(self.app2, self.node1) self.ec.register_connection(self.app3, self.node1) self.ec.register_connection(self.app4, self.node2) self.ec.register_connection(self.app5, self.node2) self.ec.register_connection(self.app6, self.node2) self.ec.register_condition(self.app2, ResourceAction.START, self.app1, ResourceState.STARTED , "4s") self.ec.register_condition(self.app3, ResourceAction.START, self.app2, ResourceState.STARTED , "4s") self.ec.register_condition(self.app4, ResourceAction.START, self.app1, ResourceState.STARTED , "4s") self.ec.register_condition(self.app5, ResourceAction.START, self.app4, ResourceState.STARTED , "4s") self.ec.register_condition(self.app6, ResourceAction.START, self.app5, ResourceState.STARTED , "4s") self.ec.register_condition([self.app1, self.app2, self.app3, self.app4, self.app5, self.app6 ], ResourceAction.STOP, [self.app1, self.app2, self.app3, self.app4, self.app5, self.app6 ], ResourceState.STARTED , "5s") self.ec.deploy() self.ec.wait_finished([self.app1, self.app2, self.app3, self.app4, self.app5, self.app6]) #self.assertEquals(self.ec.get_resource(self.app3).state, ResourceState.STOPPED) self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.FAILED) #self.assertEquals(self.ec.get_resource(self.app4).state, ResourceState.STOPPED) self.assertEquals(self.ec.get_resource(self.app5).state, ResourceState.FAILED) #self.assertEquals(self.ec.get_resource(self.app6).state, ResourceState.STOPPED) self.ec.shutdown() self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.app3).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.app4).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.app5).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.app6).state, ResourceState.RELEASED)
def test_deploy(self): ec = ExperimentController(exp_id = "5421" ) self.node1 = ec.register_resource("omf::Node") ec.set(self.node1, 'hostname', 'wlab12') ec.set(self.node1, 'xmppUser', "nepi") ec.set(self.node1, 'xmppServer', "xmpp-plexus.onelab.eu") ec.set(self.node1, 'xmppPort', "5222") ec.set(self.node1, 'xmppPassword', "1234") self.iface1 = ec.register_resource("omf::WifiInterface") ec.set(self.iface1, 'name', "wlan0") ec.set(self.iface1, 'mode', "adhoc") ec.set(self.iface1, 'hw_mode', "g") ec.set(self.iface1, 'essid', "vlcexp") ec.set(self.iface1, 'ip', "10.0.0.17/24") self.channel = ec.register_resource("omf::Channel") ec.set(self.channel, 'channel', "6") ec.set(self.channel, 'xmppUser', "nepi") ec.set(self.channel, 'xmppServer', "xmpp-plexus.onelab.eu") ec.set(self.channel, 'xmppPort', "5222") ec.set(self.channel, 'xmppPassword', "1234") self.app1 = ec.register_resource("omf::Application") ec.set(self.app1, 'appid', 'Vlc#1') 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}'") ec.set(self.app1, 'env', "DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority") self.app2 = ec.register_resource("omf::Application") ec.set(self.app2, 'appid', 'Test#1') ec.set(self.app2, 'command', "/usr/bin/test -1") ec.set(self.app2, 'env', " ") self.app3 = ec.register_resource("omf::Application") ec.set(self.app3, 'appid', 'Test#2') ec.set(self.app3, 'command', "/usr/bin/test -2") ec.set(self.app3, 'env', " ") self.app4 = ec.register_resource("omf::Application") ec.set(self.app4, 'appid', 'Test#3') ec.set(self.app4, 'command', "/usr/bin/test -3") ec.set(self.app4, 'env', " ") self.app5 = ec.register_resource("omf::Application") ec.set(self.app5, 'appid', 'Kill#2') ec.set(self.app5, 'command', "/usr/bin/killall vlc") ec.set(self.app5, 'env', " ") ec.register_connection(self.app1, self.node1) ec.register_connection(self.app2, self.node1) ec.register_connection(self.app3, self.node1) ec.register_connection(self.app4, self.node1) ec.register_connection(self.app5, self.node1) ec.register_connection(self.node1, self.iface1) ec.register_connection(self.iface1, self.channel) ec.register_condition(self.app2, ResourceAction.START, self.app1, ResourceState.STARTED , "3s") ec.register_condition(self.app3, ResourceAction.START, self.app2, ResourceState.STARTED , "2s") ec.register_condition(self.app4, ResourceAction.START, self.app3, ResourceState.STARTED , "3s") ec.register_condition(self.app5, ResourceAction.START, [self.app3, self.app2], ResourceState.STARTED , "2s") ec.register_condition(self.app5, ResourceAction.START, self.app1, ResourceState.STARTED , "25s") ec.register_condition([self.app1, self.app2, self.app3,self.app4, self.app5], ResourceAction.STOP, self.app5, ResourceState.STARTED , "1s") ec.deploy() ec.wait_finished([self.app1, self.app2, self.app3,self.app4, self.app5]) self.assertGreaterEqual(round(tdiffsec(ec.get_resource(self.app2).start_time, ec.get_resource(self.app1).start_time),0), 3.0) self.assertGreaterEqual(round(tdiffsec(ec.get_resource(self.app3).start_time, ec.get_resource(self.app2).start_time),0), 2.0) self.assertGreaterEqual(round(tdiffsec(ec.get_resource(self.app4).start_time, ec.get_resource(self.app3).start_time),0), 3.0) self.assertGreaterEqual(round(tdiffsec(ec.get_resource(self.app5).start_time, ec.get_resource(self.app3).start_time),0), 2.0) self.assertGreaterEqual(round(tdiffsec(ec.get_resource(self.app5).start_time, ec.get_resource(self.app1).start_time),0), 25.0) self.assertEquals(ec.get_resource(self.node1).state, ResourceState.STARTED) self.assertEquals(ec.get_resource(self.iface1).state, ResourceState.STARTED) self.assertEquals(ec.get_resource(self.channel).state, ResourceState.STARTED) self.assertEquals(ec.get_resource(self.app1).state, ResourceState.STOPPED) self.assertEquals(ec.get_resource(self.app2).state, ResourceState.STOPPED) self.assertEquals(ec.get_resource(self.app3).state, ResourceState.STOPPED) self.assertEquals(ec.get_resource(self.app4).state, ResourceState.STOPPED) self.assertEquals(ec.get_resource(self.app5).state, ResourceState.STOPPED) ec.shutdown() self.assertEquals(ec.get_resource(self.node1).state, ResourceState.RELEASED) self.assertEquals(ec.get_resource(self.iface1).state, ResourceState.RELEASED) self.assertEquals(ec.get_resource(self.channel).state, ResourceState.RELEASED) self.assertEquals(ec.get_resource(self.app1).state, ResourceState.RELEASED) self.assertEquals(ec.get_resource(self.app2).state, ResourceState.RELEASED) self.assertEquals(ec.get_resource(self.app3).state, ResourceState.RELEASED) self.assertEquals(ec.get_resource(self.app4).state, ResourceState.RELEASED) self.assertEquals(ec.get_resource(self.app5).state, ResourceState.RELEASED)
ec.set(app4, 'command', "/usr/bin/killall vlc_app") ec.set(app4, 'env', " ") ec.set(app4, 'version', "5") # Connection ec.register_connection(app3, node1) ec.register_connection(app1, node1) ec.register_connection(node1, iface1) ec.register_connection(iface1, channel) ec.register_connection(iface2, channel) ec.register_connection(node2, iface2) ec.register_connection(app2, node2) ec.register_connection(app4, node2) # User Behaviour ec.register_condition(app2, ResourceAction.START, app1, ResourceState.STARTED, "4s") ec.register_condition([app1, app2], ResourceAction.STOP, app2, ResourceState.STARTED, "22s") ec.register_condition([app3, app4], ResourceAction.START, app2, ResourceState.STARTED, "25s") ec.register_condition([app3, app4], ResourceAction.STOP, app3, ResourceState.STARTED, "1s") # Deploy ec.deploy() ec.wait_finished([app1, app2, app3, app4]) # Stop Experiment ec.shutdown()
if mode == 'vod': update_file_wificenter = "echo -e 'new BUNNY vod enabled\\n"\ "setup BUNNY input rtsp://128.232.103.203:5554/BUNNY' > /root/wificenter.vlm" command_wificenter = "/root/vlc/vlc-1.1.13/cvlc --vlm-conf /root/wificenter.vlm --rtsp-host 192.168.0.1:5554" elif mode == 'broadcast': update_file_wificenter = "echo -e 'new BUNNY broadcast enabled loop\\n"\ "setup BUNNY input rtsp://128.232.103.203:8554/BUNNY\\n"\ "setup BUNNY output #rtp{access=udp,mux=ts,sdp=rtsp://0.0.0.0:8554/BUNNY}\\n\\n"\ "new test_sched schedule enabled\\n"\ "setup test_sched append control BUNNY play' > /root/wificenter.vlm" command_wificenter = "/root/vlc/vlc-1.1.13/cvlc --vlm-conf /root/wificenter.vlm --rtsp-host 192.168.0.1:8554" upload_conf = create_omf_app(ec, update_file_wificenter, wifi_center) vlc_wificenter = create_omf_app(ec, command_wificenter, wifi_center) ec.register_condition(upload_conf, ResourceAction.START, vlc_server, ResourceState.STARTED, "2s") ec.register_condition(vlc_wificenter, ResourceAction.START, upload_conf, ResourceState.STARTED, "2s") # measurements in video server (PL node) measure_videoserver = ec.register_resource("linux::Application") ec.set(measure_videoserver, "depends", "tcpdump") ec.set(measure_videoserver, "sudo", True) command = "tcpdump -i eth0 not arp -n -w /tmp/capplserver_%s.pcap" % ( "$(date +'%Y%m%d%H%M%S')") ec.set(measure_videoserver, "command", command) ec.register_connection(measure_videoserver, video_server) # Deploy servers ec.deploy([vlc_server, upload_conf, vlc_wificenter, measure_videoserver])
def t_cross_ping(self, host, user = None, identity = None): ec = ExperimentController(exp_id = "test-linux-ns3-tap-fd") node = ec.register_resource("linux::Node") if host == "localhost": ec.set(node, "hostname", "localhost") else: ec.set(node, "hostname", host) ec.set(node, "username", user) ec.set(node, "identity", identity) ec.set(node, "cleanProcesses", True) ec.set(node, "cleanExperiment", True) simu = ec.register_resource("linux::ns3::Simulation") ec.set(simu, "simulatorImplementationType", "ns3::RealtimeSimulatorImpl") ec.set(simu, "checksumEnabled", True) ec.set(simu, "verbose", True) #ec.set(simu, "buildMode", "debug") #ec.set(simu, "nsLog", "FdNetDevice") ec.register_connection(simu, node) nsnode1 = add_ns3_node(ec, simu) dev1 = add_point2point_device(ec, nsnode1, "10.0.0.1", "30") nsnode2 = add_ns3_node(ec, simu) dev2 = add_point2point_device(ec, nsnode2, "10.0.0.2", "30") # Add routes on the NS3 side r1 = ec.register_resource("ns3::Route") ec.set(r1, "network", "10.0.1.0") ec.set(r1, "prefix", "30") ec.set(r1, "nexthop", "10.0.0.1") ec.register_connection(r1, nsnode2) # Create channel chan = ec.register_resource("ns3::PointToPointChannel") ec.set(chan, "Delay", "0s") ec.register_connection(chan, dev1) ec.register_connection(chan, dev2) fddev = add_fd_device(ec, nsnode1, "10.0.1.2", "30") ec.enable_trace(fddev, "pcap") ec.enable_trace(fddev, "promiscPcap") ec.enable_trace(fddev, "ascii") tap = add_tap_device(ec, node, "10.0.1.1", "30") crosslink = ec.register_resource("linux::ns3::TapFdLink") ec.register_connection(crosslink, tap) ec.register_connection(crosslink, fddev) # Add routes on the localhost side r2 = ec.register_resource("linux::Route") ec.set(r2, "network", "10.0.0.0") ec.set(r2, "prefix", "30") ec.set(r2, "nexthop", "10.0.1.2") ec.register_connection(r2, tap) app = ec.register_resource("linux::Application") ec.set(app, "command", "ping -c3 10.0.0.1") ec.register_connection(app, node) ec.register_condition(app, ResourceAction.START, simu, ResourceState.STARTED, time="5s") ec.deploy() ec.wait_finished([app]) stdout = ec.trace(app, "stdout") expected = "3 packets transmitted, 3 received, 0% packet loss" self.assertTrue(stdout.find(expected) > -1) ## Releasing to force ns3 to flush the traces ec.release() pcap = ec.trace(fddev, "pcap") self.assertTrue(len(pcap) > 4000) ec.shutdown()
ec.set(node1, 'xmppUser', "xmpp-plexus.onelab.eu") ec.set(node1, 'xmppPort', "5222") ec.set(node1, 'xmppPassword', "1234") ec.set(node1, 'version', "5") # Create and Configure the Application app1 = ec.register_resource("omf::Application") ec.set(app1, 'appid', "robot") ec.set(app1, 'command', "/root/CTRL_test.rb coord.csv") ec.set(app1, 'env', "DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority") ec.set(app1, 'version', "5") # Connection ec.register_connection(app1, node1) ec.register_condition(app1, ResourceAction.STOP, app1, ResourceState.STARTED, "20s") # Deploy ec.deploy() ec.wait_started([app1]) ec.set(app1, 'stdin', "xxxxxxxxxxxxxxxxx") time.sleep(5) ec.set(app1, 'stdin', "xxxxxxxxxxxxxxxxx") ec.wait_finished([app1]) # Stop Experiment ec.shutdown()
# Create and Configure the PING Application app1 = ec.register_resource("omf::Application") ec.set(app1, "appid", "Ping#1") ec.set(app1, "command", "/bin/ping -c3 192.168.0.%s" % nodex[-2:]) ec.set(app1, "version", "5") ec.register_connection(app1, node1) app2 = ec.register_resource("omf::Application") ec.set(app2, "appid", "Kill#1") ec.set(app2, "command", "/usr/bin/killall ping") ec.set(app2, "version", "5") ec.register_connection(app2, node1) # User Behaviour ec.register_condition(app1, ResourceAction.STOP, app1, ResourceState.STARTED, "10s") ec.register_condition(app2, ResourceAction.START, app1, ResourceState.STARTED, "12s") ec.register_condition(app2, ResourceAction.STOP, app2, ResourceState.STARTED, "1s") # Deploy ec.deploy() ec.wait_finished([app1, app2]) print ec.trace(app1, "stdout") # Stop Experiment ec.shutdown()
ec.set(channel, "channel", chan) ec.set(channel, "xmppUser", slicename) ec.set(channel, "xmppServer", "nitlab.inf.uth.gr") ec.set(channel, "xmppPort", "5222") ec.set(channel, "xmppPassword", "1234") ec.register_connection(iface1, channel) ec.register_connection(iface2, channel) # Create and Configure the PING Application app1 = ec.register_resource("omf::Application") ec.set(app1, "appid", "Ping#1") ec.set(app1, "command", "/bin/ping -c3 192.168.0.%s" % nodez[-2:]) ec.register_connection(app1, node1) ## Make sure the ping stops after 30 seconds ec.register_condition(app1, ResourceAction.STOP, app1, ResourceState.STARTED , "30s") # Deploy ec.deploy() ec.wait_finished([app1]) # Retrieve the output of the ping command ping_output = ec.trace(app1, "stdout") print "\n PING OUTPUT\n", ping_output, "\n" # Stop Experiment ec.shutdown()
ccnd1 = add_ccnd(ec, peers) ec.register_connection(ccnd1, node1) # Register content producer application (ccnseqwriter) ## Push the file into the repository local_path_to_content = os.path.join( os.path.dirname(os.path.realpath(__file__)), "..", "big_buck_bunny_240p_mpeg4_lq.ts") content_name = "ccnx:/test/FILE" pub = add_publish(ec, local_path_to_content, content_name) ec.register_connection(pub, node1) # The movie can only be published after ccnd is running ec.register_condition(pub, ResourceAction.START, ccnd1, ResourceState.STARTED) # Register Linux host node2 = add_node(ec, hostname2, username, ssh_key) # Register CCN setup for Linux host peers = [hostname1] ccnd2 = add_ccnd(ec, peers) ec.register_connection(ccnd2, node2) # Register consumer application (ccncat) ccncat = add_ccncat(ec, content_name) ec.register_connection(ccncat, node2) # The file can only be retrieved after ccnd is running ec.register_condition(ccncat, ResourceAction.START, ccnd2,
trace_name = "%s.ping" % hostname app = add_app(ec, command, node, newname=trace_name) apps.append(app) # Register conditions # The nodes that are completely identified by their hostnames have to be provisioned # before the rest of the nodes. This assures that no other resource will use the # identified node even if the constraints matchs. # In this example node2, node3, node4 and node5, are deployed after node1 is # provisioned. node1 must be the node hostname, meanwhile node2, node3, # node4 and node5 just need to fulfill certain constraints. # Applications are always deployed after nodes, so no need to register conditions # for the apps in this example. ec.register_condition(node2, ResourceAction.DEPLOY, node1, ResourceState.PROVISIONED) ec.register_condition(node3, ResourceAction.DEPLOY, node1, ResourceState.PROVISIONED) ec.register_condition(node4, ResourceAction.DEPLOY, node1, ResourceState.PROVISIONED) ec.register_condition(node5, ResourceAction.DEPLOY, node1, ResourceState.PROVISIONED) # Deploy the experiment: ec.deploy() # Wait until the applications are finish to retrive the traces: ec.wait_finished(apps) print "Results stored at", ec.exp_dir
class OMFEachTestCase(unittest.TestCase): def setUp(self): self.ec = ExperimentController(exp_id = "99999") self.node1 = self.ec.register_resource("omf::Node") self.ec.set(self.node1, 'hostname', 'wlab12') self.ec.set(self.node1, 'xmppUser', "nepi") self.ec.set(self.node1, 'xmppServer', "xmpp-plexus.onelab.eu") self.ec.set(self.node1, 'xmppPort', "5222") self.ec.set(self.node1, 'xmppPassword', "1234") self.iface1 = self.ec.register_resource("omf::WifiInterface") self.ec.set(self.iface1, 'name', "wlan0") self.ec.set(self.iface1, 'mode', "adhoc") self.ec.set(self.iface1, 'hw_mode', "g") self.ec.set(self.iface1, 'essid', "vlcexp") self.ec.set(self.iface1, 'ip', "10.0.0.17/24") self.channel = self.ec.register_resource("omf::Channel") self.ec.set(self.channel, 'channel', "6") self.ec.set(self.channel, 'xmppUser', "nepi") self.ec.set(self.channel, 'xmppServer', "xmpp-plexus.onelab.eu") self.ec.set(self.channel, 'xmppPort', "5222") self.ec.set(self.channel, 'xmppPassword', "1234") self.app1 = self.ec.register_resource("omf::Application") self.ec.set(self.app1, 'appid', 'Vlc#1') 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}'") self.ec.set(self.app1, 'env', "DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority") self.app2 = self.ec.register_resource("omf::Application") self.app3 = self.ec.register_resource("omf::Application") self.app4 = self.ec.register_resource("omf::Application") self.app5 = self.ec.register_resource("omf::Application") self.ec.register_connection(self.app1, self.node1) self.ec.register_connection(self.app2, self.node1) self.ec.register_connection(self.app3, self.node1) self.ec.register_connection(self.app4, self.node1) self.ec.register_connection(self.app5, self.node1) self.ec.register_connection(self.node1, self.iface1) self.ec.register_connection(self.iface1, self.channel) self.ec.register_condition(self.app2, ResourceAction.START, self.app1, ResourceState.STARTED , "3s") self.ec.register_condition(self.app3, ResourceAction.START, self.app2, ResourceState.STARTED , "2s") self.ec.register_condition(self.app4, ResourceAction.START, self.app3, ResourceState.STARTED , "3s") self.ec.register_condition(self.app5, ResourceAction.START, [self.app3, self.app2], ResourceState.STARTED , "2s") self.ec.register_condition(self.app5, ResourceAction.START, self.app1, ResourceState.STARTED , "25s") self.ec.register_condition([self.app1, self.app2, self.app3,self.app4, self.app5], ResourceAction.STOP, self.app5, ResourceState.STARTED , "1s") def tearDown(self): self.ec.shutdown() def test_creation_and_configuration_node(self): self.assertEquals(self.ec.get(self.node1, 'hostname'), 'wlab12') self.assertEquals(self.ec.get(self.node1, 'xmppUser'), 'nepi') self.assertEquals(self.ec.get(self.node1, 'xmppServer'), 'xmpp-plexus.onelab.eu') self.assertEquals(self.ec.get(self.node1, 'xmppPort'), '5222') self.assertEquals(self.ec.get(self.node1, 'xmppPassword'), '1234') self.assertEquals(self.ec.get(self.node1, 'version'), '6') def test_creation_and_configuration_interface(self): self.assertEquals(self.ec.get(self.iface1, 'name'), 'wlan0') self.assertEquals(self.ec.get(self.iface1, 'mode'), 'adhoc') self.assertEquals(self.ec.get(self.iface1, 'hw_mode'), 'g') self.assertEquals(self.ec.get(self.iface1, 'essid'), 'vlcexp') self.assertEquals(self.ec.get(self.iface1, 'ip'), '10.0.0.17/24') self.assertEquals(self.ec.get(self.iface1, 'version'), '6') def test_creation_and_configuration_channel(self): self.assertEquals(self.ec.get(self.channel, 'channel'), '6') self.assertEquals(self.ec.get(self.channel, 'xmppUser'), 'nepi') self.assertEquals(self.ec.get(self.channel, 'xmppServer'), 'xmpp-plexus.onelab.eu') self.assertEquals(self.ec.get(self.channel, 'xmppPort'), '5222') self.assertEquals(self.ec.get(self.channel, 'xmppPassword'), '1234') self.assertEquals(self.ec.get(self.channel, 'version'), '6') def test_creation_and_configuration_application(self): self.assertEquals(self.ec.get(self.app1, 'appid'), 'Vlc#1') self.assertEquals(self.ec.get(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}'") self.assertEquals(self.ec.get(self.app1, 'env'), 'DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority') self.assertEquals(self.ec.get(self.app1, 'version'), '6') def test_connection(self): self.assertEquals(len(self.ec.get_resource(self.node1).connections), 6) self.assertEquals(len(self.ec.get_resource(self.iface1).connections), 2) self.assertEquals(len(self.ec.get_resource(self.channel).connections), 1) self.assertEquals(len(self.ec.get_resource(self.app1).connections), 1) self.assertEquals(len(self.ec.get_resource(self.app2).connections), 1) def test_condition(self): self.assertEquals(len(self.ec.get_resource(self.app1).conditions[ResourceAction.STOP]), 1) self.assertEquals(len(self.ec.get_resource(self.app2).conditions[ResourceAction.START]), 1) self.assertEquals(len(self.ec.get_resource(self.app3).conditions[ResourceAction.START]), 1) self.assertEquals(len(self.ec.get_resource(self.app4).conditions[ResourceAction.STOP]), 1) self.assertEquals(len(self.ec.get_resource(self.app5).conditions[ResourceAction.START]), 2)
class OMFVLCWrongCaseAllCritical(unittest.TestCase): id = 1000 def setUp(self): self.ec = ExperimentController( exp_id=str(OMFVLCWrongCaseAllCritical.id)) OMFVLCWrongCaseAllCritical.id += 1 self.node1 = self.ec.register_resource("omf::Node") self.ec.set(self.node1, 'hostname', 'wlab12') self.ec.set(self.node1, 'xmppUser', "nepi") self.ec.set(self.node1, 'xmppServer', "xmpp-plexus.onelab.eu") self.ec.set(self.node1, 'xmppPort', "5222") self.ec.set(self.node1, 'xmppPassword', "1234") self.iface1 = self.ec.register_resource("omf::WifiInterface") self.ec.set(self.iface1, 'name', "wlan0") self.ec.set(self.iface1, 'mode', "adhoc") self.ec.set(self.iface1, 'hw_mode', "g") self.ec.set(self.iface1, 'essid', "vlcexp") self.ec.set(self.iface1, 'ip', "10.0.0.12/24") self.app1 = self.ec.register_resource("omf::Application") self.ec.set(self.app1, 'appid', 'Vlc#1') 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}'" ) self.ec.set(self.app1, 'env', "DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority") self.ec.register_connection(self.app1, self.node1) self.ec.register_connection(self.node1, self.iface1) def test_deploy_wo_node(self): self.node2 = self.ec.register_resource("omf::Node") self.iface2 = self.ec.register_resource("omf::WifiInterface") self.ec.set(self.iface2, 'name', "wlan0") self.ec.set(self.iface2, 'mode', "adhoc") self.ec.set(self.iface2, 'hw_mode', "g") self.ec.set(self.iface2, 'essid', "vlcexp") self.ec.set(self.iface2, 'ip', "10.0.0.49/24") self.channel = self.ec.register_resource("omf::Channel") self.ec.set(self.channel, 'channel', "6") self.ec.register_connection(self.iface1, self.channel) self.ec.register_connection(self.node2, self.iface2) self.ec.register_connection(self.iface2, self.channel) self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED, "2s") self.ec.deploy() self.ec.wait_finished([self.app1]) self.assertEquals( self.ec.get_resource(self.node2).state, ResourceState.FAILED) self.ec.shutdown() self.assertEquals( self.ec.get_resource(self.node1).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.node2).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.iface1).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.iface2).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.channel).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.app1).state, ResourceState.RELEASED) def test_deploy_wo_hostname(self): self.node2 = self.ec.register_resource("omf::Node") self.ec.set(self.node2, 'xmppUser', "nepi") self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu") self.ec.set(self.node2, 'xmppPort', "5222") self.ec.set(self.node2, 'xmppPassword', "1234") self.iface2 = self.ec.register_resource("omf::WifiInterface") self.ec.set(self.iface2, 'name', "wlan0") self.ec.set(self.iface2, 'mode', "adhoc") self.ec.set(self.iface2, 'hw_mode', "g") self.ec.set(self.iface2, 'essid', "vlcexp") self.ec.set(self.iface2, 'ip', "10.0.0.49/24") self.channel = self.ec.register_resource("omf::Channel") self.ec.set(self.channel, 'channel', "6") self.ec.register_connection(self.iface1, self.channel) self.ec.register_connection(self.node2, self.iface2) self.ec.register_connection(self.iface2, self.channel) self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED, "2s") self.ec.deploy() self.ec.wait_finished([self.app1]) self.assertEquals( self.ec.get_resource(self.node2).state, ResourceState.FAILED) self.ec.shutdown() self.assertEquals( self.ec.get_resource(self.node1).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.node2).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.iface1).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.iface2).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.channel).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.app1).state, ResourceState.RELEASED) def test_deploy_wo_iface(self): self.node2 = self.ec.register_resource("omf::Node") self.ec.set(self.node2, 'hostname', 'wlab49') self.ec.set(self.node2, 'xmppUser', "nepi") self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu") self.ec.set(self.node2, 'xmppPort', "5222") self.ec.set(self.node2, 'xmppPassword', "1234") self.iface2 = self.ec.register_resource("omf::WifiInterface") self.channel = self.ec.register_resource("omf::Channel") self.ec.set(self.channel, 'channel', "6") self.ec.register_connection(self.iface1, self.channel) self.ec.register_connection(self.node2, self.iface2) self.ec.register_connection(self.iface2, self.channel) self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED, "2s") self.ec.deploy() self.ec.wait_finished([self.app1]) self.assertEquals( self.ec.get_resource(self.iface2).state, ResourceState.FAILED) self.ec.shutdown() self.assertEquals( self.ec.get_resource(self.node1).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.node2).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.iface1).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.iface2).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.channel).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.app1).state, ResourceState.RELEASED) def test_deploy_wo_channel(self): self.node2 = self.ec.register_resource("omf::Node") self.ec.set(self.node2, 'hostname', 'wlab49') self.ec.set(self.node2, 'xmppUser', "nepi") self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu") self.ec.set(self.node2, 'xmppPort', "5222") self.ec.set(self.node2, 'xmppPassword', "1234") self.iface2 = self.ec.register_resource("omf::WifiInterface") self.ec.set(self.iface2, 'name', "wlan0") self.ec.set(self.iface2, 'mode', "adhoc") self.ec.set(self.iface2, 'hw_mode', "g") self.ec.set(self.iface2, 'essid', "vlcexp") self.ec.set(self.iface2, 'ip', "10.0.0.49/24") self.channel = self.ec.register_resource("omf::Channel") self.ec.register_connection(self.iface1, self.channel) self.ec.register_connection(self.node2, self.iface2) self.ec.register_connection(self.iface2, self.channel) self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED, "2s") self.ec.deploy() self.ec.wait_finished([self.app1]) self.assertEquals( self.ec.get_resource(self.channel).state, ResourceState.FAILED) self.ec.shutdown() self.assertEquals( self.ec.get_resource(self.node1).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.node2).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.iface1).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.iface2).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.channel).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.app1).state, ResourceState.RELEASED) def test_deploy_wo_ip(self): self.node2 = self.ec.register_resource("omf::Node") self.ec.set(self.node2, 'hostname', 'wlab49') self.ec.set(self.node2, 'xmppUser', "nepi") self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu") self.ec.set(self.node2, 'xmppPort', "5222") self.ec.set(self.node2, 'xmppPassword', "1234") self.iface2 = self.ec.register_resource("omf::WifiInterface") self.ec.set(self.iface2, 'name', "wlan0") self.ec.set(self.iface2, 'mode', "adhoc") self.ec.set(self.iface2, 'hw_mode', "g") self.ec.set(self.iface2, 'essid', "vlcexp") self.channel = self.ec.register_resource("omf::Channel") self.ec.set(self.channel, 'channel', "6") self.ec.register_connection(self.iface1, self.channel) self.ec.register_connection(self.node2, self.iface2) self.ec.register_connection(self.iface2, self.channel) self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED, "2s") self.ec.deploy() self.ec.wait_finished([self.app1]) self.assertEquals( self.ec.get_resource(self.iface2).state, ResourceState.FAILED) self.ec.shutdown() self.assertEquals( self.ec.get_resource(self.node1).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.node2).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.iface1).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.iface2).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.channel).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.app1).state, ResourceState.RELEASED) def test_deploy_wo_app(self): self.node2 = self.ec.register_resource("omf::Node") self.ec.set(self.node2, 'hostname', 'wlab49') self.ec.set(self.node2, 'xmppUser', "nepi") self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu") self.ec.set(self.node2, 'xmppPort', "5222") self.ec.set(self.node2, 'xmppPassword', "1234") self.iface2 = self.ec.register_resource("omf::WifiInterface") self.ec.set(self.iface2, 'name', "wlan0") self.ec.set(self.iface2, 'mode', "adhoc") self.ec.set(self.iface2, 'hw_mode', "g") self.ec.set(self.iface2, 'essid', "vlcexp") self.ec.set(self.iface2, 'ip', "10.0.0.49/24") self.channel = self.ec.register_resource("omf::Channel") self.ec.set(self.channel, 'channel', "6") self.app2 = self.ec.register_resource("omf::Application") self.ec.register_connection(self.iface1, self.channel) self.ec.register_connection(self.iface2, self.channel) self.ec.register_connection(self.node2, self.iface2) self.ec.register_connection(self.app2, self.node2) self.ec.register_condition(self.app2, ResourceAction.START, self.app1, ResourceState.STARTED, "2s") self.ec.register_condition([self.app1, self.app2], ResourceAction.STOP, self.app1, ResourceState.STARTED, "4s") self.ec.deploy() self.ec.wait_finished([self.app1, self.app2]) self.assertEquals( self.ec.get_resource(self.app2).state, ResourceState.FAILED) self.ec.shutdown() self.assertEquals( self.ec.get_resource(self.node1).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.node2).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.iface1).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.iface2).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.channel).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.app1).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.app2).state, ResourceState.RELEASED) def test_deploy_wo_app_path(self): self.node2 = self.ec.register_resource("omf::Node") self.ec.set(self.node2, 'hostname', 'wlab49') self.ec.set(self.node2, 'xmppUser', "nepi") self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu") self.ec.set(self.node2, 'xmppPort', "5222") self.ec.set(self.node2, 'xmppPassword', "1234") self.iface2 = self.ec.register_resource("omf::WifiInterface") self.ec.set(self.iface2, 'name', "wlan0") self.ec.set(self.iface2, 'mode', "adhoc") self.ec.set(self.iface2, 'hw_mode', "g") self.ec.set(self.iface2, 'essid', "vlcexp") self.ec.set(self.iface2, 'ip', "10.0.0.49/24") self.channel = self.ec.register_resource("omf::Channel") self.ec.set(self.channel, 'channel', "6") self.app2 = self.ec.register_resource("omf::Application") self.ec.set(self.app2, 'appid', 'Vlc#2') self.ec.register_connection(self.iface1, self.channel) self.ec.register_connection(self.iface2, self.channel) self.ec.register_connection(self.node2, self.iface2) self.ec.register_connection(self.app2, self.node2) self.ec.register_condition(self.app2, ResourceAction.START, self.app1, ResourceState.STARTED, "2s") self.ec.register_condition([self.app1, self.app2], ResourceAction.STOP, self.app1, ResourceState.STARTED, "4s") self.ec.deploy() self.ec.wait_finished([self.app1, self.app2]) self.assertEquals( self.ec.get_resource(self.app2).state, ResourceState.FAILED) self.ec.shutdown() self.assertEquals( self.ec.get_resource(self.node1).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.node2).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.iface1).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.iface2).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.channel).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.app1).state, ResourceState.RELEASED) self.assertEquals( self.ec.get_resource(self.app2).state, ResourceState.RELEASED)
# Third set of nodes can be any node in Planetlab testbed. for i in range(70): node = create_node(ec, username, pl_user, pl_password, critical=False) third_set_nodes.append(node) # Register conditions # The nodes that are completely identified by their hostnames have to be provisioned # before the rest of the nodes. This assures that no other resource will use the # identified node even if the constraints matchs. # In this example the nodes from the first need to be provisioned before the ones in # the second and third group. Using the same logic, is convenient that nodes from the # second group are provisioned before nodes from the third group. ec.register_condition(second_set_nodes, ResourceAction.DEPLOY, first_set_nodes, ResourceState.PROVISIONED) ec.register_condition(third_set_nodes, ResourceAction.DEPLOY, second_set_nodes, ResourceState.PROVISIONED) # Deploy the experiment: ec.deploy() # Wait until all nodes are provisioned: ec.wait_deployed(first_set_nodes) ec.wait_deployed(second_set_nodes) ec.wait_deployed(third_set_nodes) # Do the experiment controller shutdown: ec.shutdown() # END
app4 = ec.register_resource("omf::Application") ec.set(app4, 'appid', 'Kill#1') ec.set(app4, 'command', "/usr/bin/killall vlc_app") ec.set(app4, 'env', " ") ec.set(app4, 'version', "5") # Connection ec.register_connection(app3, node1) ec.register_connection(app1, node1) ec.register_connection(node1, iface1) ec.register_connection(iface1, channel) ec.register_connection(iface2, channel) ec.register_connection(node2, iface2) ec.register_connection(app2, node2) ec.register_connection(app4, node2) # User Behaviour ec.register_condition(app2, ResourceAction.START, app1, ResourceState.STARTED , "4s") ec.register_condition([app1, app2], ResourceAction.STOP, app2, ResourceState.STARTED , "22s") ec.register_condition([app3, app4], ResourceAction.START, app2, ResourceState.STARTED , "25s") ec.register_condition([app3, app4], ResourceAction.STOP, app3, ResourceState.STARTED , "1s") # Deploy ec.deploy() ec.wait_finished([app1, app2, app3, app4]) # Stop Experiment ec.shutdown()
ec.register_connection(app1, node1) ## Add a OMFApplication to run the client VLC and count the numer of bytes ## transmitted, using wc. app2 = ec.register_resource("omf::Application") ec.set(app2, "command", "DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority /root/vlc/vlc-1.1.13/cvlc rtp://%s:5004 | wc -c "% client_ip) ## Alternativelly, you can try to send the video to standard output and ## recover it using the stdout trace. However, it seems that sending ## binary messages back to the client is not well supported by the OMF 6 RC #ec.set(app2, "command", "DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority /root/vlc/vlc-1.1.13/cvlc rtp://%s:5004 --sout '#standard{access=file,mux=ts,dst=-}'" % client_ip) ec.register_connection(app2, node2) ## stop app1 65s after it started ec.register_condition(app1, ResourceAction.STOP, app1, ResourceState.STARTED , "65s") ## start app2 5s after app1 ec.register_condition(app2, ResourceAction.START, app1, ResourceState.STARTED , "5s") ## stop app2 5 seconds after app2 ec.register_condition(app2, ResourceAction.STOP, app1, ResourceState.STOPPED , "5s") # Deploy ec.deploy() ec.wait_finished([app2]) # Retrieve the bytes transmitted count and print it byte_count = ec.trace(app2, "stdout") print "BYTES transmitted", byte_count ## If you redirected the video to standard output, you can try to
ec.register_connection(iface1, channel) # Create and Configure the PING Application app1 = ec.register_resource("omf::Application") ec.set(app1, "appid", "Ping#1") ec.set(app1, "command", "/bin/ping -c3 192.168.0.%s" % nodex[-2:]) ec.set(app1, "version", "5") ec.register_connection(app1, node1) app2 = ec.register_resource("omf::Application") ec.set(app2, "appid", "Kill#1") ec.set(app2, "command", "/usr/bin/killall ping") ec.set(app2, "version", "5") ec.register_connection(app2, node1) # User Behaviour ec.register_condition(app1, ResourceAction.STOP, app1, ResourceState.STARTED , "10s") ec.register_condition(app2, ResourceAction.START, app1, ResourceState.STARTED , "12s") ec.register_condition(app2, ResourceAction.STOP, app2, ResourceState.STARTED , "1s") # Deploy ec.deploy() ec.wait_finished([app1, app2]) print ec.trace(app1, "stdout") # Stop Experiment ec.shutdown()
apps.append(app_bonfire) node_app=dict() #print "Deployed nodes: ",nodes for host in hosts: node = create_node(ec,slice,pleuser,plepass,hostname=hosts[host],country=host) nodes.append(node) command_client = "iperf -i 1 -f m -c %s -t %d -p %d -y c > node%d.out " % (bonfire_host[1],seconds,port,node) app = create_app(ec,command_client,dependencies="iperf") ec.register_connection(app,node) #The app will be started once the app_bf application is running apps.append(app) node_app[node] = app ec.register_condition(app,ResourceAction.START, app_bonfire, ResourceState.STARTED) #print "NODE under APP :" ,node_app # Deploy the experiment: #pdb.set_trace() ec.deploy() ec.wait_finished(apps) for node, app in node_app.iteritems(): # print "iteration :",node,app trace=ec.trace(app,"node%d.out"%(node)) f = open(ec.get(node,"country")+":"+ec.get(node,"ip")+":"+"node%d.out"%(node),"w")
# Third set of nodes can be any node in Planetlab testbed. for i in range(70): node = create_node(ec, username, pl_user, pl_password, critical=False) third_set_nodes.append(node) # Register conditions # The nodes that are completely identified by their hostnames have to be provisioned # before the rest of the nodes. This assures that no other resource will use the # identified node even if the constraints matchs. # In this example the nodes from the first need to be provisioned before the ones in # the second and third group. Using the same logic, is convenient that nodes from the # second group are provisioned before nodes from the third group. ec.register_condition(second_set_nodes, ResourceAction.DEPLOY, first_set_nodes, ResourceState.PROVISIONED) ec.register_condition(third_set_nodes, ResourceAction.DEPLOY, second_set_nodes, ResourceState.PROVISIONED) # Deploy the experiment: ec.deploy() # Wait until all nodes are provisioned: ec.wait_deployed(first_set_nodes) ec.wait_deployed(second_set_nodes) ec.wait_deployed(third_set_nodes) # Do the experiment controller shutdown: ec.shutdown() # END
app1 = ec.register_resource("LinuxApplication") file = "../big_file.geo" ec.set(app1, "sources", file) command = "scp $SRC/big_file.geo %s" % destination ec.set(app1, "command", command) ec.register_connection(app1, node1) app2 = ec.register_resource("LinuxApplication") ec.set(app, "sudo", sudo) ec.set(app, "depends", "ifstat") command = "ifstat -b eth0 > ifstat.txt" command = "iperf ..." ec.set(app2, "command", command) ec.register_connection(app2, node1) ec.register_condition(app2, ResourceAction.START, app1, ResourceState.STARTED) # Deploy ec.deploy() ec.wait_finished([app1, app2]) trace_file = "examples/planetlab/ifstat.txt" trace = ec.trace(app2, "ifstat.txt") f = open(trace_file, "w") f.write(trace) f.close() ec.shutdown() # End
trace_name = "%s.ping" % hostname app = add_app(ec, command, node, newname = trace_name) apps.append(app) # Register conditions # The nodes that are completely identified by their hostnames have to be provisioned # before the rest of the nodes. This assures that no other resource will use the # identified node even if the constraints matchs. # In this example node2, node3, node4 and node5, are deployed after node1 is # provisioned. node1 must be the node hostname, meanwhile node2, node3, # node4 and node5 just need to fulfill certain constraints. # Applications are always deployed after nodes, so no need to register conditions # for the apps in this example. ec.register_condition(node2, ResourceAction.DEPLOY, node1, ResourceState.PROVISIONED) ec.register_condition(node3, ResourceAction.DEPLOY, node1, ResourceState.PROVISIONED) ec.register_condition(node4, ResourceAction.DEPLOY, node1, ResourceState.PROVISIONED) ec.register_condition(node5, ResourceAction.DEPLOY, node1, ResourceState.PROVISIONED) # Deploy the experiment: ec.deploy() # Wait until the applications are finish to retrive the traces: ec.wait_finished(apps) print "Results stored at", ec.exp_dir # Do the experiment controller shutdown: ec.shutdown()
class OMFVLCWrongCaseWithNonCritical(unittest.TestCase): id = 2000 def setUp(self): self.ec = ExperimentController(exp_id = str(OMFVLCWrongCaseWithNonCritical.id)) OMFVLCWrongCaseWithNonCritical.id += 1 self.node1 = self.ec.register_resource("omf::Node") self.ec.set(self.node1, 'hostname', 'omf.plexus.wlab17') self.ec.set(self.node1, 'xmppUser', "nepi") self.ec.set(self.node1, 'xmppServer', "xmpp-plexus.onelab.eu") self.ec.set(self.node1, 'xmppPort', "5222") self.ec.set(self.node1, 'xmppPassword', "1234") self.ec.set(self.node1, 'version', "5") self.iface1 = self.ec.register_resource("omf::WifiInterface") self.ec.set(self.iface1, 'name', "wlan0") self.ec.set(self.iface1, 'mode', "adhoc") self.ec.set(self.iface1, 'hw_mode', "g") self.ec.set(self.iface1, 'essid', "vlcexp") self.ec.set(self.iface1, 'ip', "10.0.0.17/24") self.ec.set(self.iface1, 'version', "5") self.app1 = self.ec.register_resource("omf::Application") self.ec.set(self.app1, 'appid', 'Kill#1') self.ec.set(self.app1, 'command', "/usr/bin/test -1") self.ec.set(self.app1, 'env', "DISPLAY=localhost:10.0 XAUTHORITY=/root/.Xauthority") self.ec.set(self.app1, 'version', "5") self.ec.register_connection(self.app1, self.node1) self.ec.register_connection(self.node1, self.iface1) def test_deploy_with_node_nc(self): self.node2 = self.ec.register_resource("omf::Node") self.ec.set(self.node2, "critical", False) self.ec.set(self.node2, 'version', "5") self.iface2 = self.ec.register_resource("omf::WifiInterface") self.ec.set(self.iface2, 'name', "wlan0") self.ec.set(self.iface2, 'mode', "adhoc") self.ec.set(self.iface2, 'hw_mode', "g") self.ec.set(self.iface2, 'essid', "vlcexp") self.ec.set(self.iface2, 'ip', "10.0.0.37/24") self.ec.set(self.iface2, 'version', "5") self.channel = self.ec.register_resource("omf::Channel") self.ec.set(self.channel, 'channel', "6") self.ec.set(self.channel, 'xmppUser', "nepi") self.ec.set(self.channel, 'xmppServer', "xmpp-plexus.onelab.eu") self.ec.set(self.channel, 'xmppPort', "5222") self.ec.set(self.channel, 'xmppPassword', "1234") self.ec.set(self.channel, 'version', "5") self.ec.register_connection(self.iface1, self.channel) self.ec.register_connection(self.node2, self.iface2) self.ec.register_connection(self.iface2, self.channel) self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED , "5s") self.ec.deploy() self.ec.wait_finished([self.app1]) self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.FAILED) self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.FAILED) self.ec.shutdown() self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED) def test_deploy_with_node_and_iface_nc(self): self.node2 = self.ec.register_resource("omf::Node") self.ec.set(self.node2, "critical", False) self.ec.set(self.node2, 'version', "5") self.iface2 = self.ec.register_resource("omf::WifiInterface") self.ec.set(self.node2, "critical", False) self.ec.set(self.iface2, 'name', "wlan0") self.ec.set(self.iface2, 'mode', "adhoc") self.ec.set(self.iface2, 'hw_mode', "g") self.ec.set(self.iface2, 'essid', "vlcexp") self.ec.set(self.iface2, 'ip', "10.0.0.37/24") self.ec.set(self.iface2, 'version', "5") self.channel = self.ec.register_resource("omf::Channel") self.ec.set(self.channel, 'channel', "6") self.ec.set(self.channel, 'xmppUser', "nepi") self.ec.set(self.channel, 'xmppServer', "xmpp-plexus.onelab.eu") self.ec.set(self.channel, 'xmppPort', "5222") self.ec.set(self.channel, 'xmppPassword', "1234") self.ec.set(self.channel, 'version', "5") self.ec.register_connection(self.iface1, self.channel) self.ec.register_connection(self.node2, self.iface2) self.ec.register_connection(self.iface2, self.channel) self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED , "5s") self.ec.deploy() self.ec.wait_finished([self.app1]) self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.FAILED) self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.FAILED) self.ec.shutdown() self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED) def test_deploy_with_node_iface_channel_nc(self): self.node2 = self.ec.register_resource("omf::Node") self.ec.set(self.node2, "critical", False) self.ec.set(self.node2, 'hostname', 'omf.plexus.wlab37') self.ec.set(self.node2, 'version', "5") self.iface2 = self.ec.register_resource("omf::WifiInterface") self.ec.set(self.node2, "critical", False) self.ec.set(self.iface2, 'name', "wlan0") self.ec.set(self.iface2, 'mode', "adhoc") self.ec.set(self.iface2, 'hw_mode', "g") self.ec.set(self.iface2, 'essid', "vlcexp") self.ec.set(self.iface2, 'ip', "10.0.0.37/24") self.ec.set(self.iface2, 'version', "5") self.channel = self.ec.register_resource("omf::Channel") self.ec.set(self.channel, 'channel', "6") self.ec.set(self.channel, "critical", False) self.ec.set(self.channel, 'version', "5") self.ec.register_connection(self.iface1, self.channel) self.ec.register_connection(self.node2, self.iface2) self.ec.register_connection(self.iface2, self.channel) self.ec.register_condition([self.app1], ResourceAction.STOP, self.app1, ResourceState.STARTED , "10s") self.ec.deploy() self.ec.wait_finished([self.app1]) self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.FAILED) self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.FAILED) self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.FAILED) self.ec.shutdown() self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED) def test_deploy_with_app_nc(self): self.node2 = self.ec.register_resource("omf::Node") self.ec.set(self.node2, 'hostname', 'omf.plexus.wlab37') self.ec.set(self.node2, 'xmppUser', "nepi") self.ec.set(self.node2, 'xmppServer', "xmpp-plexus.onelab.eu") self.ec.set(self.node2, 'xmppPort', "5222") self.ec.set(self.node2, 'xmppPassword', "1234") self.ec.set(self.node2, 'version', "5") self.iface2 = self.ec.register_resource("omf::WifiInterface") self.ec.set(self.iface2, 'name', "wlan0") self.ec.set(self.iface2, 'mode', "adhoc") self.ec.set(self.iface2, 'hw_mode', "g") self.ec.set(self.iface2, 'essid', "vlcexp") self.ec.set(self.iface2, 'ip', "10.0.0.37/24") self.ec.set(self.iface2, 'version', "5") self.channel = self.ec.register_resource("omf::Channel") self.ec.set(self.channel, 'channel', "6") self.ec.set(self.channel, 'xmppUser', "nepi") self.ec.set(self.channel, 'xmppServer', "xmpp-plexus.onelab.eu") self.ec.set(self.channel, 'xmppPort', "5222") self.ec.set(self.channel, 'xmppPassword', "1234") self.ec.set(self.channel, 'version', "5") self.app2 = self.ec.register_resource("omf::Application") self.ec.set(self.app2, "critical", False) self.ec.set(self.app2, 'appid', 'Kill#22') self.ec.set(self.app2, 'version', "5") self.ec.register_connection(self.iface1, self.channel) self.ec.register_connection(self.node2, self.iface2) self.ec.register_connection(self.iface2, self.channel) self.ec.register_connection(self.app2, self.node2) self.ec.register_condition(self.app2, ResourceAction.START, self.app1, ResourceState.STARTED , "6s") self.ec.register_condition([self.app1, self.app2], ResourceAction.STOP, self.app1, ResourceState.STARTED , "10s") self.ec.deploy() self.ec.wait_finished([self.app1, self.app2]) self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.STOPPED) self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.FAILED) self.ec.shutdown() self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.RELEASED) def test_deploy_with_all_nc_and_app_critical(self): self.node2 = self.ec.register_resource("omf::Node") self.ec.set(self.node2, "critical", False) self.ec.set(self.node2, 'hostname', 'omf.plexus.wlab37') self.ec.set(self.node2, 'version', "5") self.iface2 = self.ec.register_resource("omf::WifiInterface") self.ec.set(self.iface2, "critical", False) self.ec.set(self.iface2, 'version', "5") self.channel = self.ec.register_resource("omf::Channel") self.ec.set(self.channel, "critical", False) self.ec.set(self.channel, 'channel', "6") self.ec.set(self.channel, 'version', "5") self.app2 = self.ec.register_resource("omf::Application") self.ec.set(self.app2, 'appid', 'Kill#22') self.ec.set(self.app2, 'version', "5") self.ec.register_connection(self.iface1, self.channel) self.ec.register_connection(self.node2, self.iface2) self.ec.register_connection(self.iface2, self.channel) self.ec.register_connection(self.app2, self.node2) self.ec.register_condition(self.app2, ResourceAction.START, self.app1, ResourceState.STARTED , "6s") self.ec.register_condition([self.app1, self.app2], ResourceAction.STOP, self.app1, ResourceState.STARTED , "10s") self.ec.deploy() self.ec.wait_finished([self.app1, self.app2]) self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.FAILED) self.ec.shutdown() self.assertEquals(self.ec.get_resource(self.node1).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.node2).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.iface1).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.iface2).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.channel).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.app1).state, ResourceState.RELEASED) self.assertEquals(self.ec.get_resource(self.app2).state, ResourceState.RELEASED)
env, xmpp_slice, xmpp_host) iperfclient[all_hosts[i]].append(perfclient1) if i < (len(all_hosts) - 1): cmd = "iperf -c " + all_ip[i + 1] + " > /opt/iperclient2.txt" perfclient2 = add_app(ec, nodes[all_hosts[i]], "#perfclient2", cmd, env, xmpp_slice, xmpp_host) iperfclient[all_hosts[i]].append(perfclient2) iperfserv[all_hosts[i]] = perfserv for i in xrange(len(all_hosts)): #ec.register_condition(iperfserv[all_hosts[i]], ResourceAction.START, link, ResourceState.STARTED, "2s") for elt in iperfclient[all_hosts[i]]: ec.register_condition(elt, ResourceAction.START, iperfserv[all_hosts[i]], ResourceState.STARTED, "3s") ## Streaming Server # pub = add_publish(ec, nodes[host5], movie, xmpp_slice, xmpp_host) ## Streaming client # stream = add_stream(ec, nodes[host6], xmpp_slice, xmpp_host) ## Streaming conditions # ec.register_condition(pub, ResourceAction.START, link, ResourceState.STARTED, "2s") # ec.register_condition(stream, ResourceAction.START, link, ResourceState.STARTED, "2s") # ec.register_condition(stream, ResourceAction.START, pub, ResourceState.STARTED, "2s") ### Cleanning ### # Cleaning when the experiment stop