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) 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) -- 2.37.2 _______________________________________________ Libguestfs mailing list Libguestfs@redhat.com https://listman.redhat.com/mailman/listinfo/libguestfs