mirror of https://github.com/xemu-project/xemu.git
test: add some chardev mux event tests
Check the expected behaviour of qemu_chr_be_event() on a mux chardev. For some reason, sending the event on the base chardev broadcast to all frontends, while sending it on the mux chardev itself should trigger the event on the currently focused chardev frontend. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-Id: <20171103152824.21948-3-marcandre.lureau@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
d09c4a4787
commit
d45f80ba82
|
@ -5,6 +5,7 @@
|
|||
#include "qemu/config-file.h"
|
||||
#include "qemu/sockets.h"
|
||||
#include "chardev/char-fe.h"
|
||||
#include "chardev/char-mux.h"
|
||||
#include "sysemu/sysemu.h"
|
||||
#include "qapi/error.h"
|
||||
#include "qom/qom-qobject.h"
|
||||
|
@ -164,6 +165,7 @@ static void char_mux_test(void)
|
|||
FeHandler h1 = { 0, }, h2 = { 0, };
|
||||
CharBackend chr_be1, chr_be2;
|
||||
|
||||
muxes_realized = true; /* done after machine init */
|
||||
opts = qemu_opts_create(qemu_find_opts("chardev"), "mux-label",
|
||||
1, &error_abort);
|
||||
qemu_opt_set(opts, "backend", "ringbuf", &error_abort);
|
||||
|
@ -201,8 +203,23 @@ static void char_mux_test(void)
|
|||
g_assert_cmpstr(h2.read_buf, ==, "hello");
|
||||
h2.read_count = 0;
|
||||
|
||||
g_assert_cmpint(h1.last_event, !=, 42); /* should be MUX_OUT or OPENED */
|
||||
g_assert_cmpint(h2.last_event, !=, 42); /* should be MUX_IN or OPENED */
|
||||
/* sending event on the base broadcast to all fe, historical reasons? */
|
||||
qemu_chr_be_event(base, 42);
|
||||
g_assert_cmpint(h1.last_event, ==, 42);
|
||||
g_assert_cmpint(h2.last_event, ==, 42);
|
||||
qemu_chr_be_event(chr, -1);
|
||||
g_assert_cmpint(h1.last_event, ==, 42);
|
||||
g_assert_cmpint(h2.last_event, ==, -1);
|
||||
|
||||
/* switch focus */
|
||||
qemu_chr_be_write(base, (void *)"\1c", 2);
|
||||
g_assert_cmpint(h1.last_event, ==, CHR_EVENT_MUX_IN);
|
||||
g_assert_cmpint(h2.last_event, ==, CHR_EVENT_MUX_OUT);
|
||||
qemu_chr_be_event(chr, -1);
|
||||
g_assert_cmpint(h1.last_event, ==, -1);
|
||||
g_assert_cmpint(h2.last_event, ==, CHR_EVENT_MUX_OUT);
|
||||
|
||||
qemu_chr_be_write(base, (void *)"hello", 6);
|
||||
g_assert_cmpint(h2.read_count, ==, 0);
|
||||
|
|
Loading…
Reference in New Issue