On Tue, Aug 21, 2018 at 02:11:18PM +0200, csfakian@redhat.com wrote:
From: Christos Sfakianakis csfakian@redhat.com
Add ported recipe VirtualBridge2VlansOverBondRecipe, implementing old regr_tests/phase1/virtual_bridge_2_vlans_over_active_backup_bond.xml. Its structure is based on previously ported SimplePerfRecipe. Due to limitations in the current EnrtConfiguration class, a single vlan test pair is chosen.
Signed-off-by: Christos Sfakianakis csfakian@redhat.com
.../ENRT/VirtualBridge2VlansOverBondRecipe.py | 125 ++++++++++++++++++ 1 file changed, 125 insertions(+) create mode 100644 lnst/Recipes/ENRT/VirtualBridge2VlansOverBondRecipe.py
diff --git a/lnst/Recipes/ENRT/VirtualBridge2VlansOverBondRecipe.py b/lnst/Recipes/ENRT/VirtualBridge2VlansOverBondRecipe.py new file mode 100644 index 0000000..7ec3d0e --- /dev/null +++ b/lnst/Recipes/ENRT/VirtualBridge2VlansOverBondRecipe.py @@ -0,0 +1,125 @@ +""" +Implements scenario similar to regression_tests/phase1/ +(virtual_bridge_2_vlans_over_active_backup_bond.xml + virtual_bridge_2_vlans_over_bond.py) +""" +from lnst.Common.Parameters import Param +from lnst.Common.IpAddress import ipaddress +from lnst.Controller import HostReq, DeviceReq +from lnst.Recipes.ENRT.BaseEnrtRecipe import BaseEnrtRecipe, EnrtConfiguration +from lnst.Devices import VlanDevice +from lnst.Devices import BondDevice +from lnst.Devices import BridgeDevice
+class VirtualBridge2VlansOverBondRecipe(BaseEnrtRecipe):
- m1 = HostReq()
- m1.nic1 = DeviceReq(label="to_switch")
- m1.nic2 = DeviceReq(label="to_switch")
- m1.tap1 = DeviceReq(label="to_guest1")
- m1.tap2 = DeviceReq(label="to_guest2")
- m2 = HostReq()
- m2.nic1 = DeviceReq(label="to_switch")
- m2.nic2 = DeviceReq(label="to_switch")
- m2.tap1 = DeviceReq(label="to_guest3")
- m2.tap2 = DeviceReq(label="to_guest4")
- m3 = HostReq()
- m3.guestnic = DeviceReq(label="to_guest1")
- m4 = HostReq()
- m4.guestnic = DeviceReq(label="to_guest2")
- m5 = HostReq()
- m5.guestnic = DeviceReq(label="to_guest3")
- m6 = HostReq()
- m6.guestnic = DeviceReq(label="to_guest4")
- offload_combinations = Param(default=(
dict(gro="on", gso="on", tso="on", tx="on"),dict(gro="off", gso="on", tso="on", tx="on"),dict(gro="on", gso="off", tso="off", tx="on"),dict(gro="on", gso="on", tso="off", tx="on")))- def test_wide_configuration(self):
m1, m2, m3, m4, m5, m6 = self.matched.m1, self.matched.m2, self.matched.m3, self.matched.m4, self.matched.m5, self.matched.m6for m, n in [(m1, 10),(m2, 10)]:m.nic1.down()m.nic2.down()m.tap1.down()m.tap2.down()m.bond0 = BondDevice(mode="active-backup", name="my_bond0")m.bond0.slave_add(m.nic1)m.bond0.slave_add(m.nic2)m.vlan1 = VlanDevice(realdev=m.bond0, vlan_id=n)m.vlan2 = VlanDevice(realdev=m.bond0, vlan_id=2*n)m.br0 = BridgeDevice()m.br0.slave_add(m.vlan1)m.br0.slave_add(m.tap1)m.br1 = BridgeDevice()m.br1.slave_add(m.vlan2)m.br1.slave_add(m.tap2)for m in (m3, m4, m5, m6):m.guestnic.down()#Due to limitations in the current EnrtConfiguration#class, a single vlan test pair is chosenconfiguration = EnrtConfiguration()configuration.endpoint1 = m3.guestnicconfiguration.endpoint2 = m5.guestnicif "mtu" in self.params:m1.br0.mtu = self.params.mtum1.br1.mtu = self.params.mtum2.br0.mtu = self.params.mtum1.br1.mtu = self.params.mtum3.guestnic.mtu = self.params.mtum4.guestnic.mtu = self.params.mtum5.guestnic.mtu = self.params.mtum6.guestnic.mtu = self.params.mtunet_addr_1 = "192.168.10"net_addr_2 = "192.168.20"net_addr6_1 = "fc00:0:0:1"net_addr6_2 = "fc00:0:0:2"for m, (g1, g2), n in [(m1, (m3, m4), 1), (m2, (m5, m6), 3)]:m.bond0.ip_add(ipaddress("1.2.3.4"))m.br0.ip_add(ipaddress(net_addr_1 + "." + str(n) + "/24"))m.br1.ip_add(ipaddress(net_addr_2 + "." + str(n) + "/24"))g1.guestnic.ip_add(ipaddress(net_addr_1 + "." + str(n+1) + "/24"))g1.guestnic.ip_add(ipaddress(net_addr6_1 + "::" + str(n+1) + "/64"))g2.guestnic.ip_add(ipaddress(net_addr_2 + "." + str(n+1) + "/24"))g2.guestnic.ip_add(ipaddress(net_addr6_2 + "::" + str(n+1) + "/64"))for m, g1, g2 in [(m1, m3, m4), (m2, m5, m6)]:m.nic1.up()m.nic2.up()m.tap1.up()m.tap2.up()m.bond0.up()m.vlan1.up()m.vlan2.up()m.br0.up()m.br1.up()g1.guestnic.up()g2.guestnic.up()#TODO better service handling through HostAPIfor m in (m1, m2, m3, m4, m5, m6):m1.run("service irqbalance stop")for m in self.matched:for dev in m.devices:self._pin_dev_interrupts(dev, self.params.dev_intr_cpu)return configuration- def test_wide_deconfiguration(self, config):
m1, m2, m3, m4, m5, m6 = self.matched.m1, self.matched.m2, self.matched.m3, self.matched.m4, self.matched.m5, self.matched.m6#TODO better service handling through HostAPIfor m in (m1, m2, m3, m4, m5, m6):m1.run("service irqbalance start")
Same as for the other VirtualBridge cases just improving the machine and nic names should be ok.
-Ondrej