On Wed, Sep 12, 2018 at 05:50:11PM +0200, csfakian(a)redhat.com wrote:
> From: Christos Sfakianakis <csfakian(a)redhat.com>
>
> Add ported recipe VirtualOvsBridgeVlanInGuestRecipe, implementing
> old regression_tests/phase2/virtual_ovs_bridge_vlan_in_guest.xml.
> Base it on previously ported SimplePerfRecipe.
>
> Signed-off-by: Christos Sfakianakis <csfakian(a)redhat.com>
> ---
> .../ENRT/VirtualOvsBridgeVlanInGuestRecipe.py | 97 +++++++++++++++++++
> 1 file changed, 97 insertions(+)
> create mode 100644 lnst/Recipes/ENRT/VirtualOvsBridgeVlanInGuestRecipe.py
>
> diff --git a/lnst/Recipes/ENRT/VirtualOvsBridgeVlanInGuestRecipe.py
b/lnst/Recipes/ENRT/VirtualOvsBridgeVlanInGuestRecipe.py
> new file mode 100644
> index 0000000..ed5c19e
> --- /dev/null
> +++ b/lnst/Recipes/ENRT/VirtualOvsBridgeVlanInGuestRecipe.py
> @@ -0,0 +1,97 @@
> +"""
> +Implements scenario similar to regression_tests/phase2/
> +(virtual_ovs_bridge_vlan_in_guest.xml + virtual_ovs_bridge_vlan_in_guest.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 OvsBridgeDevice
> +
> +class VirtualOvsBridgeVlanInGuestRecipe(BaseEnrtRecipe):
> + host1 = HostReq()
> + host1.eth0 = DeviceReq(label="to_switch")
> + host1.eth1 = DeviceReq(label="to_guest")
> +
> + host2 = HostReq()
> + host2.eth0 = DeviceReq(label="to_switch")
> +
> + guest1 = HostReq()
> + guest1.eth0 = DeviceReq(label="to_guest")
> +
> + offload_combinations = Param(default=(
> + dict(gro="on", gso="on", tso="on",
tx="on", rx="on"),
> + dict(gro="off", gso="on", tso="on",
tx="on", rx="on"),
> + dict(gro="on", gso="off", tso="off",
tx="on", rx="on"),
> + dict(gro="on", gso="on", tso="off",
tx="off", rx="on"),
> + dict(gro="on", gso="on", tso="on",
tx="on", rx="off")))
> +
> + def test_wide_configuration(self):
> + host1, host2, guest1 = self.matched.host1, self.matched.host2,
self.matched.guest1
> +
> + host1.eth0.down()
> + host1.eth1.down()
> + host1.br0 = OvsBridgeDevice()
> + #Add this check to avoid non-zero return code of ovs-vsctl
'add-port'
> + #command in case the interface has already been enslaved in the bridge
> + #by either NetworkManager or OpenVSwitch behavior.
> + #E.g
https://github.com/ansible/ansible-modules-extras/issues/3410
> + for m, d in [(host1, host1.eth0), (host1, host1.eth1)]:
> + if d.master != None:
> + if "ovs" not in d.master.name:
> + m.br0.port_add(d)
> + else:
> + m.br0.port_add(d)
I really don't think this should be here... The OvS bridge is freshly
created, it shouldn't have any ports. If it does it's a bug we need to
fix elsewhere...
Same thing applies to all the following OvS related tests that also have
this bit of code...
> > +
> > + host2.eth0.down()
> > + host2.vlan1 = VlanDevice(realdev=host2.eth0, vlan_id=10)
> > +
> > + guest1.eth0.down()
> > + guest1.vlan1 = VlanDevice(realdev=guest1.eth0, vlan_id=10)
> > +
> > + #Due to limitations in the current EnrtConfiguration
> > + #class, a single vlan test pair is chosen
> > + configuration = EnrtConfiguration()
> > + configuration.endpoint1 = guest1.vlan1
> > + configuration.endpoint2 = host2.vlan1
> > +
> > + if "mtu" in self.params:
> > + host1.br0.mtu = self.params.mtu
> > + host2.vlan1.mtu = self.params.mtu
> > + guest1.vlan1.mtu = self.params.mtu
> > +
> > + net_addr_1 = "192.168.10"
> > + net_addr6_1 = "fc00:0:0:1"
> > +
> > + host2.vlan1.ip_add(ipaddress(net_addr_1 + ".2/24"))
> > + host2.vlan1.ip_add(ipaddress(net_addr6_1 + "::2/64"))
> > + guest1.vlan1.ip_add(ipaddress(net_addr_1 + ".3/24"))
> > + guest1.vlan1.ip_add(ipaddress(net_addr6_1 + "::3/64"))
> > +
> > + host1.eth0.up()
> > + host1.eth1.up()
> > + host1.br0.up()
> > + host2.eth0.up()
> > + host2.vlan1.up()
> > + guest1.eth0.up()
> > + guest1.vlan1.up()
> > +
> > + #TODO better service handling through HostAPI
> > + host1.run("service irqbalance stop")
> > + host2.run("service irqbalance stop")
> > + guest1.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):
> > + host1, host2, guest1 = self.matched.host1, self.matched.host2,
self.matched.guest1
> > +
> > + #TODO better service handling through HostAPI
> > + host1.run("service irqbalance start")
> > + host2.run("service irqbalance start")
> > + guest1.run("service irqbalance start")
> > --
> > 2.17.1
> > _______________________________________________
> > LNST-developers mailing list -- lnst-developers(a)lists.fedorahosted.org
> > To unsubscribe send an email to lnst-developers-leave(a)lists.fedorahosted.org
> > Fedora Code of Conduct:
> _______________________________________________
> LNST-developers mailing list -- lnst-developers(a)lists.fedorahosted.org
> To unsubscribe send an email to lnst-developers-leave(a)lists.fedorahosted.org
> Fedora Code of Conduct: