Ticket #58: remove the emulation flag, instead, pick correctly configured nodes only
authorClaudio-Daniel Freire <claudio-daniel.freire@inria.fr>
Tue, 19 Jul 2011 12:09:47 +0000 (14:09 +0200)
committerClaudio-Daniel Freire <claudio-daniel.freire@inria.fr>
Tue, 19 Jul 2011 12:09:47 +0000 (14:09 +0200)
src/nepi/testbeds/planetlab/execute.py
src/nepi/testbeds/planetlab/metadata.py
src/nepi/testbeds/planetlab/node.py
test/testbeds/planetlab/design.py
test/testbeds/planetlab/execute.py
test/testbeds/planetlab/integration_cross.py
test/testbeds/planetlab/integration_multi.py
test/testbeds/planetlab/integration_ns3.py

index 02514ba..1420601 100644 (file)
@@ -509,15 +509,7 @@ class TestbedController(testbed_impl.TestbedController):
         return app
 
     def _make_node(self, parameters):
-        node = self._make_generic(parameters, self._node.Node)
-
-        # If emulation is enabled, we automatically need
-        # some vsys interfaces and packages
-        if node.emulation:
-            node.required_vsys.add('ipfw-be')
-            node.required_packages.add('ipfwslice')
-
-        return node
+        return self._make_generic(parameters, self._node.Node)
 
     def _make_node_iface(self, parameters):
         return self._make_generic(parameters, self._interfaces.NodeIface)
index e20d328..f2672e8 100644 (file)
@@ -93,10 +93,8 @@ def connect_node_iface_inet(testbed_instance, iface_guid, inet_guid):
 def connect_tun_iface_node(testbed_instance, node_guid, iface_guid):
     node = testbed_instance._elements[node_guid]
     iface = testbed_instance._elements[iface_guid]
-    if not node.emulation:
-        raise RuntimeError, "Use of TUN interfaces requires emulation"
     iface.node = node
-    node.required_vsys.update(('fd_tuntap', 'vif_up'))
+    node.required_vsys.update(('fd_tuntap', 'vif_up', 'vif_down'))
     node.required_packages.update(('python', 'python-crypto', 'python-setuptools', 'gcc'))
 
 def connect_tun_iface_peer(proto, testbed_instance, iface_guid, peer_iface_guid):
@@ -155,9 +153,9 @@ def connect_dep(testbed_instance, node_guid, app_guid):
 def connect_node_netpipe(testbed_instance, node_guid, netpipe_guid):
     node = testbed_instance._elements[node_guid]
     netpipe = testbed_instance._elements[netpipe_guid]
-    if not node.emulation:
-        raise RuntimeError, "Use of NetPipes requires emulation"
     netpipe.node = node
+    node.required_vsys.add('ipfw-be')
+    node.required_packages.add('ipfwslice')
     
 
 ### Creation functions ###
@@ -667,14 +665,6 @@ attributes = dict({
                             "PLJ"],
                 "validation_function": validation.is_enum,
             }),
