Ticket #69: tun/tap port base allows concurrent experiments in the same slice (if...
authorClaudio-Daniel Freire <claudio-daniel.freire@inria.fr>
Thu, 21 Jul 2011 13:12:51 +0000 (15:12 +0200)
committerClaudio-Daniel Freire <claudio-daniel.freire@inria.fr>
Thu, 21 Jul 2011 13:12:51 +0000 (15:12 +0200)
src/nepi/testbeds/planetlab/execute.py
src/nepi/testbeds/planetlab/metadata.py
test/testbeds/planetlab/execute.py
test/testbeds/planetlab/integration.py
test/testbeds/planetlab/integration_cross.py
test/testbeds/planetlab/integration_multi.py
test/testbeds/planetlab/integration_ns3.py

index 33ec208..7b8a19f 100644 (file)
@@ -123,6 +123,8 @@ class TestbedController(testbed_impl.TestbedController):
             get_attribute_value("plcUrl")
         self.logLevel = self._attributes.\
             get_attribute_value("plLogLevel")
+        self.tapPortBase = self._attributes.\
+            get_attribute_value("tapPortBase")
         
         self._logger.setLevel(getattr(logging,self.logLevel))
         
index dc4f19c..92e0b98 100644 (file)
@@ -328,7 +328,7 @@ def preconfigure_tuniface(testbed_instance, guid):
     # Set standard TUN attributes
     if (not element.tun_addr or not element.tun_port) and element.external_iface:
         element.tun_addr = element.external_iface.address
-        element.tun_port = 15000 + int(guid)
+        element.tun_port = testbed_instance.tapPortBase + int(guid)
 
     # Set enabled traces
     traces = testbed_instance._get_traces(guid)
@@ -1133,6 +1133,14 @@ testbed_attributes = dict({
                         "CRITICAL"],
             "validation_function": validation.is_enum,
         }),
+        "tap_port_base":  dict({
+            "name": "tapPortBase", 
+            "help": "Base port to use when connecting TUN/TAPs. Effective port will be BASE + GUID.",
+            "type": Attribute.INTEGER,
+            "value": 15000,
+            "range": (2000,30000),
+            "validation_function": validation.is_integer_range(2000,30000)
+        }),
     })
 
 class MetadataInfo(metadata.MetadataInfo):
index 758cb04..15e69b7 100755 (executable)
@@ -20,9 +20,12 @@ class PlanetLabExecuteTestCase(unittest.TestCase):
     
     host1 = "nepi1.pl.sophia.inria.fr"
     host2 = "nepi2.pl.sophia.inria.fr"
-
+    
+    port_base = 2000 + (os.getpid() % 1000) * 13
+    
     def setUp(self):
         self.root_dir = tempfile.mkdtemp()
+        self.port_base = self.port_base + 100
         
     def tearDown(self):
         try:
index ccd71dd..8163a72 100755 (executable)
@@ -25,8 +25,11 @@ class PlanetLabIntegrationTestCase(unittest.TestCase):
     host3 = "nepi3.pl.sophia.inria.fr"
     host4 = "nepi5.pl.sophia.inria.fr"
 
+    port_base = 2000 + (os.getpid() % 1000) * 13
+    
     def setUp(self):
         self.root_dir = tempfile.mkdtemp()
+        self.port_base = self.port_base + 100
 
     def tearDown(self):
         try:
index 77850cc..5477911 100755 (executable)
@@ -29,8 +29,11 @@ class PlanetLabMultiIntegrationTestCase(unittest.TestCase):
     host1pl2 = "planetlab1.utt.fr"
     host2pl2 = "planetlab2.utt.fr"
 
+    port_base = 2000 + (os.getpid() % 1000) * 13
+    
     def setUp(self):
         self.root_dir = tempfile.mkdtemp()
+        self.port_base = self.port_base + 100
 
     def tearDown(self):
         try:
index a501b45..eaa0543 100755 (executable)
@@ -29,8 +29,11 @@ class PlanetLabMultiIntegrationTestCase(unittest.TestCase):
     host1pl2 = "planetlab1.utt.fr"
     host2pl2 = "planetlab2.utt.fr"
 
+    port_base = 2000 + (os.getpid() % 1000) * 13
+    
     def setUp(self):
         self.root_dir = tempfile.mkdtemp()
+        self.port_base = self.port_base + 100
 
     def tearDown(self):
         try:
index 459c773..5671f1a 100755 (executable)
@@ -24,8 +24,11 @@ class PlanetLabCrossIntegrationTestCase(unittest.TestCase):
     host3 = "nepi3.pl.sophia.inria.fr"
     host4 = "nepi5.pl.sophia.inria.fr"
 
+    port_base = 2000 + (os.getpid() % 1000) * 13
+    
     def setUp(self):
         self.root_dir = tempfile.mkdtemp()
+        self.port_base = self.port_base + 100
 
     def tearDown(self):
         try: