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 <[email protected]>
> 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
[email protected]
https://listman.redhat.com/mailman/listinfo/libguestfs