On Tue, Dec 10, 2024 at 3:22 PM Xavier Simonart <xsimo...@redhat.com> wrote:

> The tests was sometimes (rarely) failing as looking for flows with e.g.
> cookie c5d057f
> but also catching flows with cookie bec5d057.
>
> Signed-off-by: Xavier Simonart <xsimo...@redhat.com>
> ---
>

Hi Xavier,

thank you for the patch, I have one question down below.

 tests/ovn.at | 77 +++++++++++++++++++++++-----------------------------
>  1 file changed, 34 insertions(+), 43 deletions(-)
>
> diff --git a/tests/ovn.at b/tests/ovn.at
> index e2fbab247..30617ea9c 100644
> --- a/tests/ovn.at
> +++ b/tests/ovn.at
> @@ -35404,6 +35404,22 @@ m4_define([MULTIPLE_OVS_INT],
>             sed -e 's/n_bytes=[[0-9]]*, //g'
>     }
>
> +   WAIT_UNTIL_FLOWS()
> +   {
> +       cookie=${1}
> +       interface=${2}
> +       OVS_WAIT_UNTIL([
> +           ofport=$(ovs-vsctl --bare --columns ofport find Interface
> name=$interface)
> +           ovs-ofctl dump-flows br-int | grep "cookie=0x$cookie" | grep
> "actions=output:$ofport"
> +       ])
> +   }
> +
> +   get_nb_flows()
> +   {
> +       cookie=${1}
> +       ovs-ofctl dump-flows br-int | grep "cookie=0x$cookie" | wc -l
> +   }
> +
>     check ovn-nbctl ls-add ls
>     check ovn-nbctl lsp-add ls lp
>     if test X$1 != X; then
> @@ -35429,11 +35445,9 @@ m4_define([MULTIPLE_OVS_INT],
>     echo ======================================================
>     COOKIE=$(ovn-sbctl find port_binding logical_port=lp|grep uuid|cut -d:
> -f2| cut -c1-8 | sed 's/^\s*0\{0,8\}//')
>

Since this changes most of the test, the cookie extraction could be
replaced with the following:

"ovn-debug uuid-to-cookie $(fetch_column port_binding _uuid
logical_port=lp)"

WDYT?



