From: Christos Sfakianakis csfakian@redhat.com
Adding ported recipe RoundRobinBondRecipe, implementing old regression_tests/phase1/round_robin_bond.xml.Its structure is based on previously ported SimplePerfRecipe.
Signed-off-by: Christos Sfakianakis csfakian@redhat.com --- lnst/Recipes/ENRT/RoundRobinBondRecipe.py | 68 +++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 lnst/Recipes/ENRT/RoundRobinBondRecipe.py
diff --git a/lnst/Recipes/ENRT/RoundRobinBondRecipe.py b/lnst/Recipes/ENRT/RoundRobinBondRecipe.py new file mode 100644 index 0000000..fe2a7b6 --- /dev/null +++ b/lnst/Recipes/ENRT/RoundRobinBondRecipe.py @@ -0,0 +1,68 @@ +""" +Implements scenario similar to regression_tests/phase1/ +(round_robin_bond.xml + bonding_test.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 BondDevice + +class RoundRobinBondRecipe(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.m2 + + m1.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) + + configuration = EnrtConfiguration() + configuration.endpoint1 = m1.bond0 + configuration.endpoint2 = m2.eth0 + + if "mtu" in self.params: + m1.bond0.mtu = self.params.mtu + m2.eth0.mtu = self.params.mtu + + net_addr = "192.168.101" + net_addr6 = "fc00:0:0:0" + m1.bond0.ip_add(ipaddress(net_addr + ".1/24")) + m1.bond0.ip_add(ipaddress(net_addr6 + "::1/64")) + m1.eth0.up() + m1.eth1.up() + m1.bond0.up() + + m2.eth0.ip_add(ipaddress(net_addr + ".2/24")) + m2.eth0.ip_add(ipaddress(net_addr6 + "::2/64")) + m2.eth0.up() + + #TODO better service handling through HostAPI + m1.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 HostAPI + m1.run("service irqbalance start") + m2.run("service irqbalance start")