Hi On Mon, Oct 14, 2024 at 7:26 PM Roman Penyaev <r.peni...@gmail.com> wrote: > > This patch tests: > > 1. feasibility of removing mux which does not have frontends attached > or frontends were prior detached. > 2. inability to remove mux which has frontends attached (mux is "busy") > > Signed-off-by: Roman Penyaev <r.peni...@gmail.com> > Cc: "Marc-André Lureau" <marcandre.lur...@redhat.com> > Cc: qemu-devel@nongnu.org > --- > tests/unit/test-char.c | 24 +++++++++++++++++++++++- > 1 file changed, 23 insertions(+), 1 deletion(-) > > diff --git a/tests/unit/test-char.c b/tests/unit/test-char.c > index f273ce522612..2837dbb863a8 100644 > --- a/tests/unit/test-char.c > +++ b/tests/unit/test-char.c > @@ -1,6 +1,7 @@ > #include "qemu/osdep.h" > #include <glib/gstdio.h> > > +#include "qapi/error.h" > #include "qemu/config-file.h" > #include "qemu/module.h" > #include "qemu/option.h" > @@ -184,6 +185,21 @@ static void char_mux_test(void) > char *data; > FeHandler h1 = { 0, false, 0, false, }, h2 = { 0, false, 0, false, }; > CharBackend chr_be1, chr_be2; > + Error *error = NULL; > + > + /* Create mux and chardev to be immediately removed */ > + opts = qemu_opts_create(qemu_find_opts("chardev"), "mux-label", > + 1, &error_abort); > + qemu_opt_set(opts, "backend", "ringbuf", &error_abort); > + qemu_opt_set(opts, "size", "128", &error_abort); > + qemu_opt_set(opts, "mux", "on", &error_abort); > + chr = qemu_chr_new_from_opts(opts, NULL, &error_abort); > + g_assert_nonnull(chr); > + qemu_opts_del(opts); > + > + /* Remove just created mux and chardev */ > + qmp_chardev_remove("mux-label", &error_abort); > + qmp_chardev_remove("mux-label-base", &error_abort); > > opts = qemu_opts_create(qemu_find_opts("chardev"), "mux-label", > 1, &error_abort); > @@ -334,7 +350,13 @@ static void char_mux_test(void) > g_free(data); > > qemu_chr_fe_deinit(&chr_be1, false); > - qemu_chr_fe_deinit(&chr_be2, true); > + > + error = NULL;
Unnecessary assignment, > + qmp_chardev_remove("mux-label", &error); > + g_assert_cmpstr(error_get_pretty(error), ==, "Chardev 'mux-label' is > busy"); However, error_free() is missing. I'll touch on commit thanks > + > + qemu_chr_fe_deinit(&chr_be2, false); > + qmp_chardev_remove("mux-label", &error_abort); > } > > > -- > 2.34.1 >