aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Maydell <peter.maydell@linaro.org>2018-03-23 17:41:56 +0000
committerPeter Maydell <peter.maydell@linaro.org>2018-03-23 17:41:56 +0000
commit66793daa03f38af64cbed3a54c1059d03d48aea7 (patch)
treecb47365920d9ed7ca8129e118b533822011bfc1b
parent4c2c1015905fa1d616750dfe024b4c0b35875950 (diff)
parent39615354fc07af34e04ab5efb5b6d478b0d24e32 (diff)
Merge remote-tracking branch 'remotes/ericb/tags/pull-qapi-2018-03-23' into staging
qapi patches for 2018-03-12, 2.12-rc1 - Peter Xu: 0/4 Turn OOB off for 2.12-rc1, revert OOB tests - Eric Blake: qapi: Force UTF8 encoding when parsing qapi files # gpg: Signature made Fri 23 Mar 2018 17:35:49 GMT # gpg: using RSA key A7A16B4A2527436A # gpg: Good signature from "Eric Blake <eblake@redhat.com>" # gpg: aka "Eric Blake (Free Software Programmer) <ebb9@byu.net>" # gpg: aka "[jpeg image of size 6874]" # Primary key fingerprint: 71C2 CC22 B1C4 6029 27D2 F3AA A7A1 6B4A 2527 436A * remotes/ericb/tags/pull-qapi-2018-03-23: qapi: Force UTF8 encoding when parsing qapi files Revert "monitor: enable IO thread for (qmp & !mux) typed" Revert "tests: qmp-test: verify command batching" Revert "tests: qmp-test: add oob test" Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
-rw-r--r--monitor.c5
-rw-r--r--tests/Makefile.include6
-rw-r--r--tests/qmp-test.c97
3 files changed, 5 insertions, 103 deletions
diff --git a/monitor.c b/monitor.c
index 6ccd2fc089..77f4c41cfa 100644
--- a/monitor.c
+++ b/monitor.c
@@ -36,7 +36,6 @@
#include "net/slirp.h"
#include "chardev/char-fe.h"
#include "chardev/char-io.h"
-#include "chardev/char-mux.h"
#include "ui/qemu-spice.h"
#include "sysemu/numa.h"
#include "monitor/monitor.h"
@@ -4537,10 +4536,8 @@ static void monitor_qmp_setup_handlers_bh(void *opaque)
void monitor_init(Chardev *chr, int flags)
{
Monitor *mon = g_malloc(sizeof(*mon));
- /* Enable IOThread for QMPs that are not using MUX chardev backends. */
- bool use_io_thr = (!CHARDEV_IS_MUX(chr)) && (flags & MONITOR_USE_CONTROL);
- monitor_data_init(mon, false, use_io_thr);
+ monitor_data_init(mon, false, false);
qemu_chr_fe_init(&mon->chr, chr, &error_abort);
mon->flags = flags;
diff --git a/tests/Makefile.include b/tests/Makefile.include
index 0b277036df..eb218a9539 100644
--- a/tests/Makefile.include
+++ b/tests/Makefile.include
@@ -669,13 +669,13 @@ tests/test-qapi-events.c tests/test-qapi-events.h \
tests/test-qapi-introspect.c tests/test-qapi-introspect.h: \
tests/test-qapi-gen-timestamp ;
tests/test-qapi-gen-timestamp: $(SRC_PATH)/tests/qapi-schema/qapi-schema-test.json $(qapi-py)
- $(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-gen.py \
+ $(call quiet-command,$(PYTHON_UTF8) $(SRC_PATH)/scripts/qapi-gen.py \
-o tests -p "test-" $<, \
"GEN","$(@:%-timestamp=%)")
@>$@
tests/qapi-schema/doc-good.test.texi: $(SRC_PATH)/tests/qapi-schema/doc-good.json $(qapi-py)
- $(call quiet-command,$(PYTHON) $(SRC_PATH)/scripts/qapi-gen.py \
+ $(call quiet-command,$(PYTHON_UTF8) $(SRC_PATH)/scripts/qapi-gen.py \
-o tests/qapi-schema -p "doc-good-" $<, \
"GEN","$@")
@mv tests/qapi-schema/doc-good-qapi-doc.texi $@
@@ -927,7 +927,7 @@ check-tests/qemu-iotests-quick.sh: tests/qemu-iotests-quick.sh qemu-img$(EXESUF)
.PHONY: $(patsubst %, check-%, $(check-qapi-schema-y))
$(patsubst %, check-%, $(check-qapi-schema-y)): check-%.json: $(SRC_PATH)/%.json
$(call quiet-command, PYTHONPATH=$(SRC_PATH)/scripts \
- $(PYTHON) $(SRC_PATH)/tests/qapi-schema/test-qapi.py \
+ $(PYTHON_UTF8) $(SRC_PATH)/tests/qapi-schema/test-qapi.py \
$^ >$*.test.out 2>$*.test.err; \
echo $$? >$*.test.exit, \
"TEST","$*.out")
diff --git a/tests/qmp-test.c b/tests/qmp-test.c
index 07c0b87e27..558e83540c 100644
--- a/tests/qmp-test.c
+++ b/tests/qmp-test.c
@@ -80,9 +80,6 @@ static void test_qmp_protocol(void)
QDict *resp, *q, *ret;
QList *capabilities;
QTestState *qts;
- const QListEntry *entry;
- QString *qstr;
- int i;
qts = qtest_init_without_qmp_handshake(common_args);
@@ -92,13 +89,7 @@ static void test_qmp_protocol(void)
g_assert(q);
test_version(qdict_get(q, "version"));
capabilities = qdict_get_qlist(q, "capabilities");
- g_assert(capabilities);
- entry = qlist_first(capabilities);
- g_assert(entry);
- qstr = qobject_to(QString, entry->value);
- g_assert(qstr);
- g_assert_cmpstr(qstring_get_str(qstr), ==, "oob");
- QDECREF(resp);
+ g_assert(capabilities && qlist_empty(capabilities));
/* Test valid command before handshake */
resp = qtest_qmp(qts, "{ 'execute': 'query-version' }");
@@ -140,94 +131,9 @@ static void test_qmp_protocol(void)
g_assert_cmpint(qdict_get_int(resp, "id"), ==, 2);
QDECREF(resp);
- /*
- * Test command batching. In current test OOB is not enabled, we
- * should be able to run as many commands in batch as we like.
- * Using 16 (>8, which is OOB queue length) to make sure OOB won't
- * break existing clients. Note: this test does not control the
- * scheduling of QEMU's QMP command processing threads so it may
- * not really trigger batching inside QEMU. This is just a
- * best-effort test.
- */
- for (i = 0; i < 16; i++) {
- qtest_async_qmp(qts, "{ 'execute': 'query-version' }");
- }
- /* Verify the replies to make sure no command is dropped. */
- for (i = 0; i < 16; i++) {
- resp = qtest_qmp_receive(qts);
- /* It should never be dropped. Each of them should be a reply. */
- g_assert(qdict_haskey(resp, "return"));
- g_assert(!qdict_haskey(resp, "event"));
- QDECREF(resp);
- }
-
qtest_quit(qts);
}
-/* Tests for Out-Of-Band support. */
-static void test_qmp_oob(void)
-{
- QDict *resp;
- int acks = 0;
- const char *cmd_id;
-
- global_qtest = qtest_init_without_qmp_handshake(common_args);
-
- /* Ignore the greeting message. */
- resp = qmp_receive();
- g_assert(qdict_get_qdict(resp, "QMP"));
- QDECREF(resp);
-
- /* Try a fake capability, it should fail. */
- resp = qmp("{ 'execute': 'qmp_capabilities', "
- " 'arguments': { 'enable': [ 'cap-does-not-exist' ] } }");
- g_assert(qdict_haskey(resp, "error"));
- QDECREF(resp);
-
- /* Now, enable OOB in current QMP session, it should succeed. */
- resp = qmp("{ 'execute': 'qmp_capabilities', "
- " 'arguments': { 'enable': [ 'oob' ] } }");
- g_assert(qdict_haskey(resp, "return"));
- QDECREF(resp);
-
- /*
- * Try any command that does not support OOB but with OOB flag. We
- * should get failure.
- */
- resp = qmp("{ 'execute': 'query-cpus',"
- " 'control': { 'run-oob': true } }");
- g_assert(qdict_haskey(resp, "error"));
- QDECREF(resp);
-
- /*
- * First send the "x-oob-test" command with lock=true and
- * oob=false, it should hang the dispatcher and main thread;
- * later, we send another lock=false with oob=true to continue
- * that thread processing. Finally we should receive replies from
- * both commands.
- */
- qmp_async("{ 'execute': 'x-oob-test',"
- " 'arguments': { 'lock': true }, "
- " 'id': 'lock-cmd'}");
- qmp_async("{ 'execute': 'x-oob-test', "
- " 'arguments': { 'lock': false }, "
- " 'control': { 'run-oob': true }, "
- " 'id': 'unlock-cmd' }");
-
- /* Ignore all events. Wait for 2 acks */
- while (acks < 2) {
- resp = qmp_receive();
- cmd_id = qdict_get_str(resp, "id");
- if (!g_strcmp0(cmd_id, "lock-cmd") ||
- !g_strcmp0(cmd_id, "unlock-cmd")) {
- acks++;
- }
- QDECREF(resp);
- }
-
- qtest_end();
-}
-
static int query_error_class(const char *cmd)
{
static struct {
@@ -412,7 +318,6 @@ int main(int argc, char *argv[])
g_test_init(&argc, &argv, NULL);
qtest_add_func("qmp/protocol", test_qmp_protocol);
- qtest_add_func("qmp/oob", test_qmp_oob);
qmp_schema_init(&schema);
add_query_tests(&schema);