On 08/31/22 16:39, Eric Blake wrote:
> Add test coverage for the sequences fixed in the previous patch, where
> changing the export name should clean up anything remembered about a
> former export name.  The tests in other language bindings are
> logically equivalent.
> ---
>  python/t/230-opt-info.py           | 11 ++++++++---
>  ocaml/tests/test_230_opt_info.ml   | 11 ++++++++---
>  tests/opt-info.c                   | 24 ++++++++++++++++++------
>  golang/libnbd_230_opt_info_test.go | 23 +++++++++++++++++------
>  4 files changed, 51 insertions(+), 18 deletions(-)
> 
> diff --git a/python/t/230-opt-info.py b/python/t/230-opt-info.py
> index 8aa47ae..fc22a97 100644
> --- a/python/t/230-opt-info.py
> +++ b/python/t/230-opt-info.py
> @@ -45,17 +45,22 @@ assert h.get_size() == 0
>  assert h.is_read_only() is True
>  assert h.can_meta_context(nbd.CONTEXT_BASE_ALLOCATION) is True
> 
> -# info on something not present fails, wipes out prior info
> -h.set_export_name("a")
> -must_fail(h.opt_info)
> +# changing export wipes out prior info
> +h.set_export_name("b")
>  must_fail(h.get_size)
>  must_fail(h.is_read_only)
>  must_fail(h.can_meta_context, nbd.CONTEXT_BASE_ALLOCATION)
> 
> +# info on something not present fails
> +h.set_export_name("a")
> +must_fail(h.opt_info)
> +
>  # info for a different export, with automatic meta_context disabled
>  h.set_export_name("b")
>  h.set_request_meta_context(False)
>  h.opt_info()
> +# idempotent name change is no-op
> +h.set_export_name("b")
>  assert h.get_size() == 1
>  assert h.is_read_only() is False
>  must_fail(h.can_meta_context, nbd.CONTEXT_BASE_ALLOCATION)

Seems OK to me.

Acked-by: Laszlo Ersek <ler...@redhat.com>


