On 1/17/25 3:10 PM, Ales Musil wrote:
> On Thu, Jan 16, 2025 at 5:58 PM Xavier Simonart <[email protected]> wrote:
>
>> The tests was sometimes (rarely) failing as:
>> - Looking for flows with e.g. cookie c5d057f but hitting cookie bec5d057.
>> - Looking for flows with e.g. cookie 1000000 but hitting
>> set_field:0x1000000.
>>
>> Signed-off-by: Xavier Simonart <[email protected]>
>> ---
>> v2: Use ovn-debug to get the cookie (as per Ales' feedback).
>> ---
>> tests/ovn.at | 79 +++++++++++++++++++++++-----------------------------
>> 1 file changed, 35 insertions(+), 44 deletions(-)
>>
>> diff --git a/tests/ovn.at b/tests/ovn.at
>> index aa212f774..bf68991d3 100644
>> --- a/tests/ovn.at
>> +++ b/tests/ovn.at
>> @@ -35415,6 +35415,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=$cookie" | grep
>> "actions=output:$ofport"
>> + ])
>> + }
>> +
>> + get_nb_flows()
>> + {
>> + cookie=${1}
>> + ovs-ofctl dump-flows br-int | grep "cookie=$cookie" | wc -l
Nit: grep -c
>> + }
>> +
>> check ovn-nbctl ls-add ls
>> check ovn-nbctl lsp-add ls lp
>> if test X$1 != X; then
>> @@ -35438,13 +35454,11 @@ m4_define([MULTIPLE_OVS_INT],
>> echo ======================================================
>> echo === Flows after iface-id set for the old interface ===
>> echo ======================================================
>> - COOKIE=$(ovn-sbctl find port_binding logical_port=lp|grep uuid|cut -d:
>> -f2| cut -c1-8 | sed 's/^\s*0\{0,8\}//')
>> + COOKIE=$(ovn-debug uuid-to-cookie $(fetch_column port_binding _uuid
>> logical_port=lp))
>>
>> - 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 ======================================================
>> @@ -35453,11 +35467,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 ======================================================
>> @@ -35466,7 +35477,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"
>>
>> @@ -35477,23 +35488,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"
>>
>> @@ -35502,7 +35505,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
>> ])
>>
>> @@ -35515,21 +35518,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
>> @@ -35540,21 +35537,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
>>
>>
> Looks good to me, thanks.
>
> Acked-by: Ales Musil <[email protected]>
>
Thanks, Xavier and Ales!
I fixed up the small nit I had above and pushed this to main, 24.09. I
didn't backport it to 24.03 because we miss the support for
"uuid-to-cookie" there. I'm guessing that's probably fine.
Regards,
Dumitru
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev