[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-ppc] [PATCH 05/12] spapr-vty: add qtest test case
From: |
Anthony Liguori |
Subject: |
[Qemu-ppc] [PATCH 05/12] spapr-vty: add qtest test case |
Date: |
Wed, 19 Jun 2013 15:40:28 -0500 |
Pretty basic for the moment but the interface is pretty simple.
Signed-off-by: Anthony Liguori <address@hidden>
---
tests/Makefile | 3 ++
tests/spapr-vty-test.c | 89 ++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 92 insertions(+)
create mode 100644 tests/spapr-vty-test.c
diff --git a/tests/Makefile b/tests/Makefile
index c107489..7c0ce1a 100644
--- a/tests/Makefile
+++ b/tests/Makefile
@@ -67,6 +67,8 @@ gcov-files-sparc64-y += hw/m48t59.c
check-qtest-arm-y = tests/tmp105-test$(EXESUF)
gcov-files-arm-y += hw/tmp105.c
+check-qtest-ppc64-y = tests/spapr-vty-test$(EXESUF)
+
GENERATED_HEADERS += tests/test-qapi-types.h tests/test-qapi-visit.h
tests/test-qmp-commands.h
test-obj-y = tests/check-qint.o tests/check-qstring.o tests/check-qdict.o \
@@ -133,6 +135,7 @@ tests/hd-geo-test$(EXESUF): tests/hd-geo-test.o
tests/tmp105-test$(EXESUF): tests/tmp105-test.o $(libqos-omap-obj-y)
tests/i440fx-test$(EXESUF): tests/i440fx-test.o $(libqos-pc-obj-y)
tests/fw_cfg-test$(EXESUF): tests/fw_cfg-test.o $(libqos-pc-obj-y)
+tests/spapr-vty-test$(EXESUF): tests/spapr-vty-test.o
# QTest rules
diff --git a/tests/spapr-vty-test.c b/tests/spapr-vty-test.c
new file mode 100644
index 0000000..8e3908b
--- /dev/null
+++ b/tests/spapr-vty-test.c
@@ -0,0 +1,89 @@
+/*
+ * QTest testcase for the sPAPR VTY
+ *
+ * Copyright IBM, Corp. 2013
+ *
+ * Authors:
+ * Anthony Liguori <address@hidden>
+ *
+ * This work is licensed under the terms of the GNU GPL, version 2 or later.
+ * See the COPYING file in the top-level directory.
+ *
+ */
+#include "libqtest.h"
+
+#include <glib.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#define H_GET_TERM_CHAR 0x54
+#define H_PUT_TERM_CHAR 0x58
+
+static char *qmp_ringbuf_read(const char *device, int max_len)
+{
+ size_t len;
+ char *ret;
+ char *ptr;
+
+ ret = qtest_qmp(global_qtest,
+ "{ 'execute': 'ringbuf-read', "
+ " 'arguments': { 'device': '%s', 'size': %d } }",
+ device, max_len);
+ len = strlen(ret);
+
+ /* Skip pass {"return" */
+ ptr = strchr(ret, '"');
+ g_assert(ptr != NULL);
+ ptr = strchr(ptr + 1, '"');
+ g_assert(ptr != NULL);
+
+ /* Start of data */
+ ptr = strchr(ptr + 1, '"');
+ g_assert(ptr != NULL);
+ ptr += 1;
+
+ len -= ptr - ret;
+ memmove(ret, ptr, len);
+ ret[len] = 0;
+
+ ptr = strrchr(ret, '"');
+ g_assert(ptr != NULL);
+ *ptr = 0;
+
+ return ret;
+}
+
+static void vty_ping(void)
+{
+ const char *greeting = "Hello, world!";
+ char *data;
+ int i;
+
+ for (i = 0; greeting[i]; i++) {
+ spapr_hcall3(H_PUT_TERM_CHAR, 0, 1, (uint64_t)greeting[i] << 56);
+ }
+
+ save_restore();
+
+ data = qmp_ringbuf_read("ring0", 16);
+ g_assert_cmpstr(data, ==, greeting);
+}
+
+int main(int argc, char **argv)
+{
+ int ret;
+
+ g_test_init(&argc, &argv, NULL);
+
+ qtest_start("-display none -serial chardev:ring0 "
+ "-machine pseries -chardev memory,id=ring0,save=on");
+
+ qtest_add_func("/vty/ping", vty_ping);
+ ret = g_test_run();
+
+ qtest_quit(global_qtest);
+
+ return ret;
+}
--
1.8.0
- Re: [Qemu-ppc] [PATCH 10/12] spapr-vty: refactor the code to improve consistency, (continued)
- [Qemu-ppc] [PATCH 02/12] qtest: add spapr hypercall support, Anthony Liguori, 2013/06/19
- Re: [Qemu-ppc] [Qemu-devel] [PATCH 02/12] qtest: add spapr hypercall support, Andreas Färber, 2013/06/20
- Re: [Qemu-ppc] [Qemu-devel] [PATCH 02/12] qtest: add spapr hypercall support, Anthony Liguori, 2013/06/20
- Re: [Qemu-ppc] [Qemu-devel] [PATCH 02/12] qtest: add spapr hypercall support, Alexander Graf, 2013/06/20
- Re: [Qemu-ppc] [Qemu-devel] [PATCH 02/12] qtest: add spapr hypercall support, Anthony Liguori, 2013/06/20
- Re: [Qemu-ppc] [Qemu-devel] [PATCH 02/12] qtest: add spapr hypercall support, Scott Wood, 2013/06/20
- Re: [Qemu-ppc] [Qemu-devel] [PATCH 02/12] qtest: add spapr hypercall support, Alexander Graf, 2013/06/20