On Tue, Apr 20, 2021 at 1:55 PM Mark Michelson <[email protected]> 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 <[email protected]> Thanks. I applied this patch to the main branch. Numan > > On 4/17/21 4:39 PM, [email protected] wrote: > > From: Numan Siddique <[email protected]> > > > > 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 <[email protected]> > > --- > > 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 > [email protected] > https://mail.openvswitch.org/mailman/listinfo/ovs-dev > _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
