From: Alina Quereilhac Date: Mon, 2 May 2011 11:18:36 +0000 (+0200) Subject: minor changes to examples X-Git-Tag: nepi_v2~86^2 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=021a88dc07add6823d7d3aa9157b34db2b76e4e8;p=nepi.git minor changes to examples --- diff --git a/examples/vlc_wireless_netns_ns3.py b/examples/vlc_wireless_netns_ns3.py index 9a5ae4c6..eddefae5 100644 --- a/examples/vlc_wireless_netns_ns3.py +++ b/examples/vlc_wireless_netns_ns3.py @@ -1,19 +1,30 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -import getpass from nepi.core.design import ExperimentDescription, FactoriesProvider from nepi.core.execute import ExperimentController +from optparse import OptionParser, SUPPRESS_HELP from nepi.util import proxy import os import shutil import tempfile import test_util import time -import unittest -class VlcWirelessNetnsNs3TestCase(unittest.TestCase): - def setUp(self): +class VlcWirelessNetnsNs3Example(object): + def __init__(self): + usage = "usage: %prog -m movie -u user" + parser = OptionParser(usage=usage) + parser.add_option("-u", "--user", dest="user", help="Valid linux system user (not root).", type="str") + parser.add_option("-m", "--movie", dest="movie", help="Path to movie file to play", type="str") + (options, args) = parser.parse_args() + if not options.movie: + parser.error("Missing 'movie' option.") + if options.user == 'root': + parser.error("Missing or invalid 'user' option.") + + self.user = options.user if options.user else os.getlogin() + self.movie = options.movie self.root_dir = tempfile.mkdtemp() def add_netns_tap(self, node, netns_desc): @@ -100,13 +111,10 @@ class VlcWirelessNetnsNs3TestCase(unittest.TestCase): route.set_attribute_value("NetPrefix", netprefix) route.set_attribute_value("NextHop", nexthop) - @test_util.skipUnless(os.getuid() == 0, "Test requires root privileges") - def test_local(self): + def run(self): bounds_width = bounds_height = 200 x = y = 100 speed = 1 - user = "alina" - movie = "/tmp/test.ts" exp_desc = ExperimentDescription() @@ -127,7 +135,7 @@ class VlcWirelessNetnsNs3TestCase(unittest.TestCase): self.add_ip_address(fdnd1, "10.0.0.1") # create node 2 node2 = self.add_ns3_node(ns3_desc) - mobility2 = self.add_ns3_random_mobility(node2, ns3_desc, 0, 0, 0, + mobility2 = self.add_ns3_random_mobility(node2, ns3_desc, x, y, 0, speed, bounds_width, bounds_height) wifi2, phy2 = self.add_ns3_wifi(node2, ns3_desc, access_point = True) self.add_ip_address(wifi2, "10.0.1.2") @@ -154,16 +162,16 @@ class VlcWirelessNetnsNs3TestCase(unittest.TestCase): # DEBUG!! target = "{#[vlc_client].addr[0].[Address]#}" target = "10.0.2.2" command = "vlc -I dummy -vvv %s --sout '#rtp{dst=%s,port=5004,mux=ts}' vlc:quit" \ - % (movie, target) + % (self.movie, target) vlc_server = netns_desc1.create("Application") vlc_server.set_attribute_value("command", command) - vlc_server.set_attribute_value("user", user) + vlc_server.set_attribute_value("user", self.user) vlc_server.connector("node").connect(node3.connector("apps")) #command = "xterm" #xterm1 = netns_desc1.create("Application") #xterm1.set_attribute_value("command", command) - #xterm1.set_attribute_value("user", user) + #xterm1.set_attribute_value("user", self.user) #xterm1.connector("node").connect(node3.connector("apps")) ## NETNS testbed description 2 ## @@ -180,7 +188,7 @@ class VlcWirelessNetnsNs3TestCase(unittest.TestCase): vlc_client = netns_desc2.create("Application") command = "vlc rtp://%s:5004/test.ts" % target vlc_client.set_attribute_value("command", command) - vlc_client.set_attribute_value("user", user) + vlc_client.set_attribute_value("user", self.user) vlc_client.connector("node").connect(node4.connector("apps")) #vlc_trace = vlc_server.get_trace("StderrTrace") #vlc_trace.get_attribute("Filename").value = "vlc_server.err" @@ -189,7 +197,7 @@ class VlcWirelessNetnsNs3TestCase(unittest.TestCase): #command = "xterm" #xterm2 = netns_desc2.create("Application") #xterm2.set_attribute_value("command", command) - #xterm2.set_attribute_value("user", user) + #xterm2.set_attribute_value("user", self.user) #xterm2.connector("node").connect(node4.connector("apps")) ## testbed_interconnection @@ -204,7 +212,6 @@ class VlcWirelessNetnsNs3TestCase(unittest.TestCase): self.add_route(node2, "10.0.0.0", 24, "10.0.1.1") self.add_route(node1, "10.0.2.0", 24, "10.0.1.2") - xml = exp_desc.to_xml() controller = ExperimentController(xml, self.root_dir) controller.start() @@ -213,8 +220,11 @@ class VlcWirelessNetnsNs3TestCase(unittest.TestCase): controller.stop() controller.shutdown() - def tearDown(self): + def clean(self): shutil.rmtree(self.root_dir) if __name__ == '__main__': - unittest.main() + example = VlcWirelessNetnsNs3Example() + example.run() + example.clean() + diff --git a/src/nepi/core/testbed_impl.py b/src/nepi/core/testbed_impl.py index 8966cced..07f308e6 100644 --- a/src/nepi/core/testbed_impl.py +++ b/src/nepi/core/testbed_impl.py @@ -301,7 +301,7 @@ class TestbedController(execute.TestbedController): if not factory.box_attributes.has_attribute(name): raise AttributeError("Invalid attribute %s for element type %s" % (name, factory.factory_id)) - if self._status > TESTBED_STATUS_CREATED and \ + if self._status > TESTBED_STATUS_STARTED and \ factory.box_attributes.is_attribute_design_only(name): raise AttributeError("Attribute %s can only be modified during experiment design" % name) if not factory.box_attributes.is_attribute_value_valid(name, value): diff --git a/src/nepi/util/server.py b/src/nepi/util/server.py index a8aee5f2..7d4bd88c 100644 --- a/src/nepi/util/server.py +++ b/src/nepi/util/server.py @@ -24,7 +24,7 @@ STOP_MSG = "STOP" ERROR_LEVEL = 0 DEBUG_LEVEL = 1 -TRACE = False +TRACE = os.environ.get("NEPI_TRACE", "false").lower() in ("true", "1", "on") if hasattr(os, "devnull"): DEV_NULL = os.devnull @@ -410,7 +410,11 @@ def popen_ssh_command(command, host, port, user, agent, # alive until the process is finished with it proc._known_hosts = tmp_known_hosts - return (proc.communicate(stdin), proc) + out, err = proc.communicate(stdin) + if TRACE: + print " -> ", out, err + + return ((out, err), proc) def popen_scp(source, dest, port = None,