On Mon, Oct 14, 2024 at 12:10 PM Xavier Simonart <[email protected]>
wrote:

> - Add comments explaining what the macros do, highlighting the differences
> between them.
> - Support "command" (e.g. cut) third argument for the macros were it was
> not yet supported.
> - Cleanup.
>
> Signed-off-by: Xavier Simonart <[email protected]>
> ---
>  tests/ovn-macros.at | 82 ++++++++++++++++++++-------------------------
>  1 file changed, 37 insertions(+), 45 deletions(-)
>
> diff --git a/tests/ovn-macros.at b/tests/ovn-macros.at
> index caa89ab47..35cfb2a1f 100644
> --- a/tests/ovn-macros.at
> +++ b/tests/ovn-macros.at
> @@ -23,76 +23,62 @@ m4_divert_text([PREPARE_TESTS],
>       diff -u $exp_text.sorted $rcv_text.sorted
>     }
>     ovn_check_packets__ () {
> -     if [[ -n "$4" ]]; then
> -       echo "$3: checking packets in $1 against $2: using $4"
> -     else
> -       echo "$3: checking packets in $1 against $2:"
> -     fi
>       rcv_pcap=$1
> -     rcv_text=`echo "$rcv_pcap.packets" | sed 's/\.pcap//'`
>       exp_text=$2
> +     cmd=${4-cat}
> +     echo "$3: checking packets in $1 against $2:"
> +     rcv_text=`echo "$rcv_pcap.packets" | sed 's/\.pcap//'`
>       exp_n=`wc -l < "$exp_text"`
>       OVS_WAIT_UNTIL(
> -       [$PYTHON "$ovs_srcdir/utilities/ovs-pcap.in" $rcv_pcap > $rcv_text
> -        rcv_n=`wc -l < "$rcv_text"`
> +       [$PYTHON "$ovs_srcdir/utilities/ovs-pcap.in" $rcv_pcap > rcv_tmp
> +        rcv_n=`wc -l < rcv_tmp`
>          echo "rcv_n=$rcv_n exp_n=$exp_n"
>          test $rcv_n -ge $exp_n],
>         [dump_diff__ "$rcv_pcap" "$exp_text"])
> -     if [[ -n "$4" ]]; then
> -       sort $exp_text | $4 > expout
> -       cat $rcv_text | $4 > rcv_tmp
> -       mv rcv_tmp $rcv_text
> -     else
> -       sort $exp_text > expout
> -     fi
> +     sort $exp_text | $cmd > expout
> +     cat rcv_tmp | $cmd > $rcv_text
>     }
>     ovn_check_packets_remove_broadcast__ () {
> -     echo "$3: checking packets in $1 against $2:"
>       rcv_pcap=$1
> -     rcv_text=`echo "$rcv_pcap.packets" | sed 's/\.pcap//'`
>       exp_text=$2
> +     cmd=${4-cat}
> +     echo "$3: checking packets in $1 against $2:"
> +     rcv_text=`echo "$rcv_pcap.packets" | sed 's/\.pcap//'`
>       exp_n=`wc -l < "$exp_text"`
>       OVS_WAIT_UNTIL(
> -       [$PYTHON "$ovs_srcdir/utilities/ovs-pcap.in" $rcv_pcap > $rcv_text
> -        sed -i '/ffffffffffff/d' $rcv_text
> -        rcv_n=`wc -l < "$rcv_text"`
> +       [$PYTHON "$ovs_srcdir/utilities/ovs-pcap.in" $rcv_pcap > rcv_tmp
> +        sed -i '/ffffffffffff/d' rcv_tmp
> +        rcv_n=`wc -l < rcv_tmp`
>          echo "rcv_n=$rcv_n exp_n=$exp_n"
>          test $rcv_n -ge $exp_n],
>         [dump_diff__ "$rcv_pcap" "$exp_text"])
> -     sort $exp_text > expout
> +     sort $exp_text | $cmd > expout
> +     cat rcv_tmp | $cmd > $rcv_text
>     }
>     ovn_wait_packets__ () {
> -     echo "$3: waiting for packets from $2 at $1:"
> -     if [[ -n "$4" ]]; then
> -       echo "$3: checking packets from $2 at $1: using $4"
> -     else
> -       echo "$3: checking packets from $2 at $1:"
> -     fi
>       rcv_pcap=$1
> -     rcv_text=`echo "$rcv_pcap.packets" | sed 's/\.pcap//'`
>       exp_text=$2
> -     if [[ -n "$4" ]]; then
> -       cmd=$4
> -     else
> -       cmd=cat
> -     fi
> +     cmd=${4-cat}
> +     echo "$3: waiting packets from $2 at $1:"
> +     rcv_text=`echo "$rcv_pcap.packets" | sed 's/\.pcap//'`
>       OVS_WAIT_UNTIL(
> -       [$PYTHON "$ovs_srcdir/utilities/ovs-pcap.in" $rcv_pcap > $rcv_text
> +       [$PYTHON "$ovs_srcdir/utilities/ovs-pcap.in" $rcv_pcap > rcv_tmp
>          sort $exp_text | $cmd > expout
> -        test x"$(sort $rcv_text | $cmd | comm -2 -3 expout -)" = "x"],
> +        cat rcv_tmp | $cmd > $rcv_text
> +        test x"$(sort $rcv_text | comm -2 -3 expout -)" = "x"],
>         [dump_diff__ "$rcv_pcap" "$exp_text"])
> -     cat $rcv_text | $cmd > rcv_tmp
> -     mv rcv_tmp $rcv_text
>     }
> +
>     ovn_wait_packets_uniq__ () {
> -     echo "$3: waiting for packets from $2 at $1:"
>       rcv_pcap=$1
> -     rcv_text=`echo "$rcv_pcap.packets" | sed 's/\.pcap//'`
>       exp_text=$2
> +     cmd=${4-cat}
> +     echo "$3: waiting for packets from $2 at $1:"
> +     rcv_text=`echo "$rcv_pcap.packets" | sed 's/\.pcap//'`
>       OVS_WAIT_UNTIL(
>         [$PYTHON "$ovs_srcdir/utilities/ovs-pcap.in" $rcv_pcap > $rcv_text
> -        sort $exp_text > expout
> -        test x"$(sort $rcv_text | uniq | comm -3 expout -)" = "x"],
> +        sort $exp_text | $cmd > expout
> +        test x"$(sort $rcv_text | $cmd | uniq | comm -3 expout -)" = "x"],
>         [dump_diff__ "$rcv_pcap" "$exp_text"])
>     }
>
> @@ -159,22 +145,28 @@ m4_divert_text([PREPARE_TESTS],
>     }
>  ])
>
> +# Wait to receive all packets in $2.
> +# Fails if any additional packet, or any duplicate packets is received,
>  m4_define([OVN_CHECK_PACKETS],
>    [AT_CHECK([$PYTHON "$ovs_srcdir/utilities/ovs-pcap.in" $1 ], [0],
> [ignore])
>     ovn_check_packets__ "$1" "$2" "__file__:__line__" $3
>     AT_CHECK([sort $rcv_text], [0], [expout], [ignore], [dump_diff__ "$1"
> "$2"])])
>
> +# Wait to receive all packets in $2, potentially receiving extra
> broadcast packets.
> +# Fails if any (non bcast) additional packet, or any duplicate packets is
> received.
>  m4_define([OVN_CHECK_PACKETS_REMOVE_BROADCAST],
> -  [ovn_check_packets_remove_broadcast__ "$1" "$2" "__file__:__line__"
> +  [ovn_check_packets_remove_broadcast__ "$1" "$2" "__file__:__line__" "$3"
>     AT_CHECK([sort $rcv_text], [0], [expout], [ignore], [dump_diff__ "$1"
> "$2"])])
>
> +# Wait to receive all packets from $2.
> +# Any additional and duplicate packets are accepted.
>  m4_define([OVN_CHECK_PACKETS_CONTAIN],
>    [ovn_wait_packets__ "$1" "$2" "__file__:__line__" $3])
>
> -# OVN_CHECK_PACKETS_UNIQ succeeds if some expected packets are duplicated.
> -# It fails if unexpected packets are received.
> +# Wait to receive all packets from $2.
> +# Duplicate packets are accepted, but the macro fails if unexpected
> packets are received.
>  m4_define([OVN_CHECK_PACKETS_UNIQ],
> -  [ovn_wait_packets_uniq__ "$1" "$2" "__file__:__line__"])
> +  [ovn_wait_packets_uniq__ "$1" "$2" "__file__:__line__" $3])
>
>  m4_define([OVN_WAIT_PATCH_PORT_FLOWS],
>    [ovn_wait_patch_port_flows "$1" "$2" "__file__:__line__"])
> --
> 2.31.1
>
>
Looks good to me, thanks.

Acked-by: Ales Musil <[email protected]>

-- 

Ales Musil

Senior Software Engineer - OVN Core

Red Hat EMEA <https://www.redhat.com>

[email protected]
<https://red.ht/sig>
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to