On Tue, Jan 9, 2024 at 2:29 PM Mohammad Heib <mh...@redhat.com> wrote:

> add unit test that check validate that sync command
> sync ISB properly
>
> Signed-off-by: Mohammad Heib <mh...@redhat.com>
> ---
>

Hi Mohammad,

I have a few comments down below.


>  tests/ovn-ic.at | 47 +++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 47 insertions(+)
>
> diff --git a/tests/ovn-ic.at b/tests/ovn-ic.at
> index d4c436f84..f55ffa6cd 100644
> --- a/tests/ovn-ic.at
> +++ b/tests/ovn-ic.at
> @@ -1274,3 +1274,50 @@ OVN_CLEANUP_IC([az1], [az2])
>
>  AT_CLEANUP
>  ])
> +
> +AT_SETUP([ovn-ic -- sync ISB status to INB])
> +ovn_init_ic_db
> +net_add n1
> +
> +ovn_start az1
> +sim_add gw-az1
> +as gw-az1
> +
> +check ovs-vsctl add-br br-phys
> +ovn_az_attach az1 n1 br-phys 192.168.1.1
> +check ovs-vsctl set open . external-ids:ovn-is-interconn=true
> +as az1
> +
> +# pause ovn-ic instance
> +check ovn-appctl -t ic/ovn-ic pause
> +
> +# run sync command in the background this commands
> +# supposed to stuck since ovn-ic is paused.
> +$(ovn-ic-nbctl --wait=sb sync &)
>

The extra $() around shouldn't be needed.


> +
> +for i in {1..5}; do
> +    set -- $(ovn-ic-nbctl get ic_nb_global . nb_ic_cfg sb_ic_cfg)
> +    AS_VAR_SET([ic_nb_cfg], [$1])
> +    AS_VAR_SET([ic_sb_cfg], [$2])
> +    if test $ic_nb_cfg -gt $ic_sb_cfg; then
> +        sleep 1
> +    else
> +        break
> +    fi
> +done
>

Why not to use OVS_WAIT_UNTIL?


> +
> +# if ic_nb_cfg equal to ic_sb_cfg that mean both zero
> +# or both 1 which is a not correct and the test must fail.
> +AT_FAIL_IF([test $ic_nb_cfg == $ic_sb_cfg])
>

AT_CHECK would be better suited for this.


> +
> +# resume ovn-ic instance
> +check ovn-appctl -t ic/ovn-ic resume
> +set -- $(ovn-ic-nbctl get ic_nb_global . nb_ic_cfg sb_ic_cfg)
>

We should wait after "resume" for the values to settle down.


> +AS_VAR_SET([ic_nb_cfg], [$1])
> +AS_VAR_SET([ic_sb_cfg], [$2])
> +AT_FAIL_IF([test $ic_nb_cfg != 1])
> +AT_FAIL_IF([test $ic_nb_cfg != 1])
>

Same as above, AT_CHECK would be better.


> +
> +OVN_CLEANUP_IC([az1])
> +AT_CLEANUP
> +])
> --
> 2.34.3
>
> _______________________________________________
> dev mailing list
> d...@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>
>
The test seems to be overly complicated for what it tries to achieve. I
would suggest the following diff:

diff --git a/tests/ovn-ic.at b/tests/ovn-ic.at
index f55ffa6cd..32df3be2c 100644
--- a/tests/ovn-ic.at
+++ b/tests/ovn-ic.at
@@ -1293,30 +1293,25 @@ check ovn-appctl -t ic/ovn-ic pause

 # run sync command in the background this commands
 # supposed to stuck since ovn-ic is paused.
-$(ovn-ic-nbctl --wait=sb sync &)
-
-for i in {1..5}; do
-    set -- $(ovn-ic-nbctl get ic_nb_global . nb_ic_cfg sb_ic_cfg)
-    AS_VAR_SET([ic_nb_cfg], [$1])
-    AS_VAR_SET([ic_sb_cfg], [$2])
-    if test $ic_nb_cfg -gt $ic_sb_cfg; then
-        sleep 1
-    else
-        break
-    fi
-done
+ovn-ic-nbctl --wait=sb sync &

-# if ic_nb_cfg equal to ic_sb_cfg that mean both zero
-# or both 1 which is a not correct and the test must fail.
-AT_FAIL_IF([test $ic_nb_cfg == $ic_sb_cfg])
+OVS_WAIT_UNTIL([test $(ovn-ic-nbctl get ic_nb_global . nb_ic_cfg) -gt
$(ovn-ic-nbctl get ic_nb_global . sb_ic_cfg)])
+AT_CHECK([ovn-ic-nbctl get ic_nb_global . nb_ic_cfg], [0], [dnl
+1
+])
+AT_CHECK([ovn-ic-nbctl get ic_nb_global . sb_ic_cfg], [0], [dnl
+0
+])

 # resume ovn-ic instance
 check ovn-appctl -t ic/ovn-ic resume
-set -- $(ovn-ic-nbctl get ic_nb_global . nb_ic_cfg sb_ic_cfg)
-AS_VAR_SET([ic_nb_cfg], [$1])
-AS_VAR_SET([ic_sb_cfg], [$2])
-AT_FAIL_IF([test $ic_nb_cfg != 1])
-AT_FAIL_IF([test $ic_nb_cfg != 1])
+OVS_WAIT_UNTIL([test $(ovn-ic-nbctl get ic_nb_global . nb_ic_cfg) -eq
$(ovn-ic-nbctl get ic_nb_global . sb_ic_cfg)])
+AT_CHECK([ovn-ic-nbctl get ic_nb_global . nb_ic_cfg], [0], [dnl
+1
+])
+AT_CHECK([ovn-ic-nbctl get ic_nb_global . sb_ic_cfg], [0], [dnl
+1
+])

 OVN_CLEANUP_IC([az1])
 AT_CLEANUP


Thanks,
Ales

-- 

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

Reply via email to