On Tue, Mar 26, 2024 at 12:57 PM Xavier Simonart <xsimo...@redhat.com> wrote:
> The macro CHECK_FLOWS_AFTER_RECOMPUTE dumps the Openflows, then > recomputes, then dumps again the Openflows, and finally compares > both sets of flows. The test fails if flows are different. > As of now, the macro cannot be used in all tests: many tests would fail > as I+P does not properly remove flows when the last logical port of > a datapath is deleted. > > Signed-off-by: Xavier Simonart <xsimo...@redhat.com> > --- > tests/ovn-macros.at | 44 ++++++++++++++++++++++++++++++++++++++++++++ > 1 file changed, 44 insertions(+) > > diff --git a/tests/ovn-macros.at b/tests/ovn-macros.at > index ed93764d3..11377f616 100644 > --- a/tests/ovn-macros.at > +++ b/tests/ovn-macros.at > @@ -10,6 +10,50 @@ m4_define([OVN_CLEANUP_VSWITCH],[ > OVS_APP_EXIT_AND_WAIT([ovsdb-server]) > ]) > > +# DUMP_FLOWS(sbox, output_file) > +# Dump openflows to output_file for sbox > +m4_define([DUMP_FLOWS], [ > + sbox=$1 > + output_file=$2 > + as $sbox > + ovs-ofctl dump-flows br-int | > + sed 's/cookie=0x[[^,]]*/cookie=xx/g' | > + sed 's/duration=[[^,]]*/duration=xx/g' | > + sed 's/idle_age=[[^,]]*/idle_age=xx/g' | > + sed 's/, hard_age=[[^,]]*//g' | > + sed 's/n_bytes=[[^,]]*/n_bytes=xx/g' | > + sed 's/n_packets=[[^,]]*/n_packets=xx/g' | > + sed 's/conjunction([[^,]]*/conjunction(xx/g' | > + sort > $output_file > +]) > + > +m4_define([CHECK_FLOWS_AFTER_RECOMPUTE], [ > + hv=$1 > + sbox=$2 > + # Make sure I+P has finalized his job before getting flows and > comparing them after recompte. > + # Some tests have northd and ovn-nb ovsdb stopped, so avoid ovn-nbctl > for those. > + if [[ -e ovn-nb/ovn-nb.sock ]] && [[ -e northd/ovn-northd.pid ]]; then > + # Do wait twice to handle some potential race conditions > + check ovn-nbctl --wait=hv sync > + check ovn-nbctl --wait=hv sync > + fi > + > + as $sbox > + if test "$hv" != "vtep"; then > + # Get flows before and after recompute > + DUMP_FLOWS([$sbox], [flows-$hv-1]) > + > + check ovn-appctl -t ovn-controller recompute > + # The recompute might cause some sb changes. Let controller catch > up. > + if [[ -e ovn-nb/ovn-nb.sock ]] && [[ -e northd/ovn-northd.pid ]]; > then > + check ovn-nbctl --wait=hv sync > + fi > + DUMP_FLOWS([$sbox], [flows-$hv-2]) > + diff flows-$hv-1 flows-$hv-2 > flow-diff > + AT_CHECK([test $(diff flows-$hv-1 flows-$hv-2 | wc -l) == 0]) > + fi > +]) > + > # OVN_CLEANUP_CONTROLLER(sbox) > # > # Gracefully terminate ovn-controller in the specified > -- > 2.31.1 > > _______________________________________________ > dev mailing list > d...@openvswitch.org > https://mail.openvswitch.org/mailman/listinfo/ovs-dev > > Looks good to me, thanks. Acked-by: Ales Musil <amu...@redhat.com> -- Ales Musil Senior Software Engineer - OVN Core Red Hat EMEA <https://www.redhat.com> amu...@redhat.com <https://red.ht/sig> _______________________________________________ dev mailing list d...@openvswitch.org https://mail.openvswitch.org/mailman/listinfo/ovs-dev