On Thu, Jul 15, 2021 at 9:17 AM Ilya Maximets <i.maxim...@ovn.org> wrote:
>
> On 6/29/21 9:57 PM, Ilya Maximets wrote:
> >>> Regarding the current patch, I think it's better to add a test case to
> >>> cover the scenario and confirm that existing connections didn't
reset. With
> >>> that:
> >>> Acked-by: Han Zhou <hz...@ovn.org>
> >
> > I'll work on a unit test for this.
>
> Hi.  Here is a unit test that I came up with:
>
> diff --git a/tests/ovsdb-idl.at b/tests/ovsdb-idl.at
> index 62181dd4d..e32f9ec89 100644
> --- a/tests/ovsdb-idl.at
> +++ b/tests/ovsdb-idl.at
> @@ -2282,3 +2282,27 @@ OVSDB_CHECK_CLUSTER_IDL_C([simple idl,
monitor_cond_since, cluster disconnect],
>  008: table simple: i=1 r=2 b=true s= u=<0> ia=[] ra=[] ba=[] sa=[] ua=[]
uuid=<2>
>  009: done
>  ]])
> +
> +dnl This test checks that IDL keeps the existing connection to the
server if
> +dnl it's still on a list of remotes after update.
> +OVSDB_CHECK_IDL_C([simple idl, initially empty, set remotes],
> +  [],
> +  [['set-remote unix:socket' \
> +    '+set-remote unix:bad_socket,unix:socket' \
> +    '+set-remote unix:bad_socket' \
> +    '+set-remote unix:socket' \
> +    'set-remote unix:bad_socket,unix:socket' \
> +    '+set-remote unix:socket' \
> +    '+reconnect']],
> +  [[000: empty
> +001: new remotes: unix:socket, is connected: true
> +002: new remotes: unix:bad_socket,unix:socket, is connected: true
> +003: new remotes: unix:bad_socket, is connected: false
> +004: new remotes: unix:socket, is connected: false
> +005: empty
> +006: new remotes: unix:bad_socket,unix:socket, is connected: true
> +007: new remotes: unix:socket, is connected: true
> +008: reconnect
> +009: empty
> +010: done
> +]])
> diff --git a/tests/test-ovsdb.c b/tests/test-ovsdb.c
> index a886f971e..93329cd4c 100644
> --- a/tests/test-ovsdb.c
> +++ b/tests/test-ovsdb.c
> @@ -2621,6 +2621,7 @@ do_idl(struct ovs_cmdl_context *ctx)
>      setvbuf(stdout, NULL, _IONBF, 0);
>
>      symtab = ovsdb_symbol_table_create();
> +    const char remote_s[] = "set-remote ";
>      const char cond_s[] = "condition ";
>      if (ctx->argc > 2 && strstr(ctx->argv[2], cond_s)) {
>          update_conditions(idl, ctx->argv[2] + strlen(cond_s));
> @@ -2664,6 +2665,11 @@ do_idl(struct ovs_cmdl_context *ctx)
>          if (!strcmp(arg, "reconnect")) {
>              print_and_log("%03d: reconnect", step++);
>              ovsdb_idl_force_reconnect(idl);
> +        }  else if (!strncmp(arg, remote_s, strlen(remote_s))) {
> +            ovsdb_idl_set_remote(idl, arg + strlen(remote_s), true);
> +            print_and_log("%03d: new remotes: %s, is connected: %s",
step++,
> +                          arg + strlen(remote_s),
> +                          ovsdb_idl_is_connected(idl) ? "true" :
"false");
>          }  else if (!strncmp(arg, cond_s, strlen(cond_s))) {
>              update_conditions(idl, arg + strlen(cond_s));
>              print_and_log("%03d: change conditions", step++);
> ---
>
> Dumitru, Han, if it looks good to you, I can squash it in before
> applying the patch.   What do you think?

Thanks Ilya. LGTM.

>
> Best regards, Ilya Maximets.
_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to