>
> -   OVS_WAIT_UNTIL([
> -       ofport=$(ovs-vsctl --bare --columns ofport find Interface
> name=lpold)
> -       ovs-ofctl dump-flows br-int | grep $COOKIE | grep
> "actions=output:$ofport"
> -   ])
> -   nb_flows=`ovs-ofctl dump-flows br-int | grep $COOKIE | wc -l`
> +   WAIT_UNTIL_FLOWS $COOKIE lpold
> +
> +   nb_flows=$(get_nb_flows $COOKIE )
>     echo $nb_flows "flows after iface-id set for old interface"
>
>     echo ======================================================
> @@ -35442,11 +35456,8 @@ m4_define([MULTIPLE_OVS_INT],
>     # Set external_ids:iface-id within same transaction as adding the port.
>     # This will generally cause ovn-controller to get initially notified
> of ovs interface changes with ofport == 0.
>     check ovs-vsctl add-port br-int lpnew -- set interface lpnew
> type=internal -- set interface lpnew external_ids:iface-id=lp
> -   OVS_WAIT_UNTIL([
> -       ofport=$(ovs-vsctl --bare --columns ofport find Interface
> name=lpnew)
> -       ovs-ofctl dump-flows br-int | grep $COOKIE | grep
> "actions=output:$ofport"
> -   ])
> -   check test "$nb_flows" = $(ovs-ofctl dump-flows br-int | grep $COOKIE
> | wc -l)
> +   WAIT_UNTIL_FLOWS $COOKIE lpnew
> +   check test "$nb_flows" = $(get_nb_flows $COOKIE)
>     flows_lpnew=$(get_flows $COOKIE)
>
>     echo ======================================================
> @@ -35455,7 +35466,7 @@ m4_define([MULTIPLE_OVS_INT],
>     check ovs-vsctl del-port br-int lpold
>     # We do not expect changes, so let's wait for controller to get time
> to process any update
>     check ovn-nbctl --wait=hv sync
> -   check test "$nb_flows" = $(ovs-ofctl dump-flows br-int | grep $COOKIE
> | wc -l)
> +   check test "$nb_flows" = $(get_nb_flows $COOKIE)
>     flows_after_deletion=$(get_flows $COOKIE)
>     check test "$flows_lpnew" = "$flows_after_deletion"
>
> @@ -35466,23 +35477,15 @@ m4_define([MULTIPLE_OVS_INT],
>     # This will generally cause ovn-controller to get notified of ovs
> interface changes with a proper ofport.
>     check ovs-vsctl add-port br-int lptemp -- set Interface lptemp
> type=internal
>     check ovs-vsctl set Interface lptemp external_ids:iface-id=lp
> -   OVS_WAIT_UNTIL([
> -       ofport=$(ovs-vsctl --bare --columns ofport find Interface
> name=lptemp)
> -       ovs-ofctl dump-flows br-int | grep $COOKIE | grep
> "actions=output:$ofport"
> -   ])
> -   check test "$nb_flows" = $(ovs-ofctl dump-flows br-int | grep $COOKIE
> | wc -l)
> +   WAIT_UNTIL_FLOWS $COOKIE lptemp
> +   check test "$nb_flows" = $(get_nb_flows $COOKIE)
>
>     echo ======================================================
>     echo ======= Flows after lptemp interface is deleted ======
>     echo ======================================================
>     check ovs-vsctl del-port br-int lptemp
> -   OVS_WAIT_UNTIL([
> -       ofport=$(ovs-vsctl --bare --columns ofport find Interface
> name=lpnew)
> -       echo $ofport
> -       ovs-ofctl dump-flows br-int  | grep $COOKIE
> -       ovs-ofctl dump-flows br-int | grep $COOKIE | grep
> "actions=output:$ofport"
> -   ])
> -   check test "$nb_flows" = $(ovs-ofctl dump-flows br-int | grep $COOKIE
> | wc -l)
> +   WAIT_UNTIL_FLOWS $COOKIE lpnew
> +   check test "$nb_flows" = $(get_nb_flows $COOKIE)
>     flows_after_deletion=$(get_flows $COOKIE)
>     check test "$flows_lpnew" = "$flows_after_deletion"
>
> @@ -35491,7 +35494,7 @@ m4_define([MULTIPLE_OVS_INT],
>     echo ======================================================
>     check ovs-vsctl del-port br-int lpnew
>     OVS_WAIT_UNTIL([
> -       nb_flows=`ovs-ofctl dump-flows br-int | grep $COOKIE | wc -l`
> +       nb_flows=`get_nb_flows $COOKIE`
>         test "${nb_flows}" = $nb_flows_ref
>     ])
>
> @@ -35504,21 +35507,15 @@ m4_define([MULTIPLE_OVS_INT],
>     check ovs-vsctl set interface lpnew external_ids:iface-id=lp
>
>     # Wait for lpnew  flows to be installed
> -   OVS_WAIT_UNTIL([
> -       ofport=$(ovs-vsctl --bare --columns ofport find Interface
> name=lpnew)
> -       ovs-ofctl dump-flows br-int | grep $COOKIE | grep
> "actions=output:$ofport"
> -   ])
> +   WAIT_UNTIL_FLOWS $COOKIE lpnew
>     flows_lpnew=$(get_flows $COOKIE)
> -   nb_flows=`ovs-ofctl dump-flows br-int | grep $COOKIE | wc -l`
> +   nb_flows=`get_nb_flows $COOKIE`
>
>     check ovs-vsctl add-port br-int lptemp -- set Interface lptemp
> type=internal
>     check ovs-vsctl set Interface lptemp external_ids:iface-id=lp
>
>     # Wait for lptemp  flows to be installed
> -   OVS_WAIT_UNTIL([
> -       ofport=$(ovs-vsctl --bare --columns ofport find Interface
> name=lptemp)
> -       ovs-ofctl dump-flows br-int | grep $COOKIE | grep
> "actions=output:$ofport"
> -   ])
> +   WAIT_UNTIL_FLOWS $COOKIE lptemp
>
>     # Delete both lpold and lptemp to go to a stable situation
>     check ovs-vsctl del-port br-int lptemp
> @@ -35529,21 +35526,15 @@ m4_define([MULTIPLE_OVS_INT],
>     ])
>
>     # Wait for correct/lpnew flows to be installed
> -   OVS_WAIT_UNTIL([
> -       ofport=$(ovs-vsctl --bare --columns ofport find Interface
> name=lpnew)
> -       ovs-ofctl dump-flows br-int | grep $COOKIE | grep
> "actions=output:$ofport"
> -   ])
> -   check test "$nb_flows" = $(ovs-ofctl dump-flows br-int | grep $COOKIE
> | wc -l)
> +   WAIT_UNTIL_FLOWS $COOKIE lpnew
> +   check test "$nb_flows" = $(get_nb_flows $COOKIE)
>     flows_after_deletion=$(get_flows $COOKIE)
>     check test "$flows_lpnew" = "$flows_after_deletion"
>
>     # Check that recompute still works
>     check ovn-appctl -t ovn-controller recompute
> -   OVS_WAIT_UNTIL([
> -       ofport=$(ovs-vsctl --bare --columns ofport find Interface
> name=lpnew)
> -       ovs-ofctl dump-flows br-int | grep $COOKIE | grep
> "actions=output:$ofport"
> -   ])
> -   check test "$nb_flows" = $(ovs-ofctl dump-flows br-int | grep $COOKIE
> | wc -l)
> +   WAIT_UNTIL_FLOWS $COOKIE lpnew
> +   check test "$nb_flows" = $(get_nb_flows $COOKIE)
>     flows_after_deletion=$(get_flows $COOKIE)
>     check test "$flows_lpnew" = "$flows_after_deletion"
>
> --
> 2.47.1
>
> _______________________________________________
> dev mailing list
> d...@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>
>
Thanks,
Ales
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to