[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 19/24] tests: add tests for async and non-async clie
From: |
Marc-André Lureau |
Subject: |
[Qemu-devel] [PATCH 19/24] tests: add tests for async and non-async clients |
Date: |
Mon, 10 Oct 2016 13:22:56 +0400 |
Add two tests to check async and non-async client behaviour:
- an async client can see out of order replies
- an non-async client has commands processed in order
Signed-off-by: Marc-André Lureau <address@hidden>
---
tests/qmp-test.c | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 59 insertions(+)
diff --git a/tests/qmp-test.c b/tests/qmp-test.c
index 480ff28..f2ecc08 100644
--- a/tests/qmp-test.c
+++ b/tests/qmp-test.c
@@ -58,6 +58,61 @@ static void test_qom_set_without_value(void)
QDECREF(ret);
}
+static void test_qom_no_async(void)
+{
+ QDict *ret;
+ int64_t id;
+
+ /* check that only one async command is being processed */
+ qmp_async("{'execute': 'qtest-timeout', 'id': 42, "
+ " 'arguments': { 'duration': 1 } }");
+ qmp_async("{'execute': 'qtest-timeout', 'id': 43, "
+ " 'arguments': { 'duration': 0 } }");
+
+ /* check that the second command didn't execute immediately */
+ ret = qtest_qmp_receive(global_qtest);
+ g_assert_nonnull(ret);
+ id = qdict_get_try_int(ret, "id", -1);
+ g_assert_cmpint(id, ==, 42);
+ QDECREF(ret);
+
+ /* check that the second command executes after */
+ ret = qtest_qmp_receive(global_qtest);
+ g_assert_nonnull(ret);
+ id = qdict_get_try_int(ret, "id", -1);
+ g_assert_cmpint(id, ==, 43);
+ QDECREF(ret);
+}
+
+static void test_qom_async(void)
+{
+ QDict *ret;
+ int64_t id;
+ QTestState *qtest;
+
+ qtest = qtest_init_qmp_caps("-machine none", "'async'");
+
+ /* check that async are concurrent */
+ qtest_async_qmp(qtest, "{'execute': 'qtest-timeout', 'id': 42, "
+ " 'arguments': { 'duration': 1 } }");
+ qtest_async_qmp(qtest, "{'execute': 'qtest-timeout', 'id': 43, "
+ " 'arguments': { 'duration': 0 } }");
+
+ ret = qtest_qmp_receive(qtest);
+ g_assert_nonnull(ret);
+ id = qdict_get_try_int(ret, "id", -1);
+ g_assert_cmpint(id, ==, 43);
+ QDECREF(ret);
+
+ ret = qtest_qmp_receive(qtest);
+ g_assert_nonnull(ret);
+ id = qdict_get_try_int(ret, "id", -1);
+ g_assert_cmpint(id, ==, 42);
+ QDECREF(ret);
+
+ qtest_quit(qtest);
+}
+
int main(int argc, char **argv)
{
int ret;
@@ -70,6 +125,10 @@ int main(int argc, char **argv)
test_object_add_without_props);
qtest_add_func("/qemu-qmp/qom-set-without-value",
test_qom_set_without_value);
+ qtest_add_func("/qemu-qmp/no-async",
+ test_qom_no_async);
+ qtest_add_func("/qemu-qmp/async",
+ test_qom_async);
ret = g_test_run();
--
2.10.0
- [Qemu-devel] [PATCH 08/24] qapi: ignore top-level 'id' field, (continued)
- [Qemu-devel] [PATCH 08/24] qapi: ignore top-level 'id' field, Marc-André Lureau, 2016/10/10
- [Qemu-devel] [PATCH 10/24] qmp: check that async command have an 'id', Marc-André Lureau, 2016/10/10
- [Qemu-devel] [PATCH 09/24] qmp: take 'id' from request, Marc-André Lureau, 2016/10/10
- [Qemu-devel] [PATCH 11/24] scripts: learn 'async' qapi commands, Marc-André Lureau, 2016/10/10
- [Qemu-devel] [PATCH 12/24] tests: add dispatch async tests, Marc-André Lureau, 2016/10/10
- [Qemu-devel] [PATCH 13/24] monitor: add 'async' capability, Marc-André Lureau, 2016/10/10
- [Qemu-devel] [PATCH 14/24] monitor: add !qmp pre-conditions, Marc-André Lureau, 2016/10/10
- [Qemu-devel] [PATCH 15/24] monitor: suspend when running async and client has no async, Marc-André Lureau, 2016/10/10
- [Qemu-devel] [PATCH 16/24] qmp: update qmp-spec about async capability, Marc-André Lureau, 2016/10/10
- [Qemu-devel] [PATCH 17/24] qtest: add qtest-timeout, Marc-André Lureau, 2016/10/10
- [Qemu-devel] [PATCH 19/24] tests: add tests for async and non-async clients,
Marc-André Lureau <=
- [Qemu-devel] [PATCH 18/24] qtest: add qtest_init_qmp_caps(), Marc-André Lureau, 2016/10/10
- [Qemu-devel] [PATCH 20/24] qapi: improve 'screendump' documentation, Marc-André Lureau, 2016/10/10
- [Qemu-devel] [PATCH 21/24] console: graphic_hw_update return true if async, Marc-André Lureau, 2016/10/10
- [Qemu-devel] [PATCH 22/24] console: add graphic_hw_update_done(), Marc-André Lureau, 2016/10/10
- [Qemu-devel] [PATCH 23/24] console: make screendump async, Marc-André Lureau, 2016/10/10
- [Qemu-devel] [PATCH 24/24] qmp: move json-message-parser to QmpClient, Marc-André Lureau, 2016/10/10