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.m6 + + for 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 chosen + configuration = EnrtConfiguration() + configuration.endpoint1 = m3.guestnic + configuration.endpoint2 = m5.guestnic + + if "mtu" in self.params: + m1.br0.mtu = self.params.mtu + m1.br1.mtu = self.params.mtu + m2.br0.mtu = self.params.mtu + m1.br1.mtu = self.params.mtu + m3.guestnic.mtu = self.params.mtu + m4.guestnic.mtu = self.params.mtu + m5.guestnic.mtu = self.params.mtu + m6.guestnic.mtu = self.params.mtu + + net_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 HostAPI + for 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 HostAPI + for m in (m1, m2, m3, m4, m5, m6): + m1.run("service irqbalance start")