On Tue, Aug 21, 2018 at 02:11:16PM +0200, csfakian@redhat.com wrote:
From: Christos Sfakianakis csfakian@redhat.com
Add ported recipe Vlans3OverRoundRobinBondRecipe, implementing old regression_tests/phase1/3_vlans_over_round_robin_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/Vlans3OverRoundRobinBondRecipe.py | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 lnst/Recipes/ENRT/Vlans3OverRoundRobinBondRecipe.py
diff --git a/lnst/Recipes/ENRT/Vlans3OverRoundRobinBondRecipe.py b/lnst/Recipes/ENRT/Vlans3OverRoundRobinBondRecipe.py new file mode 100644 index 0000000..c522bac --- /dev/null +++ b/lnst/Recipes/ENRT/Vlans3OverRoundRobinBondRecipe.py @@ -0,0 +1,92 @@ +""" +Implements scenario similar to regression_tests/phase1/ +(3_vlans_over_round_robin_bond.xml + 3_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
+class Vlans3OverRoundRobinBondRecipe(BaseEnrtRecipe):
- m1 = HostReq()
- m1.eth0 = DeviceReq(label="net1")
- m1.eth1 = DeviceReq(label="net1")
- m2 = HostReq()
- m2.eth0 = DeviceReq(label="net1")
- 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="off")))- def test_wide_configuration(self):
m1, m2 = self.matched.m1, self.matched.m2m1.bond0 = BondDevice(mode="balance-rr", name="my_bond0")m1.eth0.down()m1.eth1.down()m1.bond0.slave_add(m1.eth0)m1.bond0.slave_add(m1.eth1)m1.vlan1 = VlanDevice(realdev=m1.bond0, vlan_id=10)m1.vlan2 = VlanDevice(realdev=m1.bond0, vlan_id=20)m1.vlan3 = VlanDevice(realdev=m1.bond0, vlan_id=30)m2.vlan1 = VlanDevice(realdev=m2.eth0, vlan_id=10)m2.vlan2 = VlanDevice(realdev=m2.eth0, vlan_id=20)m2.vlan3 = VlanDevice(realdev=m2.eth0, vlan_id=30)#Due to limitations in the current EnrtConfiguration#class, a single vlan test pair is chosenconfiguration = EnrtConfiguration()configuration.endpoint1 = m1.vlan1configuration.endpoint2 = m2.vlan1if "mtu" in self.params:m1.bond0.mtu = self.params.mtum2.eth0.mtu = self.params.mtunet_addr_1 = "192.168.10"net_addr_2 = "192.168.20"net_addr_3 = "192.168.30"net_addr6_1 = "fc00:0:0:1"net_addr6_2 = "fc00:0:0:2"net_addr6_3 = "fc00:0:0:3"for i, m in [(1, m1), (2, m2)]:m.vlan1.ip_add(ipaddress(net_addr_1 + "." + str(i) + "/24"))m.vlan1.ip_add(ipaddress(net_addr6_1 + "::" + str(i) + "/64"))m.vlan2.ip_add(ipaddress(net_addr_2 + "." + str(i) + "/24"))m.vlan2.ip_add(ipaddress(net_addr6_2 + "::" + str(i) + "/64"))m.vlan3.ip_add(ipaddress(net_addr_3 + "." + str(i) + "/24"))m.vlan3.ip_add(ipaddress(net_addr6_3 + "::" + str(i) + "/64"))m1.eth0.up()m1.eth1.up()m1.bond0.up()m1.vlan1.up()m1.vlan2.up()m1.vlan3.up()m2.eth0.up()m2.vlan1.up()m2.vlan2.up()m2.vlan3.up()#TODO better service handling through HostAPIm1.run("service irqbalance stop")m2.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 = self.matched.m1, self.matched.m2#TODO better service handling through HostAPIm1.run("service irqbalance start")m2.run("service irqbalance start")
Same as for the ActiveBackupBond vs RoundRobinBond recipes - the only difference is the bonding mode, so make that a parameter instead and remove one of the recipes.
And it's also missing the miimon parameter.
Finally I'm not sure we really need 3 vlans, we might be ok with just 2.
I also think it's then ok to rename the recipes to VlansOverBondRecipe and don't include the '3' or '2' in the name...
-Ondrej