use print() - import print_function - should be fine for both py2 and py3
[nepi.git] / examples / ccn_emu_live / planetlab.py
index 766e96b..b2548f3 100644 (file)
@@ -1,13 +1,11 @@
 #!/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
@@ -18,8 +16,8 @@
 #    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
@@ -31,21 +29,20 @@ import socket
 import os
 
 PL_NODES = dict({
-    "0": "iraplab1.iralab.uni-karlsruhe.de",
-    "1": "planetlab1.informatik.uni-goettingen.de",
-    "2": "dfn-ple1.x-win.dfn.de",
-    "3": "mars.planetlab.haw-hamburg.de",
-    "4": "planetlab2.unineuchatel.ch", 
-    "5": "planetlab-node3.it-sudparis.eu",
-    "6": "planetlab2.extern.kuleuven.be",
-    "7": "node2pl.planet-lab.telecom-lille1.eu",
-    "8": "planetvs2.informatik.uni-stuttgart.de",
-    "9": "planetlab1.informatik.uni-wuerzburg.de",
-    "10": "planet1.l3s.uni-hannover.de",
-    "11": "planetlab1.wiwi.hu-berlin.de",
-    "12": "pl2.uni-rostock.de", 
-    "13": "planetlab1.u-strasbg.fr",
-    "14": "peeramidion.irisa.fr"
+    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")
@@ -77,7 +74,7 @@ def add_pl_host(ec, nid):
     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)
@@ -101,7 +98,7 @@ def add_pl_ccnd(ec, nid):
     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)
     
@@ -117,7 +114,7 @@ def add_pl_ccnr(ec, nid):
     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)
@@ -127,7 +124,7 @@ def add_pl_ccncat(ec, nid):
     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)
@@ -138,7 +135,7 @@ def add_pl_fib_entry(ec, nid1, nid2):
     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)
 
@@ -159,8 +156,9 @@ def avg_interests(ec, run):
         interest_dupnonce_count,
         interest_count,
         content_count) = ccn_parser.process_content_history_logs(
-                logs_dir, 
-                ec.netgraph.topology)
+                logs_dir,
+                ec.netgraph.topology,
+                parse_ping_logs = True)
 
     shortest_path = networkx.shortest_path(graph, 
             source = ec.netgraph.sources()[0], 
@@ -174,10 +172,10 @@ def avg_interests(ec, run):
 
     # TODO: DUMP RESULTS TO FILE
     # TODO: DUMP GRAPH DELAYS!
-    f = open("/tmp/metric", "w+")
+    f = open("/tmp/metric", "a+")
     f.write("%.2f\n" % metric)
     f.close()
-    print " METRIC", metric
+    print(" METRIC", metric)
 
     return metric
 
@@ -208,10 +206,10 @@ if __name__ == '__main__':
             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()