> diff --git a/ocaml/tests/test_230_opt_info.ml 
> b/ocaml/tests/test_230_opt_info.ml
> index ec735ff..0403d14 100644
> --- a/ocaml/tests/test_230_opt_info.ml
> +++ b/ocaml/tests/test_230_opt_info.ml
> @@ -62,17 +62,22 @@ let
>    let meta = NBD.can_meta_context nbd NBD.context_base_allocation in
>    assert meta;
> 
> -  (* info on something not present fails, wipes out prior info *)
> -  NBD.set_export_name nbd "a";
> -  fail_unary NBD.opt_info nbd;
> +  (* changing export wipes out prior info *)
> +  NBD.set_export_name nbd "b";
>    fail_unary NBD.get_size nbd;
>    fail_unary NBD.is_read_only nbd;
>    fail_binary NBD.can_meta_context nbd NBD.context_base_allocation;
> 
> +  (* info on something not present fails *)
> +  NBD.set_export_name nbd "a";
> +  fail_unary NBD.opt_info nbd;
> +
>    (* info for a different export, with automatic meta_context disabled *)
>    NBD.set_export_name nbd "b";
>    NBD.set_request_meta_context nbd false;
>    NBD.opt_info nbd;
> +  (* idempotent name change is no-op *)
> +  NBD.set_export_name nbd "b";
>    let size = NBD.get_size nbd in
>    assert (size = 1L);
>    let ro = NBD.is_read_only nbd in
> diff --git a/tests/opt-info.c b/tests/opt-info.c
> index 26de0ee..70028ff 100644
> --- a/tests/opt-info.c
> +++ b/tests/opt-info.c
> @@ -17,6 +17,7 @@
>   */
> 
>  /* Test behavior of nbd_opt_info. */
> +/* See also unit test 230 in the various language ports. */
> 
>  #include <config.h>
> 
> @@ -80,15 +81,11 @@ main (int argc, char *argv[])
>      exit (EXIT_FAILURE);
>    }
> 
> -  /* info on something not present fails, wipes out prior info */
> -  if (nbd_set_export_name (nbd, "a") == -1) {
> +  /* changing export wipes out prior info */
> +  if (nbd_set_export_name (nbd, "b") == -1) {
>      fprintf (stderr, "%s\n", nbd_get_error ());
>      exit (EXIT_FAILURE);
>    }
> -  if (nbd_opt_info (nbd) != -1) {
> -    fprintf (stderr, "expecting error for opt_info\n");
> -    exit (EXIT_FAILURE);
> -  }
>    if (nbd_get_size (nbd) != -1) {
>      fprintf (stderr, "expecting error for get_size\n");
>      exit (EXIT_FAILURE);
> @@ -102,6 +99,16 @@ main (int argc, char *argv[])
>      exit (EXIT_FAILURE);
>    }
> 
> +  /* info on something not present fails */
> +  if (nbd_set_export_name (nbd, "a") == -1) {
> +    fprintf (stderr, "%s\n", nbd_get_error ());
> +    exit (EXIT_FAILURE);
> +  }
> +  if (nbd_opt_info (nbd) != -1) {
> +    fprintf (stderr, "expecting error for opt_info\n");
> +    exit (EXIT_FAILURE);
> +  }
> +
>    /* info for a different export, with automatic meta_context disabled */
>    if (nbd_set_export_name (nbd, "b") == -1) {
>      fprintf (stderr, "%s\n", nbd_get_error ());
> @@ -115,6 +122,11 @@ main (int argc, char *argv[])
>      fprintf (stderr, "%s\n", nbd_get_error ());
>      exit (EXIT_FAILURE);
>    }
> +  /* idempotent name change is no-op */
> +  if (nbd_set_export_name (nbd, "b") == -1) {
> +    fprintf (stderr, "%s\n", nbd_get_error ());
> +    exit (EXIT_FAILURE);
> +  }
>    if ((r = nbd_get_size (nbd)) != 1) {
>      fprintf (stderr, "expecting size of 1, got %" PRId64 "\n", r);
>      exit (EXIT_FAILURE);
> diff --git a/golang/libnbd_230_opt_info_test.go 
> b/golang/libnbd_230_opt_info_test.go
> index bc4cadf..e16f661 100644
> --- a/golang/libnbd_230_opt_info_test.go
> +++ b/golang/libnbd_230_opt_info_test.go
> @@ -91,15 +91,11 @@ func Test230OptInfo(t *testing.T) {
>               t.Fatalf("unexpected meta context")
>       }
> 
> -     /* info on something not present fails, wipes out prior info */
> -     err = h.SetExportName("a")
> +     /* changing export wipes out prior info */
> +     err = h.SetExportName("b")
>       if err != nil {
>               t.Fatalf("set export name failed unexpectedly: %s", err)
>       }
> -     err = h.OptInfo()
> -     if err == nil {
> -             t.Fatalf("expected error")
> -     }
>       _, err = h.GetSize()
>       if err == nil {
>               t.Fatalf("expected error")
> @@ -113,6 +109,16 @@ func Test230OptInfo(t *testing.T) {
>               t.Fatalf("expected error")
>       }
> 
> +     /* info on something not present fails */
> +     err = h.SetExportName("a")
> +     if err != nil {
> +             t.Fatalf("set export name failed unexpectedly: %s", err)
> +     }
> +     err = h.OptInfo()
> +     if err == nil {
> +             t.Fatalf("expected error")
> +     }
> +
>       /* info for a different export, with automatic meta_context disabled */
>       err = h.SetExportName("b")
>       if err != nil {
> @@ -126,6 +132,11 @@ func Test230OptInfo(t *testing.T) {
>       if err != nil {
>               t.Fatalf("opt_info failed unexpectedly: %s", err)
>       }
> +     /* idempotent name change is no-op */
> +     err = h.SetExportName("b")
> +     if err != nil {
> +             t.Fatalf("set export name failed unexpectedly: %s", err)
> +     }
>       size, err = h.GetSize()
>       if err != nil {
>               t.Fatalf("size failed unexpectedly: %s", err)
> 

_______________________________________________
Libguestfs mailing list
Libguestfs@redhat.com
https://listman.redhat.com/mailman/listinfo/libguestfs

Reply via email to