[ovs-dev] [PATCH ovn] tests: Fix frequent failure of "4 HV, 1 LS, 1 LR, packet test with HA distributed router gateway port:".
Numan Siddique
numans at ovn.org
Tue Apr 20 22:54:02 UTC 2021
On Tue, Apr 20, 2021 at 1:55 PM Mark Michelson <mmichels at redhat.com> wrote:
>
> Looks good and passes for me regularly. I'm curious if this issue with
> the pcap file is common across other failing tests.
It could be. That's why I thought adding the reset pcap file function
as a common
function. We should change the existing tests to use this new function.
>
> Acked-by: Mark Michelson <mmichels at redhat.com>
Thanks. I applied this patch to the main branch.
Numan
>
> On 4/17/21 4:39 PM, numans at ovn.org wrote:
> > From: Numan Siddique <numans at ovn.org>
> >
> > This test is failing quite often due to timing issues. The failures are
> > mainly due to the packet not received by the other side of the tunnel.
> > The test case resets the pcap file and then injects the packet. And
> > this packet gets lost sometimes if the pcap files are not reset yet.
> > To fix this issue the test now ensures that ovs-vswitchd resets the
> > pcap file before injecting the packet. The test also now adds
> > some waits to make sure flows related to tunnels are programmed
> > when the chassisresident port moves from one gw chassis to other.
> >
> > Signed-off-by: Numan Siddique <numans at ovn.org>
> > ---
> > tests/ovn-macros.at | 18 ++++++++++++++++++
> > tests/ovn.at | 31 +++++++++++++++++++------------
> > 2 files changed, 37 insertions(+), 12 deletions(-)
> >
> > diff --git a/tests/ovn-macros.at b/tests/ovn-macros.at
> > index 25f3dbe348..9a05359ba5 100644
> > --- a/tests/ovn-macros.at
> > +++ b/tests/ovn-macros.at
> > @@ -487,6 +487,24 @@ wait_for_ports_up() {
> > done
> > fi
> > }
> > +
> > +# reset_pcap_file iface pcap_file
> > +# Resets the pcap file associates with OVS interface. should be used
> > +# with dummy datapath.
> > +reset_iface_pcap_file() {
> > + local iface=$1
> > + local pcap_file=$2
> > + check rm -f dummy-*.pcap
> > + check ovs-vsctl -- set Interface $iface options:tx_pcap=dummy-tx.pcap \
> > +options:rxq_pcap=dummy-rx.pcap
> > + OVS_WAIT_WHILE([test 24 = $(wc -c dummy-tx.pcap | cut -d " " -f1)])
> > + check rm -f ${pcap_file}*.pcap
> > + check ovs-vsctl -- set Interface $iface options:tx_pcap=${pcap_file}-tx.pcap \
> > +options:rxq_pcap=${pcap_file}-rx.pcap
> > +
> > + OVS_WAIT_WHILE([test 24 = $(wc -c ${pcap_file}-tx.pcap | cut -d " " -f1)])
> > +}
> > +
> > OVS_END_SHELL_HELPERS
> >
> > m4_define([OVN_POPULATE_ARP], [AT_CHECK(ovn_populate_arp__, [0], [ignore])])
> > diff --git a/tests/ovn.at b/tests/ovn.at
> > index 4c3d76d573..71cc7118ba 100644
> > --- a/tests/ovn.at
> > +++ b/tests/ovn.at
> > @@ -10096,15 +10096,12 @@ AT_CHECK([ovn-nbctl --wait=sb sync], [0], [ignore])
> > ovn-sbctl dump-flows > sbflows
> > AT_CAPTURE_FILE([sbflows])
> >
> > -reset_pcap_file() {
> > - local iface=$1
> > - local pcap_file=$2
> > - check ovs-vsctl -- set Interface $iface options:tx_pcap=dummy-tx.pcap \
> > -options:rxq_pcap=dummy-rx.pcap
> > - rm -f ${pcap_file}*.pcap
> > - check ovs-vsctl -- set Interface $iface options:tx_pcap=${pcap_file}-tx.pcap \
> > -options:rxq_pcap=${pcap_file}-rx.pcap
> > -}
> > +hv1_gw1_ofport=$(as hv1 ovs-vsctl --bare --columns ofport find Interface name=ovn-gw1-0)
> > +hv1_gw2_ofport=$(as hv1 ovs-vsctl --bare --columns ofport find Interface name=ovn-gw2-0)
> > +
> > +OVS_WAIT_UNTIL([
> > + test 1 = $(as hv1 ovs-ofctl dump-flows br-int table=37 | grep -c "active_backup,ofport,members:$hv1_gw1_ofport,$hv1_gw2_ofport")
> > +])
> >
> > test_ip_packet()
> > {
> > @@ -10150,13 +10147,13 @@ test_ip_packet()
> > echo $expected > ext1-vif1.expected
> > exp_gw_ip_garp=ffffffffffff00000201020308060001080006040001000002010203ac100101000000000000ac100101
> > echo $exp_gw_ip_garp >> ext1-vif1.expected
> > - as $active_gw reset_pcap_file br-phys_n1 $active_gw/br-phys_n1
> > + as $active_gw reset_iface_pcap_file br-phys_n1 $active_gw/br-phys_n1
> >
> > if test $backup_vswitchd_dead != 1; then
> > # Reset the file only if vswitchd in backup gw is alive
> > - as $backup_gw reset_pcap_file br-phys_n1 $backup_gw/br-phys_n1
> > + as $backup_gw reset_iface_pcap_file br-phys_n1 $backup_gw/br-phys_n1
> > fi
> > - as ext1 reset_pcap_file ext1-vif1 ext1/vif1
> > + as ext1 reset_iface_pcap_file ext1-vif1 ext1/vif1
> >
> > # Resend packet from foo1 to outside1
> > check as hv1 ovs-appctl netdev-dummy/receive hv1-vif1 $packet
> > @@ -10208,6 +10205,10 @@ AT_CHECK(
> > <1>
> > ])
> >
> > +OVS_WAIT_UNTIL([
> > + test 1 = $(as hv1 ovs-ofctl dump-flows br-int table=37 | grep -c "active_backup,ofport,members:$hv1_gw2_ofport,$hv1_gw1_ofport")
> > +])
> > +
> > test_ip_packet gw2 gw1 0
> >
> > # Get the claim count of both gw1 and gw2.
> > @@ -10228,6 +10229,12 @@ OVS_WAIT_UNTIL([test $gw1_claim_ct = `cat gw1/ovn-controller.log \
> > AT_CHECK([test $gw2_claim_ct = `cat gw2/ovn-controller.log | \
> > grep -c "cr-alice: Claiming"`])
> >
> > +OVS_WAIT_UNTIL([
> > + bfd_status=$(as hv1 ovs-vsctl get interface ovn-gw2-0 bfd_status:state)
> > + echo "bfd status = $bfd_status"
> > + test "$bfd_status" = "down"
> > +])
> > +
> > test_ip_packet gw1 gw2 1
> >
> > as gw2
> >
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>
More information about the dev
mailing list