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)
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):
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 ###
"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.",
"architecture",
"operating_system",
"site",
- "emulation",
"min_reliability",
"max_reliability",
"min_bandwidth",
self.operatingSystem = None
self.pl_distro = None
self.site = None
- self.emulation = None
self.minReliability = None
self.maxReliability = None
self.minBandwidth = None
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")
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")
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")
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")
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()
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:
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()
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")
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 = []