From: Yonghong Song Date: Sat, 11 Jul 2015 05:58:59 +0000 (-0700) Subject: add required parameter ifc_name for additional ifc adding to ns X-Git-Tag: v0.1.2~25^2~2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a51ec2f1361449332f7dbd485e17b1da5e8f6ab0;p=platform%2Fupstream%2Fbcc.git add required parameter ifc_name for additional ifc adding to ns o make some long lines in python codes shorter o use python style unused variable name "_" Signed-off-by: Yonghong Song --- diff --git a/examples/simulation.py b/examples/simulation.py index cbf94e2..3885e97 100644 --- a/examples/simulation.py +++ b/examples/simulation.py @@ -15,8 +15,12 @@ class Simulation(object): self.released = False # helper function to add additional ifc to namespace - def _ns_add_ifc(self, name, ns_ifc, in_ifc=None, out_ifc=None, ipaddr=None, - macaddr=None, fn=None, cmd=None, action="ok", disable_ipv6=False): + # if called directly outside Simulation class, "ifc_base_name" should be + # different from "name", the "ifc_base_name" and "name" are the same for + # the first ifc created by namespace + def _ns_add_ifc(self, name, ns_ifc, ifc_base_name, in_ifc=None, out_ifc=None, + ipaddr=None, macaddr=None, fn=None, cmd=None, action="ok", + disable_ipv6=False): if name in self.ipdbs: ns_ipdb = self.ipdbs[name] else: @@ -24,8 +28,8 @@ class Simulation(object): if in_ifc: in_ifname = in_ifc.ifname else: - out_ifc = self.ipdb.create(ifname="%s%sa" % (name, ns_ifc), kind="veth", - peer="%s%sb" % (name, ns_ifc)).commit() + out_ifc = self.ipdb.create(ifname="%sa" % ifc_base_name, kind="veth", + peer="%sb" % ifc_base_name).commit() in_ifc = self.ipdb.interfaces[out_ifc.peer] in_ifname = in_ifc.ifname with in_ifc as v: @@ -40,8 +44,10 @@ class Simulation(object): v.up() # if required, disable ipv6 before attaching the filter if disable_ipv6: - subprocess.call(["sysctl", "-q", "-w", "net.ipv6.conf." + out_ifc.ifname+ ".disable_ipv6=1"]) - nsp = NSPopen(ns_ipdb.nl.netns, ["sysctl", "-q", "-w", "net.ipv6.conf." + ns_ifc + ".disable_ipv6=1"]) + subprocess.call(["sysctl", "-q", "-w", + "net.ipv6.conf." + out_ifc.ifname+ ".disable_ipv6=1"]) + nsp = NSPopen(ns_ipdb.nl.netns, + ["sysctl", "-q", "-w", "net.ipv6.conf." + ns_ifc + ".disable_ipv6=1"]) nsp.wait(); nsp.release() if fn and out_ifc: self.ipdb.nl.tc("add", "ingress", out_ifc["index"], "ffff:") @@ -55,8 +61,9 @@ class Simulation(object): # helper function to create a namespace and a veth connecting it def _create_ns(self, name, in_ifc=None, out_ifc=None, ipaddr=None, macaddr=None, fn=None, cmd=None, action="ok", disable_ipv6=False): - (ns_ipdb, out_ifc, in_ifc) = self._ns_add_ifc(name, "eth0", in_ifc, out_ifc, ipaddr, - macaddr, fn, cmd, action, disable_ipv6) + (ns_ipdb, out_ifc, in_ifc) = self._ns_add_ifc(name, "eth0", name, in_ifc, out_ifc, + ipaddr, macaddr, fn, cmd, action, + disable_ipv6) self.ipdbs[ns_ipdb.nl.netns] = ns_ipdb self.namespaces.append(ns_ipdb.nl) return (ns_ipdb, out_ifc, in_ifc) diff --git a/examples/vlan_learning.py b/examples/vlan_learning.py index 923cb65..e4e5f50 100644 --- a/examples/vlan_learning.py +++ b/examples/vlan_learning.py @@ -91,7 +91,7 @@ class VlanSimulation(Simulation): ((i >> 16) & 0xff, (i >> 8) & 0xff, i & 0xff)) # assign this client to the given worker - idx = self.ipdb.interfaces["worker%deth0a" % i]["index"] + idx = self.ipdb.interfaces["worker%da" % i]["index"] mac = int(macaddr.replace(":", ""), 16) ingress[ingress.Key(mac)] = ingress.Leaf(idx, 0, 0) diff --git a/tests/cc/test_brb.py b/tests/cc/test_brb.py index 5d130b8..e1d9c4f 100755 --- a/tests/cc/test_brb.py +++ b/tests/cc/test_brb.py @@ -156,31 +156,42 @@ class TestBPFSocket(TestCase): # set up the topology self.set_default_const() - (ns1_ipdb, self.ns1_eth_out, unused) = sim._create_ns(self.ns1, ipaddr=self.vm1_ip+'/24', fn=self.pem_fn, action='drop', - disable_ipv6=True) - (ns2_ipdb, self.ns2_eth_out, unused) = sim._create_ns(self.ns2, ipaddr=self.vm2_ip+'/24', fn=self.pem_fn, action='drop', - disable_ipv6=True) + (ns1_ipdb, self.ns1_eth_out, _) = sim._create_ns(self.ns1, ipaddr=self.vm1_ip+'/24', + fn=self.pem_fn, action='drop', + disable_ipv6=True) + (ns2_ipdb, self.ns2_eth_out, _) = sim._create_ns(self.ns2, ipaddr=self.vm2_ip+'/24', + fn=self.pem_fn, action='drop', + disable_ipv6=True) ns1_ipdb.routes.add({'dst': self.vm2_rtr_mask, 'gateway': self.vm1_rtr_ip}).commit() ns2_ipdb.routes.add({'dst': self.vm1_rtr_mask, 'gateway': self.vm2_rtr_ip}).commit() self.vm1_mac = ns1_ipdb.interfaces['eth0'].address self.vm2_mac = ns2_ipdb.interfaces['eth0'].address - (rt_ipdb, self.nsrtr_eth0_out, unused) = sim._create_ns(self.ns_router, ipaddr=self.vm1_rtr_ip+'/24', fn=self.br1_fn, - action='drop', disable_ipv6=True) - (rt_ipdb, self.nsrtr_eth1_out, unused) = sim._ns_add_ifc(self.ns_router, "eth1", ipaddr=self.vm2_rtr_ip+'/24', - fn=self.br2_fn, action='drop', disable_ipv6=True) - nsp = NSPopen(rt_ipdb.nl.netns, ["sysctl", "-w", "net.ipv4.ip_forward=1"]); nsp.wait(); nsp.release() + (_, self.nsrtr_eth0_out, _) = sim._create_ns(self.ns_router, ipaddr=self.vm1_rtr_ip+'/24', + fn=self.br1_fn, action='drop', + disable_ipv6=True) + (rt_ipdb, self.nsrtr_eth1_out, _) = sim._ns_add_ifc(self.ns_router, "eth1", "ns_router2", + ipaddr=self.vm2_rtr_ip+'/24', + fn=self.br2_fn, action='drop', + disable_ipv6=True) + nsp = NSPopen(rt_ipdb.nl.netns, ["sysctl", "-w", "net.ipv4.ip_forward=1"]) + nsp.wait(); nsp.release() # configure maps self.config_maps() # our bridge is not smart enough, so send arping for router learning to prevent router # from sending out arp request - nsp = NSPopen(ns1_ipdb.nl.netns, ["arping", "-w", "1", "-c", "1", "-I", "eth0", self.vm1_rtr_ip]); nsp.wait(); nsp.release() - nsp = NSPopen(ns2_ipdb.nl.netns, ["arping", "-w", "1", "-c", "1", "-I", "eth0", self.vm2_rtr_ip]); nsp.wait(); nsp.release() + nsp = NSPopen(ns1_ipdb.nl.netns, + ["arping", "-w", "1", "-c", "1", "-I", "eth0", self.vm1_rtr_ip]) + nsp.wait(); nsp.release() + nsp = NSPopen(ns2_ipdb.nl.netns, + ["arping", "-w", "1", "-c", "1", "-I", "eth0", self.vm2_rtr_ip]) + nsp.wait(); nsp.release() # ping - nsp = NSPopen(ns1_ipdb.nl.netns, ["ping", self.vm2_ip, "-c", "2"]); nsp.wait(); nsp.release() + nsp = NSPopen(ns1_ipdb.nl.netns, ["ping", self.vm2_ip, "-c", "2"]) + nsp.wait(); nsp.release() # pem_stats only counts pem->bridge traffic, each VM has 4: arping/arp request/2 icmp request # total 8 packets should be counted self.assertEqual(self.pem_stats[c_uint(0)].value, 8) @@ -188,23 +199,26 @@ class TestBPFSocket(TestCase): # iperf, run server on the background nsp_server = NSPopen(ns2_ipdb.nl.netns, ["iperf", "-s", "-xSCD"]) sleep(1) - nsp = NSPopen(ns1_ipdb.nl.netns, ["iperf", "-c", self.vm2_ip, "-t", "1", "-xSC"]); nsp.wait(); nsp.release() + nsp = NSPopen(ns1_ipdb.nl.netns, ["iperf", "-c", self.vm2_ip, "-t", "1", "-xSC"]) + nsp.wait(); nsp.release() nsp_server.kill(); nsp_server.wait(); nsp.release() # netperf, run server on the background nsp_server = NSPopen(ns2_ipdb.nl.netns, ["netserver"]) sleep(1) - nsp = NSPopen(ns1_ipdb.nl.netns, ["netperf", "-l", "1", "-H", self.vm2_ip, "--", "-m", "65160"]); nsp.wait(); nsp.release() - nsp = NSPopen(ns1_ipdb.nl.netns, ["netperf", "-l", "1", "-H", self.vm2_ip, "-t", "TCP_RR"]); nsp.wait(); nsp.release() + nsp = NSPopen(ns1_ipdb.nl.netns, ["netperf", "-l", "1", "-H", self.vm2_ip, "--", "-m", "65160"]) + nsp.wait(); nsp.release() + nsp = NSPopen(ns1_ipdb.nl.netns, ["netperf", "-l", "1", "-H", self.vm2_ip, "-t", "TCP_RR"]) + nsp.wait(); nsp.release() nsp_server.kill(); nsp_server.wait(); nsp.release() finally: # this is a little bit hacker, but we want to be sure to remove all created interfaces # ns1_eth_out, ns2_eth_out, nsrtr_eth0_out, nsrtr_eth1_out - if "ns1eth0a" in ipdb.interfaces: ipdb.interfaces.ns1eth0a.remove().commit() - if "ns2eth0a" in ipdb.interfaces: ipdb.interfaces.ns2eth0a.remove().commit() - if "ns_routereth0a" in ipdb.interfaces: ipdb.interfaces.ns_routereth0a.remove().commit() - if "ns_routereth1a" in ipdb.interfaces: ipdb.interfaces.ns_routereth1a.remove().commit() + if "ns1a" in ipdb.interfaces: ipdb.interfaces.ns1a.remove().commit() + if "ns2a" in ipdb.interfaces: ipdb.interfaces.ns2a.remove().commit() + if "ns_routera" in ipdb.interfaces: ipdb.interfaces.ns_routera.remove().commit() + if "ns_router2a" in ipdb.interfaces: ipdb.interfaces.ns_router2a.remove().commit() sim.release() ipdb.release() diff --git a/tests/cc/test_brb2.py b/tests/cc/test_brb2.py index f7cc6dc..8200301 100755 --- a/tests/cc/test_brb2.py +++ b/tests/cc/test_brb2.py @@ -134,19 +134,23 @@ class TestBPFSocket(TestCase): # set up the topology self.set_default_const() - (ns1_ipdb, self.ns1_eth_out, unused) = sim._create_ns(self.ns1, ipaddr=self.vm1_ip+'/24', fn=self.pem_fn, - action='drop', disable_ipv6=True) - (ns2_ipdb, self.ns2_eth_out, unused) = sim._create_ns(self.ns2, ipaddr=self.vm2_ip+'/24', fn=self.pem_fn, - action='drop', disable_ipv6=True) + (ns1_ipdb, self.ns1_eth_out, _) = sim._create_ns(self.ns1, ipaddr=self.vm1_ip+'/24', + fn=self.pem_fn, action='drop', + disable_ipv6=True) + (ns2_ipdb, self.ns2_eth_out, _) = sim._create_ns(self.ns2, ipaddr=self.vm2_ip+'/24', + fn=self.pem_fn, action='drop', + disable_ipv6=True) ns1_ipdb.routes.add({'dst': self.vm2_rtr_mask, 'gateway': self.vm1_rtr_ip}).commit() ns2_ipdb.routes.add({'dst': self.vm1_rtr_mask, 'gateway': self.vm2_rtr_ip}).commit() - (rt_ipdb, self.nsrtr_eth0_out, unused) = sim._create_ns(self.ns_router, ipaddr=self.vm1_rtr_ip+'/24', - disable_ipv6=True) - (rt_ipdb, self.nsrtr_eth1_out, unused) = sim._ns_add_ifc(self.ns_router, "eth1", ipaddr=self.vm2_rtr_ip+'/24', - disable_ipv6=True) + (_, self.nsrtr_eth0_out, _) = sim._create_ns(self.ns_router, ipaddr=self.vm1_rtr_ip+'/24', + disable_ipv6=True) + (rt_ipdb, self.nsrtr_eth1_out, _) = sim._ns_add_ifc(self.ns_router, "eth1", "ns_router2", + ipaddr=self.vm2_rtr_ip+'/24', + disable_ipv6=True) # enable ip forwarding in router ns - nsp = NSPopen(rt_ipdb.nl.netns, ["sysctl", "-w", "net.ipv4.ip_forward=1"]); nsp.wait(); nsp.release() + nsp = NSPopen(rt_ipdb.nl.netns, ["sysctl", "-w", "net.ipv4.ip_forward=1"]) + nsp.wait(); nsp.release() # for each VM connecting to pem, there will be a corresponding veth connecting to the bridge self.setup_br(self.br1, self.nsrtr_eth0_out.ifname, self.veth_pem_2_br1, self.veth_br1_2_pem) @@ -163,23 +167,26 @@ class TestBPFSocket(TestCase): # iperf, run server on the background nsp_server = NSPopen(ns2_ipdb.nl.netns, ["iperf", "-s", "-xSCD"]) sleep(1) - nsp = NSPopen(ns1_ipdb.nl.netns, ["iperf", "-c", self.vm2_ip, "-t", "1", "-xSC"]); nsp.wait(); nsp.release() + nsp = NSPopen(ns1_ipdb.nl.netns, ["iperf", "-c", self.vm2_ip, "-t", "1", "-xSC"]) + nsp.wait(); nsp.release() nsp_server.kill(); nsp_server.wait(); nsp.release() # netperf, run server on the background nsp_server = NSPopen(ns2_ipdb.nl.netns, ["netserver"]) sleep(1) - nsp = NSPopen(ns1_ipdb.nl.netns, ["netperf", "-l", "1", "-H", self.vm2_ip, "--", "-m", "65160"]); nsp.wait(); nsp.release() - nsp = NSPopen(ns1_ipdb.nl.netns, ["netperf", "-l", "1", "-H", self.vm2_ip, "-t", "TCP_RR"]); nsp.wait(); nsp.release() + nsp = NSPopen(ns1_ipdb.nl.netns, ["netperf", "-l", "1", "-H", self.vm2_ip, "--", "-m", "65160"]) + nsp.wait(); nsp.release() + nsp = NSPopen(ns1_ipdb.nl.netns, ["netperf", "-l", "1", "-H", self.vm2_ip, "-t", "TCP_RR"]) + nsp.wait(); nsp.release() nsp_server.kill(); nsp_server.wait(); nsp.release() finally: # this is a little bit hacker, but we want to be sure to remove all created interfaces # ns1_eth_out, ns2_eth_out, nsrtr_eth0_out, nsrtr_eth1_out - if "ns1eth0a" in ipdb.interfaces: ipdb.interfaces.ns1eth0a.remove().commit() - if "ns2eth0a" in ipdb.interfaces: ipdb.interfaces.ns2eth0a.remove().commit() - if "ns_routereth0a" in ipdb.interfaces: ipdb.interfaces.ns_routereth0a.remove().commit() - if "ns_routereth1a" in ipdb.interfaces: ipdb.interfaces.ns_routereth1a.remove().commit() + if "ns1a" in ipdb.interfaces: ipdb.interfaces.ns1a.remove().commit() + if "ns2a" in ipdb.interfaces: ipdb.interfaces.ns2a.remove().commit() + if "ns_routera" in ipdb.interfaces: ipdb.interfaces.ns_routera.remove().commit() + if "ns_router2a" in ipdb.interfaces: ipdb.interfaces.ns_router2a.remove().commit() if self.br1 in ipdb.interfaces: ipdb.interfaces[self.br1].remove().commit() if self.br2 in ipdb.interfaces: ipdb.interfaces[self.br2].remove().commit()