On Mon, Aug 24, 2026 at 12:41 PM Xavier Simonart via dev < [email protected]> wrote:
> The new macro CHECK_UNEXPECTED_DB_CHANGES, called while cleaning up, > checks whether there are some db changes (while executing find/read/wc > commands). > While most tests are idle right before cleaning up (and hence do not > show any db changes), some tests do not wait for stability before > closing, and hence would show a few (usually 2 or 4) db changes. > Instead of fixing those tests, when a db change is detected, the macro > sleeps for one more second and recounts the number of changes, comparing > this number to a relatively (arbitrarily chosen) large number. This way, > there is no additional sleep in most tests. > Issues such as the one fixed by [1] showed thousands of lines changes. > > [1] ovn-ic: Do not try to advertise lla next_hops. > > Signed-off-by: Xavier Simonart <[email protected]> > --- > tests/ovn-macros.at | 36 ++++++++++++++++++++++++++++++++++++ > 1 file changed, 36 insertions(+) > > diff --git a/tests/ovn-macros.at b/tests/ovn-macros.at > index 2a1faf677..7ae147dee 100644 > --- a/tests/ovn-macros.at > +++ b/tests/ovn-macros.at > @@ -189,6 +189,39 @@ m4_define([OVN_WAIT_REMOTE_OUTPUT_FLOWS], > m4_define([OVN_WAIT_REMOTE_INPUT_FLOWS], > [ovn_wait_remote_input_flows "$1" "$2" "__file__:__line__"]) > > +# CHECK_UNEXPECTED_DB_CHANGES() > +# Check whether there is a significant number of changes > +# in any db used by the test. > +m4_define([CHECK_UNEXPECTED_DB_CHANGES],[ > + # List dbs and number of lines in those dbs. > + find "$ovs_base" -name "*.db" | sort | while read db; do > + printf '%d %s\n' "$(wc -l < "$db")" "$db" > + done > db.txt > + > + # First pass: check if there is any db change. > + diff=0 > + while read before_count db; do > + after_count=$(wc -l < "$db") > + diff=$((after_count - before_count)) > + if [[ "$diff" -ne 0 ]]; then > + break > + fi > + done < db.txt > + > + # Second pass: if there is any db change, rerun check and ignore > small number of changes. > + if [[ "$diff" -ne 0 ]]; then > + sleep 1 > + while read before_count db; do > + after_count=$(wc -l < "$db") > + diff=$((after_count - before_count)) > + if [[ "$diff" -ge "50" ]]; then > + printf 'Got %d changes in %s\n' "$diff" "$db" > + AT_CHECK([test "$diff" -lt "50"]) > + fi > + done < db.txt > + fi > +]) > + > # OVN_CLEANUP_DBS > # > # Gracefully terminate NB, SB OVN daemons. > @@ -204,6 +237,7 @@ m4_define([OVN_CLEANUP_DBS],[ > # > # Gracefully terminate all central OVN daemons: NB, SB and ovn-northd. > m4_define([OVN_CLEANUP_NORTHD],[ > + CHECK_UNEXPECTED_DB_CHANGES > OVN_CLEANUP_DBS > > as northd > @@ -456,6 +490,7 @@ m4_define([OVN_CLEANUP_SBOX],[ > # Gracefully terminate all OVN daemons, including those in the > # specified sandbox instances. > m4_define([OVN_CLEANUP],[ > + CHECK_UNEXPECTED_DB_CHANGES > m4_foreach([sbox_and_error], [$@], [ > sbox=$(echo "sbox_and_error" |sed -n '1p') > error=$(echo "sbox_and_error" | grep '/') > @@ -519,6 +554,7 @@ m4_define([OVN_CLEANUP_AZ],[ > # Gracefully terminate all interconnection DBs, and daemons in the > # specified AZs, if any. > m4_define([OVN_CLEANUP_IC],[ > + CHECK_UNEXPECTED_DB_CHANGES > m4_foreach([az], [$@], [ > OVN_CLEANUP_AZ([az]) > ]) > -- > 2.47.1 > > _______________________________________________ > dev mailing list > [email protected] > https://mail.openvswitch.org/mailman/listinfo/ovs-dev > > Thank you Xavier, applied to main. Regards, Ales _______________________________________________ dev mailing list [email protected] https://mail.openvswitch.org/mailman/listinfo/ovs-dev