-    "emulation": dict({      
-                "name": "emulation",
-                "help": "Enable emulation on this node. Enables NetfilterRoutes, bridges, and a host of other functionality.",
-                "type": Attribute.BOOL,
-                "value": False, 
-                "flags": Attribute.ExecReadOnly | Attribute.ExecImmutable,
-                "validation_function": validation.is_bool,
-            }),
     "min_reliability": dict({
                 "name": "minReliability",
                 "help": "Constrain reliability while picking PlanetLab nodes. Specifies a lower acceptable bound.",
@@ -965,7 +955,6 @@ factories_info = dict({
                 "architecture",
                 "operating_system",
                 "site",
-                "emulation",
                 "min_reliability",
                 "max_reliability",
                 "min_bandwidth",
index 2557ea9..99ba2aa 100644 (file)
@@ -54,7 +54,6 @@ class Node(object):
         self.operatingSystem = None
         self.pl_distro = None
         self.site = None
-        self.emulation = None
         self.minReliability = None
         self.maxReliability = None
         self.minBandwidth = None
index ba91696..7caee34 100755 (executable)
@@ -64,8 +64,6 @@ class PlanetlabDesignTestCase(unittest.TestCase):
     def test_design_emulation(self):
         exp_desc, tstbd_desc, node1, node2, iface1, iface2, app = self.make_test_design()
         
-        node1.set_attribute_value("emulation",True)
-        
         netpipe1 = tstbd_desc.create("NetPipe")
         netpipe1.set_attribute_value("mode","CLIENT")
         netpipe1.set_attribute_value("portList","80,443")
index dcbb27e..758cb04 100755 (executable)
@@ -210,7 +210,6 @@ FIONREAD = 0x[0-9a-fA-F]{8}.*
         
         instance.defer_create(2, "Node")
         instance.defer_create_set(2, "hostname", self.host1)
-        instance.defer_create_set(2, "emulation", True) # require emulation
         instance.defer_create(3, "NodeInterface")
         instance.defer_connect(2, "devs", 3, "node")
         instance.defer_create(4, "Internet")
@@ -259,7 +258,6 @@ echo 'OKIDOKI'
         
         instance.defer_create(2, "Node")
         instance.defer_create_set(2, "hostname", self.host1)
-        instance.defer_create_set(2, "emulation", True) # require emulation
         instance.defer_create(3, "NodeInterface")
         instance.defer_connect(2, "devs", 3, "node")
         instance.defer_create(4, "Internet")
@@ -311,46 +309,14 @@ echo 'OKIDOKI'
 
         self.assertTrue(netpipe_stats, "Unavailable netpipe stats")
 
-    @test_util.skipUnless(test_util.pl_auth() is not None, "Test requires PlanetLab authentication info (PL_USER and PL_PASS environment variables)")
-    def test_tun_emulation_requirement(self):
-        instance = self.make_instance()
-        
-        instance.defer_create(2, "Node")
-        instance.defer_create_set(2, "hostname", self.host1)
-        instance.defer_create(3, "NodeInterface")
-        instance.defer_connect(2, "devs", 3, "node")
-        instance.defer_create(4, "Internet")
-        instance.defer_connect(3, "inet", 4, "devs")
-        instance.defer_create(5, "TunInterface")
-        instance.defer_add_address(5, "192.168.2.2", 24, False)
-        instance.defer_connect(2, "devs", 5, "node")
-        instance.defer_create(6, "Application")
-        instance.defer_create_set(6, "command", "false")
-        instance.defer_add_trace(6, "stdout")
-        instance.defer_add_trace(6, "stderr")
-        instance.defer_connect(6, "node", 2, "apps")
-
-        try:
-            instance.do_setup()
-            instance.do_create()
-            instance.do_connect_init()
-            instance.do_connect_compl()
-            instance.do_preconfigure()
-            instance.do_configure()
-            self.fail("Usage of TUN without emulation should fail")
-        except Exception,e:
-            pass
-
     @test_util.skipUnless(test_util.pl_auth() is not None, "Test requires PlanetLab authentication info (PL_USER and PL_PASS environment variables)")
     def _pingtest(self, TunClass, ConnectionProto):
         instance = self.make_instance()
         
         instance.defer_create(2, "Node")
         instance.defer_create_set(2, "hostname", self.host1)
-        instance.defer_create_set(2, "emulation", True) # require emulation
         instance.defer_create(3, "Node")
         instance.defer_create_set(3, "hostname", self.host2)
-        instance.defer_create_set(3, "emulation", True) # require emulation
         instance.defer_create(4, "NodeInterface")
         instance.defer_connect(2, "devs", 4, "node")
         instance.defer_create(5, "Internet")
index c152bad..77850cc 100755 (executable)
@@ -26,8 +26,8 @@ class PlanetLabMultiIntegrationTestCase(unittest.TestCase):
     host1pl1 = "nepi1.pl.sophia.inria.fr"
     host2pl1 = "nepi2.pl.sophia.inria.fr"
 
-    host1pl2 = "onelab11.pl.sophia.inria.fr"
-    host2pl2 = "onelab10.pl.sophia.inria.fr"
+    host1pl2 = "planetlab1.utt.fr"
+    host2pl2 = "planetlab2.utt.fr"
 
     def setUp(self):
         self.root_dir = tempfile.mkdtemp()
@@ -78,7 +78,6 @@ class PlanetLabMultiIntegrationTestCase(unittest.TestCase):
         node1 = pl.create("Node")
         node1.set_attribute_value("hostname", hostname)
         node1.set_attribute_value("label", label_prefix)
-        node1.set_attribute_value("emulation", True) # require emulation
         iface1 = pl.create("NodeInterface")
         iface1.set_attribute_value("label", label_prefix+"iface")
         if tapip:
index 62a36fe..a501b45 100755 (executable)
@@ -26,8 +26,8 @@ class PlanetLabMultiIntegrationTestCase(unittest.TestCase):
     host1pl1 = "nepi1.pl.sophia.inria.fr"
     host2pl1 = "nepi2.pl.sophia.inria.fr"
 
-    host1pl2 = "onelab11.pl.sophia.inria.fr"
-    host2pl2 = "onelab10.pl.sophia.inria.fr"
+    host1pl2 = "planetlab1.utt.fr"
+    host2pl2 = "planetlab2.utt.fr"
 
     def setUp(self):
         self.root_dir = tempfile.mkdtemp()
@@ -78,7 +78,6 @@ class PlanetLabMultiIntegrationTestCase(unittest.TestCase):
         node1 = pl.create("Node")
         node1.set_attribute_value("hostname", hostname)
         node1.set_attribute_value("label", label_prefix)
-        node1.set_attribute_value("emulation", True) # require emulation
         iface1 = pl.create("NodeInterface")
         iface1.set_attribute_value("label", label_prefix+"iface")
         tap1 = pl.create("TapInterface")
index 57c8fb2..459c773 100755 (executable)
@@ -64,7 +64,6 @@ class PlanetLabCrossIntegrationTestCase(unittest.TestCase):
         node1 = pl.create("Node")
         node1.set_attribute_value("hostname", hostname or self.host1)
         node1.set_attribute_value("label", label)
-        node1.set_attribute_value("emulation", True) # require emulation
         iface1 = pl.create("NodeInterface")
         iface1.set_attribute_value("label", label+"iface")
         tap1 = []