login = "%s@%s" % (slicename, hostname)
command = 'PATH=$PATH:$(ls | egrep nepi-ccnd- | head -1)/bin; ccncatchunks2 ccnx:/VIDEO'
proc1 = subprocess.Popen(['ssh', login, command], stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell = False)
- proc2 = subprocess.Popen(['vlc', '-'], stdin=proc1.stdout, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+ proc2 = subprocess.Popen(['vlc',
+ '--sub-filter', 'marq',
+ '--marq-marquee',
+ '(c) copyright 2008, Blender Foundation / www.bigbuckbunny.org',
+ '--marq-position=8',
+ '--no-video-title-show', '-'],
+ stdin=proc1.stdout, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
return proc2
def create_ed(hostnames, vsys_vnet, slicename, plc_host, pl_user, pl_pwd, pl_ssh_key,
- port_base, root_dir):
+ port_base, root_dir, delay):
# Create the experiment description object
exp_desc = ExperimentDescription()
return exp_desc, pl_nodes, hostname, pl_app
def run(hostnames, vsys_vnet, slicename, plc_host, pl_user, pl_pwd, pl_ssh_key,
- port_base, root_dir):
+ port_base, root_dir, delay):
exp_desc, pl_nodes, hostname, pl_app = create_ed(hostnames, vsys_vnet,
slicename, plc_host, pl_user, pl_pwd, pl_ssh_key, port_base,
- root_dir)
+ root_dir, delay)
xml = exp_desc.to_xml()
controller = ExperimentController(xml, root_dir)
while not TERMINATE and controller.status(pl_app.guid) == AS.STATUS_NOT_STARTED:
time.sleep(0.5)
- proc = None
+ proc1 = None
if not TERMINATE:
hostname = hostnames[-1]
- proc = exec_ccncatchunks(slicename, hostname)
+ proc1 = exec_ccncatchunks(slicename, hostname)
- while not TERMINATE and proc and proc.poll() is None:
+ if not TERMINATE and proc1:
+ time.sleep(delay)
+
+ proc2 = None
+ if not TERMINATE:
+ hostname = hostnames[-2]
+ proc2 = exec_ccncatchunks(slicename, hostname)
+
+ while not TERMINATE and proc1 and proc2 and proc2.poll() is None:
time.sleep(0.5)
-
- if proc:
- if proc.poll() < 1:
- err = proc.stderr.read()
- print "ERROR ", err
+
+ if proc1:
+ if proc1.poll() < 1:
+ err = proc1.stderr.read()
+ print "Stream 1 ERROR ", err
+ else:
+ out = proc1.stdout.read()
+ print "Stream 1 OUTPUT ", out
+
+ if proc2:
+ if proc2.poll() < 1:
+ err = proc2.stderr.read()
+ print "Stream 2 ERROR ", err
else:
- out = proc.stdout.read()
- print "OUTPUT ", out
+ out = proc2.stdout.read()
+ print "Stream 2 OUTPUT ", out
controller.stop()
controller.shutdown()
default_hostnames = ['openlab02.pl.sophia.inria.fr',
'ple4.ipv6.lip6.fr',
'planetlab2.di.unito.it',
- #'merkur.planetlab.haw-hamburg.de',
+ 'merkur.planetlab.haw-hamburg.de',
'planetlab1.cs.uit.no',
'planetlab3.cs.st-andrews.ac.uk',
'planetlab2.cs.uoi.gr',
'planet2.elte.hu',
'planetlab2.esprit-tn.com' ]
- usage = "usage: %prog -s <pl_slice> -H <pl_host> -k <ssh_key> -u <pl_user> -p <pl_password> -v <vsys_vnet> -N <host_names> -c <node_count>"
+ usage = "usage: %prog -s <pl_slice> -H <pl_host> -k <ssh_key> -u <pl_user> -p <pl_password> -v <vsys_vnet> -N <host_names> -c <node_count> -d <delay>"
parser = OptionParser(usage=usage)
parser.add_option("-s", "--slicename", dest="slicename",
default=pl_hostnames, type="str")
parser.add_option("-c", "--node-count", dest="node_count",
help="Number of nodes to use",
- default=5, type="str")
+ default=9, type="str")
+ parser.add_option("-d", "--delay", dest="delay",
+ help="Time to wait before retrieveing the second video stream in seconds",
+ default=40, type="int")
(options, args) = parser.parse_args()
hostnames = map(string.strip, options.hostnames.split(",")) if options.hostnames else default_hostnames
pl_user= options.pl_user
pl_pwd = options.pl_pwd
pl_ssh_key = options.pl_ssh_key
+ delay = options.delay
run(hostnames, vsys_vnet, slicename, pl_host, pl_user, pl_pwd, pl_ssh_key,
- port_base, root_dir)
+ port_base, root_dir, delay)