#!/usr/bin/env python
-
-###############################################################################
#
# NEPI, a framework to manage network experiments
+# Copyright (C) 2013 INRIA
#
# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation, either version 3 of the License, or
-# (at your option) any later version.
+# it under the terms of the GNU General Public License version 2 as
+# published by the Free Software Foundation;
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
# Author: Alina Quereilhac <alina.quereilhac@inria.fr>
-#
-###############################################################################
+
+from __future__ import print_function
from nepi.execution.ec import ExperimentController
from nepi.execution.runner import ExperimentRunner
import os
PL_NODES = dict({
- "0": "iraplab1.iralab.uni-karlsruhe.de",
- "1": "planetvs2.informatik.uni-stuttgart.de",
- "2": "dfn-ple1.x-win.dfn.de",
- "3": "planetlab2.extern.kuleuven.be",
- "4": "mars.planetlab.haw-hamburg.de",
- "5": "planetlab-node3.it-sudparis.eu",
- "6": "node2pl.planet-lab.telecom-lille1.eu",
- "7": "planetlab1.informatik.uni-wuerzburg.de",
- "8": "planet1.l3s.uni-hannover.de",
- "9": "planetlab1.wiwi.hu-berlin.de",
- "10": "pl2.uni-rostock.de",
- "11": "planetlab1.u-strasbg.fr",
- "12": "peeramidion.irisa.fr",
- "13": "planetlab2.unineuchatel.ch",
+ 0: "iraplab1.iralab.uni-karlsruhe.de",
+ 1: "planetvs2.informatik.uni-stuttgart.de",
+ 2: "dfn-ple1.x-win.dfn.de",
+ 3: "planetlab2.extern.kuleuven.be",
+ 4: "mars.planetlab.haw-hamburg.de",
+ 5: "planetlab-node3.it-sudparis.eu",
+ 6: "node2pl.planet-lab.telecom-lille1.eu",
+ 7: "planetlab1.informatik.uni-wuerzburg.de",
+ 8: "planet1.l3s.uni-hannover.de",
+ 9: "planetlab1.wiwi.hu-berlin.de",
+ 10: "pl2.uni-rostock.de",
+ 11: "planetlab1.u-strasbg.fr",
+ 12: "peeramidion.irisa.fr",
+ 13: "planetlab2.unineuchatel.ch",
})
pl_slice = os.environ.get("PL_SLICE")
hostname = PL_NODES[nid]
# Add a planetlab host to the experiment description
- host = ec.register_resource("PlanetlabNode")
+ host = ec.register_resource("planetlab::Node")
ec.set(host, "hostname", hostname)
ec.set(host, "username", pl_slice)
ec.set(host, "identity", pl_ssh_key)
host = ec.netgraph.node_annotation(nid, "host")
# Add a CCN daemon to the planetlab node
- ccnd = ec.register_resource("LinuxCCND")
+ ccnd = ec.register_resource("linux::CCND")
ec.set(ccnd, "debug", 7)
ec.register_connection(ccnd, host)
ccnd = ec.netgraph.node_annotation(nid, "ccnd")
# Add a CCN content repository to the planetlab node
- ccnr = ec.register_resource("LinuxCCNR")
+ ccnr = ec.register_resource("linux::CCNR")
ec.set(ccnr, "repoFile1", repofile)
ec.register_connection(ccnr, ccnd)
ccnd = ec.netgraph.node_annotation(nid, "ccnd")
# Add a CCN cat application to the planetlab node
- ccncat = ec.register_resource("LinuxCCNCat")
+ ccncat = ec.register_resource("linux::CCNCat")
ec.set(ccncat, "pipeline", pipeline)
ec.set(ccncat, "contentName", content_name)
ec.register_connection(ccncat, ccnd)
hostname2 = ec.netgraph.node_annotation(nid2, "hostname")
# Add a FIB entry between one planetlab node and its peer
- entry = ec.register_resource("LinuxFIBEntry")
+ entry = ec.register_resource("linux::FIBEntry")
ec.set(entry, "host", hostname2)
ec.register_connection(entry, ccnd1)
### Compute metric: Avg number of Interests seen per content name
### normalized by the number of nodes in the shortest path
- content_name_count = len(content_names.values())
+ content_name_count = len(content_names)
nodes_in_shortest_path = len(shortest_path) - 1
metric = interest_count / (float(content_name_count) * float(nodes_in_shortest_path))
# TODO: DUMP RESULTS TO FILE
# TODO: DUMP GRAPH DELAYS!
- f = open("/tmp/metric", "a+")
- f.write("%.2f\n" % metric)
- f.close()
- print " METRIC", metric
+ with open("/tmp/metric", "a+") as f:
+ f.write("%.2f\n" % metric)
+ print(" METRIC", metric)
return metric
add_node_callback = add_pl_node,
add_edge_callback = add_pl_edge)
- print "Results stored at", ec.exp_dir
+ print("Results stored at", ec.exp_dir)
#### Retrieve the content producing resource to wait for ot to finish
- ccncat = ec.filter_resources("LinuxCCNCat")
+ ccncat = ec.filter_resources("linux::CCNCat")
#### Run experiment until metric convergences
rnr = ExperimentRunner()