]>
Commit | Line | Data |
---|---|---|
abc53733 AF |
1 | /* |
2 | * QTest testcase for PV Panic | |
3 | * | |
4 | * Copyright (c) 2014 SUSE LINUX Products GmbH | |
5 | * | |
6 | * This work is licensed under the terms of the GNU GPL, version 2 or later. | |
7 | * See the COPYING file in the top-level directory. | |
8 | */ | |
9 | ||
681c28a3 | 10 | #include "qemu/osdep.h" |
abc53733 | 11 | #include "libqtest.h" |
452fcdbc | 12 | #include "qapi/qmp/qdict.h" |
abc53733 AF |
13 | |
14 | static void test_panic(void) | |
15 | { | |
16 | uint8_t val; | |
627b1a17 | 17 | QDict *response, *data; |
791a289b | 18 | QTestState *qts; |
abc53733 | 19 | |
791a289b TH |
20 | qts = qtest_init("-device pvpanic"); |
21 | ||
22 | val = qtest_inb(qts, 0x505); | |
abc53733 AF |
23 | g_assert_cmpuint(val, ==, 1); |
24 | ||
791a289b | 25 | qtest_outb(qts, 0x505, 0x1); |
627b1a17 | 26 | |
791a289b | 27 | response = qtest_qmp_receive(qts); |
627b1a17 AF |
28 | g_assert(qdict_haskey(response, "event")); |
29 | g_assert_cmpstr(qdict_get_str(response, "event"), ==, "GUEST_PANICKED"); | |
30 | g_assert(qdict_haskey(response, "data")); | |
31 | data = qdict_get_qdict(response, "data"); | |
32 | g_assert(qdict_haskey(data, "action")); | |
33 | g_assert_cmpstr(qdict_get_str(data, "action"), ==, "pause"); | |
cb3e7f08 | 34 | qobject_unref(response); |
791a289b TH |
35 | |
36 | qtest_quit(qts); | |
abc53733 AF |
37 | } |
38 | ||
39 | int main(int argc, char **argv) | |
40 | { | |
41 | int ret; | |
42 | ||
43 | g_test_init(&argc, &argv, NULL); | |
44 | qtest_add_func("/pvpanic/panic", test_panic); | |
45 | ||
abc53733 AF |
46 | ret = g_test_run(); |
47 | ||
abc53733 AF |
48 | return ret; |
49 | } |