Message ID | 20180905062313.4059-7-peterx@redhat.com |
---|---|
State | New |
Headers | show |
Series | monitor: enable OOB by default | expand |
Hi On Wed, Sep 5, 2018 at 10:26 AM Peter Xu <peterx@redhat.com> wrote: > > We'll need to include "monitor/monitor.h" for the queue length macro, > then we don't need to hard code it. > > Suggested-by: Markus Armbruster <armbru@redhat.com> > Signed-off-by: Peter Xu <peterx@redhat.com> > --- As said in first patch, I think having the queue length somehow announced by the QMP server could eventually be useful. Nevertheless, the test is also good as is, so Reviewed-by: Marc-André Lureau <marcandre.lureau@redhat.com> > tests/qmp-test.c | 26 ++++++++++++++++++++++++++ > 1 file changed, 26 insertions(+) > > diff --git a/tests/qmp-test.c b/tests/qmp-test.c > index 91a90d1c9d..9e523a1806 100644 > --- a/tests/qmp-test.c > +++ b/tests/qmp-test.c > @@ -18,6 +18,7 @@ > #include "qapi/qmp/qlist.h" > #include "qapi/qobject-input-visitor.h" > #include "qapi/qmp/qstring.h" > +#include "monitor/monitor.h" > > const char common_args[] = "-nodefaults -machine none"; > > @@ -248,6 +249,8 @@ static void test_qmp_oob(void) > const QListEntry *entry; > QList *capabilities; > QString *qstr; > + gchar *id; > + int i; > > qts = qtest_init_without_qmp_handshake(common_args); > > @@ -302,6 +305,29 @@ static void test_qmp_oob(void) > unblock_blocked_cmd(); > recv_cmd_id(qts, "blocks-2"); > recv_cmd_id(qts, "err-2"); > + > + /* > + * Test queue full. When that happens, the out-of-band command > + * will only be able to be handled after the queue is shrinked, so > + * it'll be processed only after one existing in-band command > + * finishes. > + */ > + for (i = 1; i <= QMP_REQ_QUEUE_LEN_MAX; i++) { > + id = g_strdup_printf("queue-blocks-%d", i); > + send_cmd_that_blocks(qts, id); > + g_free(id); > + } > + send_oob_cmd_that_fails(qts, "oob-1"); > + unblock_blocked_cmd(); > + recv_cmd_id(qts, "queue-blocks-1"); > + recv_cmd_id(qts, "oob-1"); > + for (i = 2; i <= QMP_REQ_QUEUE_LEN_MAX; i++) { > + unblock_blocked_cmd(); > + id = g_strdup_printf("queue-blocks-%d", i); > + recv_cmd_id(qts, id); > + g_free(id); > + } > + > cleanup_blocking_cmd(); > > qtest_quit(qts); > -- > 2.17.1 > >
diff --git a/tests/qmp-test.c b/tests/qmp-test.c index 91a90d1c9d..9e523a1806 100644 --- a/tests/qmp-test.c +++ b/tests/qmp-test.c @@ -18,6 +18,7 @@ #include "qapi/qmp/qlist.h" #include "qapi/qobject-input-visitor.h" #include "qapi/qmp/qstring.h" +#include "monitor/monitor.h" const char common_args[] = "-nodefaults -machine none"; @@ -248,6 +249,8 @@ static void test_qmp_oob(void) const QListEntry *entry; QList *capabilities; QString *qstr; + gchar *id; + int i; qts = qtest_init_without_qmp_handshake(common_args); @@ -302,6 +305,29 @@ static void test_qmp_oob(void) unblock_blocked_cmd(); recv_cmd_id(qts, "blocks-2"); recv_cmd_id(qts, "err-2"); + + /* + * Test queue full. When that happens, the out-of-band command + * will only be able to be handled after the queue is shrinked, so + * it'll be processed only after one existing in-band command + * finishes. + */ + for (i = 1; i <= QMP_REQ_QUEUE_LEN_MAX; i++) { + id = g_strdup_printf("queue-blocks-%d", i); + send_cmd_that_blocks(qts, id); + g_free(id); + } + send_oob_cmd_that_fails(qts, "oob-1"); + unblock_blocked_cmd(); + recv_cmd_id(qts, "queue-blocks-1"); + recv_cmd_id(qts, "oob-1"); + for (i = 2; i <= QMP_REQ_QUEUE_LEN_MAX; i++) { + unblock_blocked_cmd(); + id = g_strdup_printf("queue-blocks-%d", i); + recv_cmd_id(qts, id); + g_free(id); + } + cleanup_blocking_cmd(); qtest_quit(qts);
We'll need to include "monitor/monitor.h" for the queue length macro, then we don't need to hard code it. Suggested-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Peter Xu <peterx@redhat.com> --- tests/qmp-test.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+)