diff options
author | Peter Maydell <peter.maydell@linaro.org> | 2018-03-23 17:41:56 +0000 |
---|---|---|
committer | Peter Maydell <peter.maydell@linaro.org> | 2018-03-23 17:41:56 +0000 |
commit | 66793daa03f38af64cbed3a54c1059d03d48aea7 (patch) | |
tree | cb47365920d9ed7ca8129e118b533822011bfc1b | |
parent | 4c2c1015905fa1d616750dfe024b4c0b35875950 (diff) | |
parent | 39615354fc07af34e04ab5efb5b6d478b0d24e32 (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.c | 5 | ||||
-rw-r--r-- | tests/Makefile.include | 6 | ||||
-rw-r--r-- | tests/qmp-test.c | 97 |
3 files changed, 5 insertions, 103 deletions
@@ -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); |